ItemCF
- 核心假设:如果用户历史上喜欢了某个物品,则在未来大概率会喜欢与该物品相似的物品。
- 计算相似度:通过分析用户的行为记录(如购买、点击等),计算物品之间的相似度
相似分计算
1. 余弦相似度
缓解“哈利波特问题”:热门物品(如《哈利波特》系列)通常会被很多用户点击,如果没有分母的抑制作用,它们可能会在推荐中频繁出现,导致推荐结果过于集中于热门物品。通过分母的归一化,可以降低热门物品的相似度得分,从而提高推荐的多样性和个性化。
sim(i,j)=Ni×Nj∑u∈i∩j1=点击i的用户数×点击j的用户数重合用户数
- 分子部分:∑u∈i∩j1 表示同时对物品 i 和 j 产生过交互(如点击、购买等)的用户数量,即“重合用户数”。
- 分母部分:NiNj,其中 Ni 是点击物品 i 的用户数,Nj 是点击物品 j 的用户数。分母的这种形式可以有效抑制热门物品的过度影响。
2. Inverse User Frequency
IUF是一种用于修正物品相似度计算的参数,其基本思想是:活跃用户对物品相似度的贡献应该小于不活跃的用户。IUF的引入可以有效减少活跃用户对物品相似度的过度影响,从而提高推荐系统的性能。
IUF在推荐系统中的作用主要体现在以下几个方面:
- 减少热门商品的影响:通过引入IUF,可以降低热门商品在相似度计算中的权重,从而提高推荐的多样性和个性化效果。
- 提高推荐的准确性:IUF可以更准确地评估物品之间的相似性,从而提高推荐的准确性。
IUF的计算公式如下:
IUF(i,j)=u∈Uij∑log(1+∣Iu∣)1
其中,Uij表示同时交互过物品i和j的用户集合,Iu表示用户u交互过的物品集合。
sim(i,j)=Ni×Nj∑u∈i∩jIUF(i,j)
3. SwingI2I
Swing i2i算法的直觉来源是,如果大量用户同时喜欢两个物品,且这些用户之间的相关性低,那么这两个物品一定是强关联。
sim(i,j)=u∈Ui∩Uj∑v∈Ui∩Uj∑α+∣Iu∩Iv∣1
- sim(i,j):表示物品 i 和物品 j 之间的相似度。
- Ui:表示对物品 i 产生过交互的用户集合。
- Uj:表示对物品 j 产生过交互的用户集合。
- Ui∩Uj:表示同时对物品 i 和物品 j 产生过交互的用户集合。
- Iu:表示用户 u 产生过交互的物品集合。
- Iv:表示用户 v 产生过交互的物品集合。
- ∣Iu∩Iv∣:表示用户 u 和用户 v 同时产生过交互的物品数量。
- α:是一个超参数,用于控制分母的大小,避免分母为零的情况。
推荐分数计算:
score(u,i)=j∈S∑sim(i,j)⋅Ru,i
其中:
- score(u,s) 表示用户 u 对物品 s 的推荐分数。
- S 是用户 u 历史交互过的物品集合。
- sim(si,s) 是物品 si 和物品 s 之间的相似度。
- Ru,si 是用户 u 对物品 si 的评分或交互强度。