仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法。学术界对协同过滤算法
进行了深入研究,提出了很多方法,比如基于邻域的方法( neighborhood-based )、隐语义模型
( latent factor model )、基于图的随机游走算法( random walk on graph )等。在这些方法中,
最著名的、在业界得到最广泛应用的算法是基于邻域的方法,而基于邻域的方法主要包含下
面两种算法。
基于用户的协同过滤算法 这种算法给用户推荐和他兴趣相似的其他用户喜欢的物品。
基于物品的协同过滤算法 这种算法给用户推荐和他之前喜欢的物品相似的物品。
基于物品的协同过滤算法主要分为两步。
(1) 计算物品之间的相似度。
(2) 根据物品的相似度和用户的历史行为给用户生成推荐列表。
我们可以用下面的公式定
义物品的相似度:
w(i,j) = |N(i) ∩ N(j)| / |N(i)|
这里,分母 |N(i)| 是喜欢物品 i 的用户数,而分子是同时喜欢物品 i 和物品 j 的用户数。因此,上述公式可以理解为喜欢物品 i 的用户中有多少比例的用户也喜欢物品 j 。上述公式虽然看起来很有道理,但是却存在一个问题。如果物品 j 很热门,很多人都喜欢,
那么 W ij 就会很大,接近 1 。因此,该公式会造成任何物品都会和热门的物品有很大的相似度,这对于致力于挖掘长尾信息的推荐系统来说显然不是一个好的特性。为了避免推荐出热门的物品,可以用下面的公式:
w(i,j) = |N(i) ∩ N(j)| / sqrt(|N(i)||N(j)|)
冷启动问题:https://www.jianshu.com/p/193fea0a7004
使用spark实现ALS算法从而实现推荐系统 :
https://blog.csdn.net/weixin_44481878/article/details/88356302(原理)
https://www.cnblogs.com/mstk/p/7208674.html