📜  基于用户的协同过滤(1)

📅  最后修改于: 2023-12-03 15:37:48.577000             🧑  作者: Mango

基于用户的协同过滤

简介

基于用户的协同过滤(User-based Collaborative Filtering,简称UBCF)是一种推荐算法,通过分析用户之间的相似性,向用户推荐相似用户喜欢的物品。

UBCF算法的核心理念是“人以类聚、物以群分”。也就是说,如果两个用户喜欢的物品有很高的相似性,那么这两个用户之间就有很高的相似性。UBCF算法通过对用户对物品的评分进行相似度的计算,找出与用户最相似的一组用户,从而向该用户推荐该组用户喜欢的物品。

实现原理
计算相似度

在UBCF算法中,计算用户之间的相似度是非常关键的。本文介绍两种常用的计算方式:

皮尔逊相关系数

皮尔逊相关系数(Pearson Correlation Coefficient)表示两个变量之间的相关度,通常用r表示。

在UBCF算法中,皮尔逊相关系数可以用来计算两个用户之间的相似度。具体计算公式为:

$$ similarity(u_1,u_2) = \frac{\sum_{i\in I_u}(r_{u_1,i}-\bar{r_{u_1}})(r_{u_2,i}-\bar{r_{u_2}})}{\sqrt{\sum_{i\in I_u}(r_{u_1,i}-\bar{r_{u_1}})^2}\sqrt{\sum_{i\in I_u}(r_{u_2,i}-\bar{r_{u_2}})^2}} $$

其中,$I_u$表示用户$u$评价过的物品集合,$r_{u,i}$表示用户$u$对物品$i$的评分,$\bar{r_u}$表示用户$u$的所有评分的平均值。

计算出所有用户之间的相似度后,可以根据相似度值为用户筛选出与其相似度最高的一组用户,从而向该用户推荐该组用户喜欢的物品。

余弦相似度

除了皮尔逊相似系数,还可以使用余弦相似度(Cosine Similarity)计算两个用户之间的相似度。

余弦相似度的计算公式为:

$$ similarity(u_1,u_2) = \frac{\sum_{i\in I_u}r_{u_1,i}\cdot r_{u_2,i}}{\sqrt{\sum_{i\in I_u}r_{u_1,i}^2}\sqrt{\sum_{i\in I_u}r_{u_2,i}^2}} $$

和皮尔逊相似度一样,计算出所有用户之间的相似度后,可以根据相似度值为用户筛选出与其相似度最高的一组用户,从而向该用户推荐该组用户喜欢的物品。

预测评分

计算出与目标用户最相似的一组用户后,下一步就是预测目标用户对未评价过的物品的评分。

预测评分可以使用加权平均数进行计算,具体计算公式如下:

$$ \hat{r}{u_i} = \frac{\sum\limits{u_j\in N_u(i)}similarity(u_i,u_j)\cdot r_{u_j,i}}{\sum\limits_{u_j\in N_u(i)}similarity(u_i,u_j)} $$

其中,$N_u(i)$表示和用户$u$最相似的一组用户评价过的物品集合,$r_{u_j,i}$表示用户$u_j$对物品$i$的评分,$similarity(u_i,u_j)$表示用户$u_i$和用户$u_j$之间的相似度,$\hat{r}_{u_i}$表示预测用户$u$对物品$i$的评分。

优缺点
优点
  • 不需要物品的属性信息即可进行推荐,具有很强的数据适应性;
  • 简单易懂,计算量小,易于实现。
缺点
  • 对于新用户推荐性能比较差,需要等待用户对物品评价后才能进行推荐;
  • 对于冷门物品,其推荐精度比较低;
  • 算法容易受到极端评分的影响。
参考文献