基于协同的推荐
今天看一个CF,
• 优点
– 充分利用群体智慧
– 推荐精度高于CB
– 利于挖掘隐含的相关性
• 缺点
– 推荐结果解释性较差
– 对时效性强的Item不适用
– 冷启动问题
有两种协同算法:
• User-Based CF
• Item-Based CF
什么是 User-Based CF :
假设:一个用户点外卖点了披萨和意大利面,另外有一个用户也点了披萨和意大利面,其中一个用户多点了一个可乐,这时候就将可乐同事推荐给这个用户。也就是用户喜欢那些跟他有共同喜好的用户喜欢的东西。
• User-Based CF
喜羊羊 | 光头强 | 铁甲小宝 | 火影忍者 | 海贼王 | |
A | 5 | 1 | ? | 2 | 2 |
B | 1 | 5 | 2 | 5 | 5 |
C | 2 | ? | 3 | 5 | 4 |
D | 4 | 3 | 5 | 3 | ? |
用户分别对五部影片进行打分,分值为1-5,?表示没看过,通过UI*IU=UU得到下表
A | B | C | D | |
A | 0.59 | 0.73 | 0.91 | |
B | 0.59 | 0.97 | 0.77 | |
C | 0.73 | 0.97 | 0.87 | |
D | 0.91 | 0.77 | 0.87 |
怎样从上面的矩阵变成下面的矩阵
比如给用户C推荐 光头强 r(C,光头强)=0.97*5+0.87*3/(0.97+0.87)=4.05
Item-Based CF
--用户喜欢跟他过去喜欢的物品相似的物品,比如,用户过去曾经买过一台电脑,会给他推荐电脑包
Item-Based CF
喜羊羊 | 光头强 | 铁甲小宝 | 火影忍者 | 海贼王 | |
A | 5 | 1 | ? | 2 | 2 |
B | 1 | 5 | 2 | 5 | 5 |
C | 2 | ? | 3 | 5 | 4 |
D | 4 | 3 | 5 | 3 | ? |
喜羊羊 | 光头强 | 铁甲小宝 | 火影忍者 | 海贼王 | |
喜羊羊 | 0.57 | 0.99 | 0.69 | 0.63 | |
光头强 | 0.57 | 0.80 | 0.99 | 0.98 | |
铁甲小宝 | 0.99 | 0.80 | 0.84 | 0.95 | |
火影忍者 | 0.69 | 0.99 | 0.84 | 0.99 | |
海贼王 | 0.63 | 0.98 | 0.95 | 0.99 |
此时想给c推荐光头强的概率为r(c,光头强)=0.57*2+0.99*5+0.80*3+0.98*4/(0.57+0.99+0.80+0.98)=3.72
比较:
User-Based | Item-Based | |
性能 | 适合用户较少,否则计算代价太大 | 适合物品数小于用户数,物品太多,计算物品相似度矩阵代价太大 |
领域 | 时效性强,用户个性化兴趣不太明显的领域 | 物品丰富,用户个性化兴趣明显的领域 |
实时性 | 用户有新行为,不一定造成推荐物品变化 | 用户有新行为,推荐物品一定变化 |
冷启动 | 在新用户对很少的物品产生行为后,不 能立即对他进行个性化推荐,因为用户 相似度表是每个一段时间离线计算的 新物品上线后一段时间,一旦有用户对 物品产生行为,就可以将新物品推荐给 和对它产生行为的用户兴趣相似的其他 用户 |
新用户只要对一个物品产生行为,就可以 给他推荐和该物品相关的其他物品 但没有办法在不离线更新物品相似度表的 情况下将新物品推荐给用户 |
推荐理由 | 很难提供令用户信服的推荐解释 | 利用用户的历史行为给用户做出推荐解释,可以令用户比较信服 |