📅  最后修改于: 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$的评分。