在数据分析和数据挖掘的过程当中,咱们常常须要知道个体间差别的大小,进而评价个体的类似性和类别。最多见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如K最近邻(KNN)和K均值(K-Means)。固然衡量个体差别的方法有不少,最近查阅了相关的资料,这里整理罗列下。算法
为了方便下面的解释和举例,先设定咱们要比较X个体和Y个体间的差别,它们都包含了N个维的特征,即X=(x1, x2, x3, … xn),Y=(y1, y2, y3, … yn)。下面来看看主要能够用哪些方法来衡量二者的差别,主要分为距离度量和类似度度量。ide
距离度量idea
距离度量(Distance)用于衡量个体在空间上存在的距离,距离越远说明个体间的差别越大。ci
欧几里得距离(Euclidean Distance)数据分析
欧氏距离是最多见的距离度量,衡量的是多维空间中各个点之间的绝对距离。公式以下:it
由于计算是基于各维度特征的绝对数值,因此欧氏度量须要保证各维度指标在相同的刻度级别,好比对身高(cm)和体重(kg)两个单位不一样的指标使用欧式距离可能使结果失效。数据挖掘
明可夫斯基距离(Minkowski Distance)io
明氏距离是欧氏距离的推广,是对多个距离度量公式的归纳性的表述。公式以下:变量
这里的p值是一个变量,当p=2的时候就获得了上面的欧氏距离。cli
曼哈顿距离(Manhattan Distance)
曼哈顿距离来源于城市区块距离,是将多个维度上的距离进行求和后的结果,即当上面的明氏距离中p=1时获得的距离度量公式,以下:
切比雪夫距离(Chebyshev Distance)
切比雪夫距离起源于国际象棋中国王的走法,咱们知道国际象棋国王每次只能往周围的8格中走一步,那么若是要从棋盘中A格(x1, y1)走到B格(x2, y2)最少须要走几步?扩展到多维空间,其实切比雪夫距离就是当p趋向于无穷大时的明氏距离:
其实上面的曼哈顿距离、欧氏距离和切比雪夫距离都是明可夫斯基距离在特殊条件下的应用。
马哈拉诺比斯距离(Mahalanobis Distance)
既然欧几里得距离没法忽略指标度量的差别,因此在使用欧氏距离以前须要对底层指标进行数据的标准化,而基于各指标维度进行标准化后再使用欧氏距离就衍生出来另一个距离度量——马哈拉诺比斯距离(Mahalanobis Distance),简称马氏距离。
类似度度量
类似度度量(Similarity),即计算个体间的类似程度,与距离度量相反,类似度度量的值越小,说明个体间类似度越小,差别越大。
向量空间余弦类似度(Cosine Similarity)
余弦类似度用向量空间中两个向量夹角的余弦值做为衡量两个个体间差别的大小。相比距离度量,余弦类似度更加注重两个向量在方向上的差别,而非距离或长度上。公式以下:
皮尔森相关系数(Pearson Correlation Coefficient)
即相关分析中的相关系数r,分别对X和Y基于自身整体标准化后计算空间向量的余弦夹角。公式以下:
Jaccard类似系数(Jaccard Coefficient)
Jaccard系数主要用于计算符号度量或布尔值度量的个体间的类似度,由于个体的特征属性都是由符号度量或者布尔值标识,所以没法衡量差别具体值的大小,只能得到“是否相同”这个结果,因此Jaccard系数只关心个体间共同具备的特征是否一致这个问题。若是比较X与Y的Jaccard类似系数,只比较xn和yn中相同的个数,公式以下:
调整余弦类似度(Adjusted Cosine Similarity)
虽然余弦类似度对个体间存在的偏见能够进行必定的修正,可是由于只能分辨个体在维之间的差别,无法衡量每一个维数值的差别,会致使这样一个状况:好比用户对内容评分,5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦类似度得出的结果是0.98,二者极为类似,但从评分上看X彷佛不喜欢这2个内容,而Y比较喜欢,余弦类似度对数值的不敏感致使告终果的偏差,须要修正这种不合理性,就出现了调整余弦类似度,即全部维度上的数值都减去一个均值,好比X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦类似度计算,获得-0.8,类似度为负值而且差别不小,但显然更加符合现实。
欧氏距离与余弦类似度
欧氏距离是最多见的距离度量,而余弦类似度则是最多见的类似度度量,不少的距离度量和类似度度量都是基于这二者的变形和衍生,因此下面重点比较下二者在衡量个体差别时实现方式和应用环境上的区别。
借助三维坐标系来看下欧氏距离和余弦类似度的区别:
从图上能够看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦类似度衡量的是空间向量的夹角,更加的是体如今方向上的差别,而不是位置。若是保持A点的位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦类似度cosθ是保持不变的,由于夹角不变,而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦类似度的不一样之处。
根据欧氏距离和余弦类似度各自的计算方式和衡量特征,分别适用于不一样的数据分析模型:欧氏距离可以体现个体数值特征的绝对差别,因此更多的用于须要从维度的数值大小中体现差别的分析,如使用用户行为指标分析用户价值的类似度或差别;而余弦类似度更多的是从方向上区分差别,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的类似度和差别,同时修正了用户间可能存在的度量标准不统一的问题(由于余弦类似度对绝对数值不敏感)。
上面都是对距离度量和类似度度量的一些整理和汇总,在现实的使用中选择合适的距离度量或类似度度量能够完成不少的数据分析和数据挖掘的建模,后续会有相关的介绍。