转自 58 沈剑
工程架构方向的程序员, 看到推荐 / 搜索 / 广告等和算法相关的技术, 心中或多或少有一丝胆怯但认真研究之后, 发现其实没有这么难
今天的 1 分钟系列, 给大家介绍下推荐系统中的协同过滤, 绝无任何公式, 保证大伙弄懂
什么是协同过滤(Collaborative Filtering)?
答: 通过找到兴趣相投, 或者有共同经验的群体, 来向用户推荐感兴趣的信息
举例, 如何协同过滤, 来对用户 A 进行电影推荐?
答: 简要步骤如下
找到用户 A(user_id_1)的兴趣爱好
找到与用户 A(user_id_1)具有相同电影兴趣爱好的用户群体集合 Set
找到该群体喜欢的电影集合 Set
将这些电影 Set 推荐给用户 A(user_id_1)
具体实施步骤如何?
答: 简要步骤如下
(1)画一个大表格, 横坐标是所有的 movie_id, 纵坐标所有的 user_id, 交叉处代表这个用户喜爱这部电影
如上表:
横坐标, 假设有 10w 部电影, 所以横坐标有 10w 个 movie_id, 数据来源自数据库
纵坐标, 假设有 100w 个用户, 所以纵坐标有 100w 个 user_id, 数据也来自数据库
交叉处, 1 代表用户喜爱这部电影, 数据来自日志
画外音: 什么是喜欢, 需要人为定义, 例如浏览过, 查找过, 点赞过, 反正日志里有这些数据
(2)找到用户 A(user_id_1)的兴趣爱好
如上表, 可以看到, 用户 A 喜欢电影{m1, m2, m3}
(3)找到与用户 A(user_id_1)具有相同电影兴趣爱好的用户群体集合 Set
如上表, 可以看到, 喜欢 {m1, m2, m3} 的用户, 除了 u1, 还有{u2, u3}
(4)找到该群体喜欢的电影集合 Set
如上表, 具备相同喜好的用户群里{u2, u3}, 还喜好的电影集合是{m4, m5}
画外音: 协同就体现在这里
(5)未来用户 A(use_id_1)来访问网站时, 要推荐电影 {m4, m5} 给 ta
协同过滤大致原理如上, 希望大家有收获
来源: http://www.jianshu.com/p/2ba2f8a7c381