userCF
UserCF(基于用户的协同过滤)的核心思想是 “物以类聚,人以群分” 。它通过分析用户之间的相似性,为用户推荐其他相似用户喜欢的物品。具体来说,UserCF的核心思想可以概括为以下几个关键点:
1. 基于用户行为的相似性
UserCF假设如果两个用户在过去的某些行为(如购买商品、观看视频、听音乐等)上表现出相似性,那么他们在未来的兴趣上也可能是相似的。例如:
如果用户A和用户B都喜欢看科幻电影,那么用户A喜欢的另一部科幻电影很可能会被用户B喜欢。如果用户A和用户B都购买了某品牌的运动鞋,那么用户A购买的运动袜也可能是用户B需要的。
2. 用户相似度的计算
为了实现上述假设,UserCF需要计算用户之间的相似度。常见的相似度计算方法包括:
- • 余弦相似度(Cosine Similarity):通过计算两个用户在所有物品上的评分向量的夹角余弦值来衡量相似度。
- • Jaccard相似度:计算两个用户共同喜欢的物品数与他们喜欢的总物品数的比值。
- • 改进的余弦相似度(IIF):对余弦相似度进行改进,对热门物品进行惩罚,避免因热门物品导致的相似度偏差。
设我们有以下用户对电影的评分矩阵(评分范围为1到5,未评分的用“-”表示):
| 用户/电影 | 《阿凡达》 | 《泰坦尼克号》 | 《复仇者联盟》 | 《盗梦空间》 | 《哈利·波特》 |
|---|---|---|---|---|---|
| Alice | 5 | 4 | - | - | - |
| Bob | 4 | 5 | 3 | - | - |
| Charlie | 3 | 4 | 5 | 4 | - |
| David | - | - | 5 | 5 | 4 |
| Emily | - | - | - | 4 | 5 |
Alice还没有看过《复仇者联盟》、《盗梦空间》和《哈利·波特》,我们希望为Alice推荐一部她可能感兴趣的电影。首先使用余弦相似度来计算用户之间的相似度。余弦相似度公式为:
其中是用户u在每个电影上的评分,是用户v在每个电影上的评分
注意,必须是两个用户都交互过的商品才可以用来计算相似度,例如计算Alice和Bob的相似度,两个人共同看过的电影有《阿凡达》和《泰坦尼克号》,所以Alice的向量是
[5,4],Bob的向量是[4,5]
我一开始觉得Alice的向量是[5,4,0],Bob的向量是[4,5,3],这是不对的,Alice在《复仇者联盟》上并没有评分,不能假设成0分,所以不应该用这个维度计算夹角。
- 计算Alice=[5,4]和Bob=[4,5]的相似度
- 计算Alice=[5,4]和Charlie=[3,4]的相似度
- 计算Alice和David的相似度为0
- 计算Alice和Emily的相似度为0
3. 基于相似用户的推荐
一旦确定了用户之间的相似度,UserCF会为每个用户找到一组最相似的用户(称为“邻居”)。然后,从这些邻居用户的喜好中选择目标用户尚未接触过的物品,并将这些物品推荐给目标用户。具体步骤如下:
- 选择邻居用户:根据相似度,选择与目标用户最相似的K个用户。
- 推荐物品:从这些邻居用户的喜好中,选择目标用户未接触过的物品。
- 评分预测:计算目标用户对这些物品的感兴趣程度(通常通过加权平均的方式),并根据评分高低进行排序。
生成推荐列表:选择评分最高的N个物品作为推荐结果。
4. 改进的余弦相似度
John S. Breese提出了一个改进的用户相似度计算公式,用于更好地衡量用户兴趣的相似度。该公式的核心思想是:两个用户对冷门物品的共同行为更能反映他们的兴趣相似度,而热门物品的共同行为则不能很好地说明这一点。
假设用户u和用户v共同对物品i有过行为,那么在计算用户相似度时,会引入一个惩罚因子来降低热门物品对相似度的影响。公式为:
这个公式表示用户u和用户v之间的相似度权重Wuv,其中: 其中:
- • N(u) 表示用户u有过行为的物品集合。
- • N(v) 表示用户v有过行为的物品集合。
- • N(i) 表示对物品i有过行为的用户集合。
- • 1/log(1+∣N(i)∣) 是对物品流行度的惩罚因子,当物品越热门时,其值越大,从而降低热门物品对相似度的贡献。
这种改进的用户相似度计算方法被称为User-IIF(Inverse Item Frequency)算法,它通过惩罚热门物品的影响,能够更准确地反映用户之间的兴趣相似度