Mahout推荐引擎中的几种相似度计算简要介绍

来源:互联网 发布:待机长平板 知乎 编辑:程序博客网 时间:2024/05/29 19:56

Mahout的Taste框架里提供的几种比较常用的相似度计算。


1.欧几里德距离(Euclidean Distance),记为d(x,y)

首先要计算两个点之间的欧几里德距离,然后根据欧几里德距离计算相似度。

对应的欧几里德相似度,一般采用如下方式转换:sim(x,y) = 1/(1+d(x,y))。距离越小,相似度越大。  


2.余弦相似性(Cosine Similarity)

余弦相似性计算时,余弦值代表用户之间的相似性,当夹角越小时,余弦值越大,用户越相似,余弦相似性被广泛应用于计算文档数据的相似度。


3.皮尔逊相关系数(Pearson Correlation Coefficient)

皮尔逊相关系数一般用户计算两个定距变量间线性相关的紧密程度,它的取值在【-1,+1】之间。当取值大于0时表示两个变量是正相关的,即一个变量的值越大,

另一个变量的值也会越大;当取值小于0时表示两个变量是负相关的,即一个变量的值越大,另一个变量的值反而会越小。


4.Tanimoto系数(Tanimoto Coefficient)

Tanimoto系数也称Jaccard系数,是Cosine相似度的扩展,一般用于计算文本数据的相似度。


5.CityBlock(曼哈顿)相似度

曼哈顿距离(Manhattan Distance)是由十九世纪的赫尔曼·闵可夫斯基所创词汇,是使用在几何度量空间的几何学用语,用以表明两个点以上在标准坐标系上的绝对轴距总和。

转换后的相似度为:sim(x,y) = 1/(1+d(x,y))。


上述各种相似性计算方法都各自的优缺点,也应用于不同的场景之下。

这里只简单介绍下概念,数学公式没有往上贴。


除了以上介绍的几种,PEARSON, EUCLIDEAN, COSINE, TANIMOTO, SPEARMAN, CITYBLOCK, Mahout的Taste框架中还给出了LOGLIKELIHOOD, 可用来计算用户也可用来计算item。下面是对用户进行聚类使用的,FARTHEST_NEIGHBOR_CLUSTER, NEAREST_NEIGHBOR_CLUSTER

0 0
原创粉丝点击