推荐算法分类(原文链接https://blog.csdn.net/fyq201749/article/details/81026950)
a. 基于流行度的算法
基于流行度的算法非常简单粗暴,类似于各大新闻、微博热榜等,根据PV、UV、日均PV或分享率等数据来按某种热度排序来推荐给用户。
这种算法的优点是简单,适用于刚注册的新用户。缺点也很明显,它无法针对用户提供个性化的推荐。基于这种算法也可做一些优化,比如加入用户分群的流行度排序,例如把热榜上的体育内容优先推荐给体育迷,把政要热文推给热爱谈论政治的用户。
b. 协同过滤算法
协同过滤算法(Collaborative Filtering, CF) 包括基于用户的CF(User-based CF)和基于物品的CF(Item-based CF)。
基于用户的CF原理如下:
-
分析各个用户对item的评价(通过浏览记录、购买记录等);
-
依据用户对item的评价计算得出所有用户之间的相似度;
-
选出与当前用户最相似的N个用户;
-
将这N个用户评价最高并且当前用户又没有浏览过的item推荐给当前用户
基于物品的CF:根据物品的相识度为目标用户推荐可能喜欢的
缺点:
-
依赖于准确的用户评分;
-
在计算的过程中,那些大热的物品会有更大的几率被推荐给用户;
-
冷启动问题。当有一名新用户或者新物品进入系统时,推荐将无从依据;
-
在一些item生存周期短(如新闻、广告)的系统中,由于更新速度快,大量item不会有用户评分,造成评分矩阵稀疏,不利于这些内容的推荐。
c.基于内容的算法
之后再计算向量距离,便可以得出该用户和新闻的相似度了。
该如何体现出关键词的这种“重要性”呢——算出新闻中每一个关键词的权重,在计算相似度时引入这个权重的影响
要是用户的兴趣是足球,而新闻的关键词是德甲、英超,按照上面的文本匹配方法显然无法将他们关联到一起。在此,我们可以引用话题聚类:
利用word2vec一类工具,可以将文本的关键词聚类,然后根据topic将文本向量化。如可以将德甲、英超、西甲聚类到“足球”的topic下,将lv、Gucci聚类到“奢侈品”topic下,再根据topic为文本内容与用户作相似度计算。
总结:很好地解决冷启动问题,并且也不会囿于热度的限制,因为它是直接基于内容匹配的,而与浏览记录无关。然而它也会存在一些弊端,比如过度专业化(over-specialisation)的问题。这种方法会一直推荐给用户内容密切关联的item,而失去了推荐内容的多样性。
内容推荐算法的优点在于可以避免Item的冷启动问题(冷启动:如果一个Item从没有被关注过,其他推荐算法则很少会去推荐,但是基于内容的推荐算法可以分析Item之间的关系,实现推荐),但弊端在于推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于某某明星出轨的新闻,很可能推荐的新闻和你浏览过的,内容一致;协同过滤算法可以随着用户对商品的交互记录增加更准确的捕捉用户行为习惯,进而使得模型能够不花费额外的人工的方式来提高精度(但在初期会面临冷启动问题的困扰)。