欧几里得距离(又称欧式距离)指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。欧式距离公式如下:
欧几里得距离计算相似度很简单,容易理解。用户u和用户v对物品的评分分别为xi、yi,计算欧式距离用公式带入即可。计算出来的欧几里得距离是一个大于0的数,为了使其更能体现用户之间的相似度,可以把它规约到(0,1]之间,具体做法为:1/(1+d)。只要至少有一个共同评分项,就能用欧几里得距离计算相似度。欧几里得距离计算出来的值越小表示越相似,如果两者之间没有共同评分,那么欧几里得距离也就失去了作用。同时在处理一些受主观影响太大的评分数据时,效果会不太好。因此,当用户评价较少或者相对于平均水平偏离很大的时候,不适合使用基于欧几里得算法揭示出来的真实相似度。
欧几里得距离是解析几何中最常用的一种计算方法,但是计算起来相对比较复杂,需要经过平方、加和,再开方。曼哈顿距离的相似度计算公式比欧式计算公式看起来简单很多,只需要把两个点坐标的x坐标相减取绝对值,y坐标相减取绝对值,再加和即可。曼哈顿距离公式如下:
曼哈顿距离是欧几里得距离的简化,因此当用户偏好数据集中某些特征值很大时,如果用曼哈顿距离计算相似度,这些特征会掩盖其他特征间的邻近关系。
余弦相似度用向量夹角的余弦值作为度量两个个体间差异的大小。余弦相似度是从方向上区分差异,而对绝对值不敏感,更多地用于使用用户对内容评分来区分兴趣的相似度和差异上,同时修正了用户间可能存在的度量标准不统一的问题。
以一个实际的例子来介绍一下其中的计算过程:假设有商品全集I={a,b,c,d,e,f},其中A用户偏好商品{a,b,c},B用户偏好商品{b,d},那么有如图2-5矩阵。
图2-5对数似然相似性度量矩阵图
k11表示用户A和用户B的共同偏好的商品数量,显然只有商品b,因此值为1。
k12表示用户A的特有偏好,即商品{a,c},因此值为2。
k21表示用户B的特有偏好,即商品d,因此值为1。
k22表示用户A、B的共同非偏好,有商品{e,f},值为2。
此外我们还定义以下变量N=k11+k12+k21+k22,即总商品数量。
计算步骤如下:
(1)计算行熵
(2)计算列熵
(3)计算矩阵熵
(4)计算相似度
对数似然相似度处理无打分的偏好数据时,效果较好。
由于华东师范大学图书馆数据存在数据稀疏性问题,系统使用无偏好值的协同过滤推荐算法。针对无偏好值的推荐,最好的相似度量是对数似然相似性度量。ApacheMahout对数似然相似性度量源码如下所示:
系统需要使用ApacheMahout提供的推荐系统工具库,它主要面向开发人员,以API调用的方式提供服务。ApacheMahout能够为开发个性化推荐应用提供基础的、高效的代码库支持,降低应用开发的风险。ytkak8el/ww3h+6GmxGrZzyM6eMQNC3Pr/x8D1aQ+JsQJbJ5uefkE1We5DYoSWqo