用户与内容相似度挖掘:k-means聚类及相似度实现
1. 相似度计算基础
在进行用户和内容相似度计算时,我们会用到一些重要的相似度指标,如皮尔逊相关系数和余弦相似度。皮尔逊相关系数和余弦相似度看起来很相似,实际上,余弦相似度函数可以扩展为调整后的余弦相似度函数。调整意味着对评分进行归一化,使其与皮尔逊函数相同。调整后的余弦相似度和皮尔逊相关系数的唯一区别在于,皮尔逊函数使用两个用户都评价过的项目,而余弦相似度函数使用任一用户或两个用户评价过的所有项目,当其中一个用户未评价某个项目时,将评分设为零。
例如,计算Jesper和Pietro的相似度:
- (sim(Jesper, Pietro)=\frac{-2.4}{2.8\times3.56}=-0.76)
- (sim_{Normalized Cosine}(Jesper, Pietro)= - 0.62)
- (sim_{Pearson}(Jesper, Pietro)= - 0.75)
需要注意的是,如果计算一个评分少的用户和一个评分多的用户之间的相似度,余弦相似度会使相似度趋近于零。因为如果有很多不重叠的项目,这不会影响分子(因为如果一个项目未被其中一个用户评价,那么乘积将为零,不增加任何值),而在分母中,每个评分都被平方。
2. k-means聚类算法
计算用户或项目之间的相似度是邻域协同过滤算法的弱点,因为它需要算法判断当前活跃用户与系统中所有其他用户的相似度,或者项目与系统中所有其他项目的相似度。因此,将数据集划分为较小的组是个好主意,这样只需要在用户较少的组中计算相似度。
k-means聚类与相似度实现
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



