(通过观看慕课网Hadoop进阶总结出来的笔记:http://www.imooc.com/learn/890)
一. 余弦相似度
其他的相似度种类
1.切比雪夫距离 2.欧式距离 3.皮尔森系数 4.曼哈顿距离 5.杰卡德距离
二. 基于物品的协同过滤算法ItemCF
算法思想:给用户推荐那些和他们之前喜欢的物品相似的物品
1.用户行为与权重
例子:
用户:A,B,C
商品:1,2,3,4,5,6
行为:点击1分,搜索3分,收藏5分,付款10分
构建用户行为列表:
用户 物品 行为
A 1 点击
C 3 收藏
B 2 搜索
B 5 搜索
B 6 收藏
A 2 付款
C 3 付款
C 4 收藏
C 1 收藏
A 1 点击
A 6 收藏
A 4 搜索
每一行表示,某个用户对某个商品产生过一次行为。
2.算法实现步骤
step1:根据用户行为列表计算用户,物品的评分矩阵
step2:计算物品与物品的相似度矩阵
比如:
构造成两个向量:(2,0,5)与(10,3,0)
所以物品1与物品2的相似度为0.36,其他同理,最终得出物品与物品的相似度矩阵
step3:相似度矩阵*评分矩阵=推荐列表
(注意:因为矩阵的相乘区分左右,所以相似度矩阵与评分矩阵的顺序不能变)
最终将推荐矩阵与评分矩阵相比较,将用户看过的电影置为0。
最终选取值最大的推荐给用户
A-5 B-4 C-2
三. 基于用户的协同过滤算法UserCF
算法思想:给用户推荐和他兴趣相似的其他用户喜欢的物品
例子:数据样本与基于物品的一样
算法实现步骤
step1:根据用户行为列表计算用户,物品的评分矩阵
基于物品的CF与基于用户的CF的区别是:
基于物品的CF的行号是物品,列号是用户
基于用户的CF的行号是用户,列号是物品
step2:计算用户与用户的相似度矩阵
step3:相似度矩阵*评分矩阵=推荐列表
将用户产生过行为的物品的分值置0,得出最终的推荐列表
四. 基于内容的协同过滤算
算法思想:给用户推荐和他之前喜欢的物品在内容上相似的其他物品。
对物品进行特征建模Item Profile
1表示电影具有某特征,0表示电影不具有某特征
算法实现步骤
step1:构建Item Profile矩阵
step2:构建Item User评分矩阵
step3:Item User*Item Profile=User Profile
最后得出的矩阵表示用户对某种标签的感兴趣程度。
可以看出U1用户对特征(4)和(7)最感兴趣,其权重均为6。
step4:对Item Profile和User Profile求余弦相似度