转载自:http://www.cnblogs.com/shipengzhi/articles/2540382.html
在分类聚类算法,推荐系统中,常要用到两个输入变量(通常是特征向量的形式)距离的计算,即相似性度量.不同相似性度量对于算法的结果,有些时候,差异很大.因此,有必要根据输入数据的特征,选择一种合适的相似性度量方法.
令X=(x1,x2,..,xn)T,Y=(y1,y2,...yn)T为两个输入向量,
1.欧几里得距离(Euclidean distance)-EuclideanDistanceMeasure.
相当于高维空间内向量说表示的点到点之间的距离。
由于特征向量的各分量的量纲不一致,通常需要先对各分量进行标准化,使其与单位无关,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。
优点:简单,应用广泛(如果也算一个优点的话)
缺点:没有考虑分量之间的相关性,体现单一特征的多个分量会干扰结果。
2.马氏距离(Mahalanobis distance)-MahalanobisDistanceMeasure
C=E[(X-X平均)(Y-Y平均)]为该类输入向量X的协方差矩阵.(T为转置符号,E取平均时是样本因此为n-1)
适用场合:
1)度量两个服从同一分布并且其协方差矩阵为C的随机变量X与Y的差异程度
2)度量X与某一类的均值向量的差异程度,判别样本的归属。此时,Y为类均值向量.
优点:
1)独立于分量量纲
2)排除了样本之间的相关性影响。
缺点:不同的特征不能差别对待,可能夸大弱特征。
3.闵可夫斯基距离(Minkowsk distance)-MinkowskiDistanceMeasure(默认p=3)
可看成是欧氏距离的指数推广,还没有见到过很好的应用实例,但通常,推广都是一种进步,特别的,
当p=1,也成做曼哈顿距离,也称绝对距离,曼哈顿距离来源于城市区块距离,是将多个维度上的距离进行求和后的结果。ManhattanDistanceMeasure.
当q=∞时,称为切比雪夫距离,ChebyshevDistanceMeasure
切比雪夫距离起源于国际象棋中国王的走法,我们知道国际象棋国王每次只能往周围的8格中走一步,那么如果要从棋盘中A格(x1, y1)走到B格(x2, y2)最少需要走几步?扩展到多维空间,其实切比雪夫距离就是当p趋向于无穷大时的明氏距离:
4.汉明距离(Hamming distance)-Mahout无
在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。
例如:
1011101 与 1001001 之间的汉明距离是 2。
2143896 与 2233796 之间的汉明距离是 3。
"toned" 与 "roses" 之间的汉明距离是 3。
5.Tanimoto系数(又称广义Jaccard系数)-TanimotoDistanceMeasure.
通常应用于X为布尔向量,即各分量只取0或1的时候。此时,表示的是X,Y的公共特征的占X,Y所占有的特征的比例。
5.Jaccard系数
Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,因为个体的特征属性都是由符号度量或者布尔值标识,因此无法衡量差异具体值的大小,只能获得“是否相同”这个结果,所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。如果比较X与Y的Jaccard相似系数,只比较xn和yn中相同的个数,公式如下:
7.皮尔逊相关系数(Pearson correlation coefficient)-PearsonCorrelationSimilarity
即相关分析中的相关系数r,分别对X和Y基于自身总体标准化后计算空间向量的余弦夹角。公式如下:
8.余弦相似度(cosine similarity)-CosineDistanceMeasure
就是两个向量之间的夹角的余弦值。
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
优点:不受坐标轴旋转,放大缩小的影响。
9.调整余弦相似度-Adjusted Cosine Similarity
虽然余弦相似度对个体间存在的偏见可以进行一定的修正,但是因为只能分辨个体在维之间的差异,没法衡量每个维数值的差异,会导致这样一个情况:比如用户对内容评分,5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但从评分上看X似乎不喜欢这2个内容,而Y比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。
调整余弦相似度和余弦相似度,皮尔逊相关系数在推荐系统中应用较多。在基于项目的推荐中,GroupLens有篇论文结果表明调整余弦相似度性能要优于后两者。
10.基于权重的距离计算方法:
WeightedDistanceMeasure、WeightedEuclideanDistanceMeasure 、 WeightedManhattanDistanceMeasure
欧氏距离与余弦相似度
借助三维坐标系来看下欧氏距离和余弦相似度的区别:
根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。
相关推荐
- mahout-core-0.9.jar:作为最新版本,它集成了更多的改进和新特性,包括算法的优化、API的调整以及对大数据处理的进一步支持。 4. **API变化**: 随着版本的更新,Mahout的API可能会发生变化,比如引入新的接口...
3. **聚类**:包括K-Means、Fuzzy K-Means、Canopy Clustering、DBSCAN等算法,可用于将相似的数据点分组到一起,常用于市场细分、用户分群等场景。 4. **频繁项集挖掘**:通过Apriori、FP-Growth等算法发现数据...
- **聚类**:如K-Means算法,用于将数据点分成多个群组,使同组内的数据点相互接近,而不同组的数据点相距较远。 5. **大数据处理**: Mahout设计时考虑了大数据的处理,它利用Hadoop MapReduce框架进行分布式...
mahout-integration-0.7mahout-integration-0.7mahout-integration-0.7mahout-integration-0.7
mahout-0.9-cdh5.5.0.tar.gz
mahout-math-0.8.jar mahout-math-0.8.jar
mahout-core-0.9.jar,支持版本hadoop-2.2.x,由mahout-distribution-0.9.tar.gz源码构建生成jar包。
在Mahout-distribution-0.8-src这个源代码包中,我们可以深入理解其内部机制,同时也为开发者提供了实现自定义机器学习模型的可能。 一、Mahout 0.8概览 Mahout 0.8 版本是该项目的一个重要里程碑,它包含了丰富的...
这个"apache-mahout-distribution-0.10.2"压缩包包含的是Mahout的0.10.2版本,该版本是2014年发布的一个稳定版本,旨在帮助大数据研发人员构建和实现复杂的机器学习模型。 在大数据领域,机器学习是关键的技术之一...
重新编译mahout-examples-0.9-job.jar,增加分类指标:最小最大精度、召回率。详情见http://blog.csdn.net/u012948976/article/details/50203249
标题中的"mahout-distribution-0.9-src.zip"指的是Mahout项目在0.9版本的源代码分布,这对于开发者来说是一个宝贵的资源,可以深入理解其内部实现并进行定制化开发。 Apache Mahout的核心特性主要体现在以下几个...
mahout-math-0.9.jar
这个压缩包“mahout-distribution-0.12.2-src.tar.gz”是Mahout项目的一个源码版本,版本号为0.12.2,提供给开发者进行深度研究和定制化开发。在解压后的文件“apache-mahout-distribution-0.12.2”中,我们可以找到...
mahout-distribution-0.5-src.zip mahout 源码包
mahout中需要用到的一个版本jar包:mahout-core-0.3.jar
mahout-examples-0.10.1-job.jar 已经包含分词程序,替换掉mahout默认的jar包
"mahout-distribution-0.9含jar包" 是一个包含了Mahout项目0.9版本的预编译二进制文件集合,其中不包含源代码,适合那些希望直接使用Mahout功能而不需要进行编译或开发的用户。 在Mahout 0.9版本中,你可以找到以下...
apache-mahout-distribution-0.12.1.tar.gz 开源版本 .
mahout-distribution-0.10.0-src.tar.gz
mahout-examples-0.11.1 mahout-examples-0.11.1-job mahout-h2o_2.10-0.11.1 mahout-h2o_2.10-0.11.1-dependency-reduced mahout-hdfs-0.11.1 mahout-integration-0.11.1 mahout-math-0.11.1 mahout-math-0.11.1 ...