10.1 基于用户的协同过滤算法
以电影评分数据为例,实现基于用户的协同过滤算法第一个重要的步骤就是计算用户之间的相似度。而计算相似度,建立相关系数矩阵目前主要分为以下几种方法。
(1)皮尔逊相关系数
皮尔逊相关系数一般用于计算两个定距变量间联系的紧密程度,它的取值在[-1,+1]之间。用数学公式表示,皮尔逊相关系数等于两个变量的协方差除于两个变量的标准差。计算公式如下所示:
由于皮尔逊相关系数描述的是两组数据变化移动的趋势,所以在基于用户的协同过滤系统中,经常使用。描述用户购买或评分变化的趋势,若趋势相近则皮尔逊系数趋近于1,也就是我们认为相似的用户。
(2)基于欧几里德距离的相似度
欧几里德距离计算相似度是所有相似度计算里面最简单、最易理解的方法。它以经过人们一致评价的物品为坐标轴,然后将参与评价的人绘制到坐标系上,并计算他们彼此之间的直线距离 。计算出来的欧几里德距离是一个大于0的数,为了使其更能体现用户之间的相似度,可以把它规约到(0,1]之间,最终得到如下计算公式:
只要至少有一个共同评分项,就能用欧几里德距离计算相似度。如果没有共同评分项,那么欧几里德距离也就失去了作用。其实照常理,如果没有共同评分项,那么意味着这两个用户或物品根本不相似。
(3)余弦相似度
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦相似度更加注重两个向量在方向上的差异,而非在距离或长度上。计算公式如下所示:
从图10-3可以看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦相似度衡量的是空间向量的夹角,更加注重的是体现在方向上的差异,而不是位置。如果保持X点的位置不变,Y点朝原方向远离坐标轴原点,那么这个时候余弦相似度是保持不变的,因为夹角不变,而X、Y两点的距离显然在发生改变,这就是欧氏距离和余弦相似度的不同之处。
基于用户的协同过滤算法,另一个重要的步骤就是计算用户u对未评分商品的预测分值。首先根据上一步中的相似度计算,寻找用户u的邻居集N∈U,其中N表示邻居集,U表示用户集。然后,结合用户评分数据集,预测用户u对项i的评分,计算公式如下所示:
图10-3 余弦相似度
其中,s(u-u')表示用户u和用户u'的相似度。
最后,基于对未评分商品的预测分值排序,得到推荐商品列表。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论