传统推荐算法中,主要包含:协同过滤算法 (CF)、基于内容的推荐、混合推荐。
此外,还有常用的隐因子模型,因子分解机 (FM)。
那么它们都有什么区别呢?
协同过滤算法
(物以类聚,人以群分)
算法
协同过滤算法包含两类:基于用户的协同过滤算法、基于物品的协同过滤算法。
(1)基于用户的协同过滤算法,
找到与该用户相似的其他用户,并把其他用户交互的物品推荐给该用户。
(2)基于物品的协同过滤算法,
找到与该用户交互物品相似的其他物品,并推荐给该用户。
可以发现,协同过滤算法的中心思想是计算相似度,在一张庞大的用户-物品交互矩阵(评分矩阵)中,矩阵中的值是用户对物品的打分(rating)。当以用户为主,各个用户向量的长度为物品的个数,值为各个物品的rating,计算各个用户的相似度;当以物品为主,各个物品向量的长度为用户的个数,值为交互过该物品的用户对其的rating,计算各个物品的相似度。
缺点
- 针对用户冷启动、物品冷启动,由于没有历史交互记录,无法通过协同过滤算法进行推荐。
- 当用户/物品增多的时候,同时需要维护一张巨大的用户/物品相似度列表,算法的计算成本也在增加。
计算相似度的方法有很多,比如可以使用余弦相似度找到相似用户/物品。在实现上可以使用sklearn或faiss等工具包进行相似度的计算。
基于内容的推荐
基于内容的推荐,顾名思义是根据物品的内容进行推荐,适用于文本领域,比如新闻推荐等。
但实际上,针对非文本领域的推荐,也可以使用基于内容的推荐,但是核心在于构建用户/物品的画像,根据该画像来找相似用户/物品,即根据用户/物品本身包含的特征,找到相似的用户/物品,来进行推荐。(可以发现基于内容的推荐,同样需要计算相似度,只不过计算相似度的内容变成了用户/物品的特征,而不是交互的评分)
混合推荐
是多角度、多因素的综合考量下的算法。
隐因子模型
(LFM,Latent Factor Model)
上述协同过滤已经知道可以根据用户-物品交互的评分矩阵计算相似度进行推荐,评分矩阵中存在用户-物品之间没有交互记录的空值,如何将这些空值进行补充,即预测用户对该物品的打分,可以使用LFM模型,LFM模型认为用户对某物品的交互出于多个隐性因子的考量,通过将评分矩阵(用户×物品)分解为用户隐因子矩阵(用户×隐因子)和物品隐因子矩阵(隐因子×物品)的形式。
因子分解机 (FM)
FM(Factorization Machine)主要目标是:解决数据稀疏的情况下,特征怎样组合的问题。
- 二阶组合特征
- FM有一个衍生算法FFM(Field-aware FM),大概思路是将特征进行分组,学习出更多的隐式向量V,FM可以看做FFM只有一个分组的特例。FFM复杂度比较高,比较适合高度稀疏数据;而FM可以应用于非稀疏数据,更加通用。
参考:
- 协同过滤之冷启动:https://www.jianshu.com/p/03bf81f9f6d9
- 推荐系统(4)-基于内容的推荐系统:https://zhuanlan.zhihu.com/p/98295397
- 推荐系统-隐因子模型(LFM):https://blog.csdn.net/sinat_22594309/article/details/86576757
- 前深度学习时代–从协同过滤CF到因子分解机模型FM(附FM模型python实现)。:https://zhuanlan.zhihu.com/p/160244758