基于协同过滤的推荐引擎
(一)推荐引擎用例
- 京东、淘宝根据客户的购买历史来推荐;
- 爱奇艺、乐视根据向用户推荐电影;
(二)推荐算法
- 基于关系规则推荐:用户A经常同时购买了哪些商品,分析这些商品的关联规则,则用户B购买其中某一商品,可推荐其它商品;
- 基于内容推荐:用户喜欢A电影,B电影和A属于同一类型,比如爱情片,则该用户还可能喜欢B电影;
- 基于人口统计学推荐:将用户A的属性或特征一一罗列,如年龄、性别、职业等,如果用户B和A具有相似的属性,则用户B和用户A可能有相似购物喜好。
- 基于协同过滤推荐:
- 基于用户:将一个用户对同所有item或content的偏好作为一个向量,计算用户之间的相似度;比如用户A购买了商品1和商品2,用户B也购买了商品1和商品2,则用户A购买了商品3时,可推荐用户B商品3。
- 基于物品:将所有用户对某一item或content的偏好作为一个向量,计算item或content的相似度;比如用户A、用户B、用户C都购买了商品1,同时这些用户也都购买了商品2, 则用户D购买商品1时可推荐其购买商品2。
(三)协同过滤推荐
- 计算相似度
- 欧氏距离:将向量组成矩阵,纵向计算两列值的欧氏距离:,相似度=1/(1+d)。
-
皮尔逊相似度(pearson correlation):度量两个向量之间的相似度,对量级不敏感,比如用户A对某电影差评为1,用户B对该电影好评为5,但皮尔逊系统会认为这两个向量是相等的。皮尔逊系数值一般为-1 至 1, 通过0.5 + 0.5 * 皮尔逊系数值归化为0到1之间。
- 余弦相似度(cosine similarity):计算两个向量夹角之间的余弦值,余弦值为0,相似度为1。余弦值在-1和1之间,可归化为0到1之间;计算公式:,如向量a,b坐标a(x1,y1), b(x2,y2), 则:,推广向量A=(x1,x2,x3...xn), B=(y1,y2,y3...yn),则:
-
基于物品还是用户相似度?
-
假设用户对物品的偏好向量组成一个矩阵,纵向为物品,横向为用户;
- 用户和物品的数量级决定性能,所有用户数量远大于物品数量时,一般使用基于物品相似度的计算方法。
-
-