文章目录
协同过滤——Collaborative filtering
协同过滤算法简介
- 数据 :<user,item>一些用户和物品的行为对
- 推荐维度一:(User-Based CF)类似于朋友推荐,通过对用户喜欢的item进行分析, 发现用户A和用户B很像(他们都喜欢差不多的东西),
用户B喜欢了某个item, 而用户A没有喜欢, 那么就把这个item推荐给用户A。(我把我喜欢的东西分享给和我有共同兴趣的朋友)
- 推荐维度二:(Item-Based CF)客服通过分析我喜欢过的item,有一个新的产品和我喜欢的很想,就把新产品推荐给了我。
- 优点:
- 缺点:需要大量的<user,item>行为数据,即需要大量冷启动数据;
不同于CB算法(内容关联算法 Content-Based)推荐的内容具有可解释性。
CB算法
原理
基于领域的协同过滤算法
思想:利用<user, item>打分矩阵,计算用户和用户、item和item之间的相似度,然后利用相似度排序,得到最终推荐结果。
1、User-Based CF
2、Item-Based CF
存在的问题
- 矩阵稀疏
- 计算资源有限导致的扩展性问题
基于模型的协同过滤算法
- 基于矩阵分解和潜在语义的
- 基于贝叶斯网络
- 基于SVM
基于矩阵分解的SVD
将这个例子类比到推荐系统中的评分,分解后的item、user都为3维向量,这样就可以计算用户与用户、用户与item、item与item之间的相似性。
矩阵分解,大数据量很大的时候,一般会利用梯度递归下降方法求近似解(??)
组合推荐技术
混合推荐技术: 同时使用多种推荐技术再加权取最优;
切换推荐技术: 根据用户场景使用不同的推荐技术;
特征组合推荐技术: 将一种推荐技术的输出作为特征放到另一个推荐技术当中;
层叠推荐技术: 一个推荐模块过程中从另一个推荐模块中获取结果用于自己产出结果;
选择模型Item-CF\User-CF
user和item数量分布以及变化频率
如果user数量远远大于item数量, 采用Item-CF效果会更好, 因为同一个item对应的打分会比较多, 而且计算量会相对较少
如果item数量远远大于user数量, 则采用User-CF效果会更好, 原因同上
在实际生产环境中, 有可能因为用户无登陆, 而cookie信息又极不稳定, 导致只能使用item-cf
如果用户行为变化频率很慢(比如小说), 用User-CF结果会比较稳定
如果用户行为变化频率很快(比如新闻, 音乐, 电影等), 用Item-CF结果会比较稳定
相关和惊喜的权衡
item-based出的更偏相关结果, 出的可能都是看起来比较类似的结果user-based出的更有可能有惊喜, 因为看的是人与人的相似性, 推出来的结果可能更有惊喜数据更新频率和时效性要求
对于item更新时效性较高的产品, 比如新闻, 就无法直接采用item-based的CF, 因为CF是需要批量计算的, 在计算结果出来之前新的item是无法被推荐出来的, 导致数据时效性偏低;但是可以采用user-cf, 再记录一个在线的用户item行为对, 就可以根据用户最近类似的用户的行为进行时效性item推荐;对于像影视, 音乐之类的还是可以采用item-cf的;