推荐系统文档(持续更新)
推荐算法架构
-
召回阶段(海选)
召回决定了最终推荐结果的天花板
常用算法:- 协用过滤(基于用户基于物品的)
- 基于内容(根据用户行为总结出自己的偏好,根据偏好通过文本挖掘技术,找到内容上相似的商品)
- 基于隐语义
-
排序阶段
召回决定了最终推荐结果的天花板,排序逼近这个极限,决定了最终的推荐效果 -
策略调整
推荐模型构建流程
Data(数据)—>Features(特征)—>ML Algorithm(机器学习算法)—>Prediction Output(预测输出)
- 数据
- 显性数据
Rating 打分
Comments 评论/评价 - 隐形数据
Order history历史订单
Cart events加购物车
Page views页面浏览
Click-thru 点击
Search log搜索记录
- 数据量/数据能否满足要求
- 特征工程
- 从数据中筛选特征,一个给定的商品,可能被拥有类似品味或需求的用户购买,使用用户行为数据描述商品
- 用数据表示特征,将所有用户行为合并在一起,形成一个user-item矩阵
协同过滤推荐算法(Collaborative Filtering)
算法思想:物以类聚,人以群分
基本的协同过滤推荐算法基于以下假设
- “跟你喜好相似的人喜欢的东西你也很有可能喜欢”:基于用户的协同过滤推荐(User-based CF) CF就是collaborative filtering
- “跟你喜欢的东西相似的东西你也很有可能喜欢”:基于物品的协同过滤推荐(Item-based CF)
实现协同过滤推荐有以下几个步骤:
- 找出最相似的人或物品: TOP-N相似的人或物品
通过计算两两的相似度来进行排序,即可找出TOP-N相似的人或物品 - 根据相似的人或物品产生推荐结果
利用TOP-N结果生成初始推荐结果,然后过滤掉用户已经有过记录的物品或明确表示不感兴趣的物品
以下是一个简单的示例,数据集相当于一个用户对物品的购买记录表:打勾表示用户对物品的有购买记录
关于相似度计算这里先用一个简单的思想:如有两个同学X和Y, X同学爱好[足球、篮球、乒乓球],Y同学爱好[网球、足球、篮球、羽毛球],可见他们的共同爱好有2个,那么他们的相似度可以用: 2/3* 2/4= 1/3=0.33来表示。
杰卡德相似度&余弦相似度&皮尔逊相关系数
余弦相似度
- 度量的是两个向量之间的夹角,用夹角的余弦值来度量相似的情况
- 两个向量的夹角为0是,余弦值为1,当夹角为90度是余弦值为0,为180度是余弦值为-1
余弦相似度在度量文本相似度,用户相似度物品相似度的时候较为常用 - 余弦相似度的特点,与向量长度无关余弦相似度计算要对向量长度归一化,两个向量只要方向一致,无论程度强弱,都可以视为‘相似”
- 余弦相似度对绝对值大小不敏感带来的问题,用户A对两部电影评分分别是1分和2分,用户B对同样这两部电影进行评分是4分,5分用余弦相似度计算,两个用户的相似度达到0.98
皮尔逊相关系数Pearson
- 实际上也是一种余弦相似度,不过先对向量做了**中心化,**向量a b各自减去向量的均值后,再计算余弦相似度
- 皮尔逊相似度计算结果在-1,1之间-1表示负相关, 1表示正相关
- 度量两个变量是不是同增同减
- 皮尔逊相关系数度量的是两个变量的变化趋势是否一致, 不适合计算布尔值向量之间的相关度
杰卡德相似度Jaccard