机器学习中的distance到底应该是怎样的???
1.向量的显示距离
向量的显示距离是根据向量中相同索引的变量进行直观分析计算得出的。
1.1.汉明距离(Hamming distance):变量差异计数
汉明距离是以理查德·卫斯里·汉明的名字命名的。在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数,在通信领域的信道编码中常使用,简单直观,但是相当多的信息量损失。
1.2.曼哈顿距离(Manhattan distance):变量差异累加
曼哈顿距离也称为城市街区距离(City Block distance),是变量差异的绝对值累加,比较形象的理解就是曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。这个距离在比汉明距的进步就是对变量的细节在权重上给与的保留,但是放弃了变量的方向(正负关系),在“曼哈顿问题”上有实际的用途,对于多维空间两个维度相同的向量和,定义两个向量在n维空间的曼哈顿距离公式如下:
显而易见,二进制的世界里,曼哈顿距离=汉明距离,那么就可以说曼哈顿距离是汉明距离在多进制世界中的版本。
1.3.欧式距离(Euclidean distance):几何距离的多维度思考
欧氏距离实际上就是在二维和三维空间上的直线距离进而推广到多维空间的距离定义。这应该是最容易被我们理解和接受的一种距离定义,同时也被机器学习和模式识别等领域广泛采用。
对于欧式距离计算公式为:
%5E2%7D%7D%0A#card=math&code=Distance%7Beucli-n%7D%3D%5Csqrt%7B%5Csum%5E%7Bn%7D%7Bi%3D1%7D%7B%28x_i-y_i%29%5E2%7D%7D%0A&id=cCvKJ)
向量表示方法为:
%5ET(X-Y)%7D%0A#card=math&code=Distance_%7Beucli-n%7D%3D%5Csqrt%7B%28X-Y%29%5ET%28X-Y%29%7D%0A&id=GrUWU)
1.4.切比雪夫距离(Chebyshev distance):最大的就是最好的
切比雪夫距离是向量空间中的一种度量,二个向量点之间的距离定义是其各坐标数值差绝对值的最大值。两个向量在n维空间的切比雪夫距离为:
%3D%5Clim%7Bk%5Crightarrow%5Cinfty%7D(%5Csum%5E%7Bn%7D%7Bi%3D1%7D%7Cxi-y_i%7C%5Ek)%5E%7B1%2Fk%7D%0A#card=math&code=Distance%7BCheby%7D%3D%5Cmaxi%28%7Cx_i-y_i%7C%29%3D%5Clim%7Bk%5Crightarrow%5Cinfty%7D%28%5Csum%5E%7Bn%7D_%7Bi%3D1%7D%7Cx_i-y_i%7C%5Ek%29%5E%7B1%2Fk%7D%0A&id=dHVLD)
求取极限使得只获得维度中差异最大值。
1.5.闵可夫斯基距离(Minkowski distance):变量的高阶差异累加
闵可夫斯基距离可以看作是一种推广,而曼哈顿、欧式、切比雪夫距离均是其特例。闵可夫斯基距离定义为:
2.显示距离的罪与罚
显式距离只考虑向量相同下标索引到的变量差异,用法相对死板。
- 将各个分量的量纲(scale),也就是“单位”当作相同的看待了。
- 没有考虑各个分量的分布(期望,方差等)可能是不同的。
举一个小栗子,把一个向量循环移位之后的新向量与原向量比较,显式距离可能特别的大,那就说明这两个向量没有关系吗?
基于这个考虑,我们不但要考虑对标变量的差异,还要考虑如下几点
- 不对标向量之间有什么联系。
- 量纲、分布也应考虑进来。
3.向量的隐式距离
通过归一化(normalize)将距离规约到隐式距离,通常来讲这样的距离被称为相似度
3.1.皮尔逊相关系数(Pearson’s correlation coefficient)
皮尔逊相关系数广泛用于度量两个变量之间的相关程度,其值介于-1与1之间,又称皮尔逊积矩相关系数(Pearson product-moment correlation coefficient,简称 PPMCC或PCCs)。两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商:
%7D%7B%5Csigma(X)%2C%5Csigma(Y)%7D%0A#card=math&code=%5Crho_%7BX%2CY%7D%3D%5Cfrac%7Bcov%28X%2CY%29%7D%7B%5Csigma%28X%29%2C%5Csigma%28Y%29%7D%0A&id=OdowK)
皮尔逊相关系数有一个重要的数学特性是,因两个变量的位置和尺度的变化并不会引起该系数的改变。
3.2.余弦相似度(Cosine similarity)
余弦相似性通过测量两个向量的夹角余弦值来度量两个向量之间的相似性,具有非常重要的意义。
3.3.归一化欧式距离(Standardized euclidean distance)
假设向量的均值(mean)为,标准差(standard deviation)为,那么的归一(标准)化变量表示为:
定义向量到向量的距离为:(其中是向量的各个维度的标准差)
%5E2%7D%3D%5Csqrt%7B%5Csum%5E%7Bn%7D%7Bi%3D1%7D(%5Cfrac%7Bx_i-y_i%7D%7Bs_i%7D)%5E2%7D%0A#card=math&code=Distance%7Beucli-n%7D%3D%5Csqrt%7B%5Csum%5E%7Bn%7D%7Bi%3D1%7D%28x%5E%2A_i-y%5E%2A_i%29%5E2%7D%3D%5Csqrt%7B%5Csum%5E%7Bn%7D%7Bi%3D1%7D%28%5Cfrac%7Bx_i-y_i%7D%7Bs_i%7D%29%5E2%7D%0A&id=heYsO)
从公式中看出一些不足,向量和向量之间度量完全就应该不一样,怎么能以的来做为比对值???
其实这个公式是对数据集合同下标的变量做了归一化,感觉还是怪怪的,假设条件很重要。将每个维度方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(WeightedEuclidean distance)。但多维向量不同维度之间往往是有联系的,所以这种归一化只是为了研究而已。
在数据标准化后,Pearson相关性系数、Cosine相似度、欧式距离的平方可认为是等价的
换句话说,如果你的数据符合正态分布或者经过了标准化处理,那么这三种度量方法输出等价,不必纠结使用哪一种
经验:在低维度可以优先使用标准化后的欧式距离或者其他距离度量,在高维度时Pearson相关系数更加适合
3.4.马氏距离(Mahalanobis distance):happy:
总结了上述归一化欧式距离的问题后马氏距离对其进行了改进,马氏距离使用协方差进行修正,消除了变量之间的相关性干扰,对于向量和,其协方差矩阵为均值向量为。定义单个向量到的距离为:
%5ETS%5E%7B-1%7D(X-%5Cmu)%7D%0A#card=math&code=Distance_%7BMahal%7D%3D%5Csqrt%7B%28X-%5Cmu%29%5ETS%5E%7B-1%7D%28X-%5Cmu%29%7D%0A&id=VBW0k)
定义两个向量之间的距离为:
%5ETS%5E%7B-1%7D(X-Y)%7D%0A#card=math&code=Distance_%7BMahal%7D%3D%5Csqrt%7B%28X-Y%29%5ETS%5E%7B-1%7D%28X-Y%29%7D%0A&id=Cobjo)
当两个向量之间独立同分布时,协方差为单位阵,这样马氏距离就变成了标准欧式距离
4.其他相似系数
4.1.杰卡德相似系数(Jaccard similarity coefficient)
两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。
%3D%5Cfrac%7BA%5Ccap%20B%7D%7BA%20%5Ccup%20B%7D%0A#card=math&code=J%28A%2CB%29%3D%5Cfrac%7BA%5Ccap%20B%7D%7BA%20%5Ccup%20B%7D%0A&id=doXM5)
4.2.Hausdorff 距离
Hausdorff距离是描述两组点集之间相似程度的一种量度,它是两个点集之间距离的一种定义形式:假设有两组集合A={a1,…,ap},B={b1,…,bq},则这两个点集合之间的Hausdorff距离定义为
%3D%5Cmax(h(A%2CB)%2Ch(B%2CA))%20%5C%5C%0Ah(A%2CB)%3D%5Cmax%20(a%20%5Cin%20A)%20%5Cmin%20(b%20%5Cin%20B)%20%5C%7Ca-b%5C%7C%20%5C%5C%0Ah(B%2CA)%3D%5Cmax%20(b%20%5Cin%20B)%20%5Cmin%20(a%20%5Cin%20A)%20%5C%7Cb-a%5C%7C%20%5C%5C%0A%E2%80%96%C2%B7%E2%80%96%E6%98%AF%E7%82%B9%E9%9B%86A%E5%92%8CB%E7%82%B9%E9%9B%86%E9%97%B4%E7%9A%84%E8%B7%9D%E7%A6%BB%E8%8C%83%E5%BC%8F(%E5%A6%82%3AL2%E6%88%96Euclidean%E8%B7%9D%E7%A6%BB)%0A#card=math&code=H%28A%2CB%29%3D%5Cmax%28h%28A%2CB%29%2Ch%28B%2CA%29%29%20%5C%5C%0Ah%28A%2CB%29%3D%5Cmax%20%28a%20%5Cin%20A%29%20%5Cmin%20%28b%20%5Cin%20B%29%20%5C%7Ca-b%5C%7C%20%5C%5C%0Ah%28B%2CA%29%3D%5Cmax%20%28b%20%5Cin%20B%29%20%5Cmin%20%28a%20%5Cin%20A%29%20%5C%7Cb-a%5C%7C%20%5C%5C%0A%E2%80%96%C2%B7%E2%80%96%E6%98%AF%E7%82%B9%E9%9B%86A%E5%92%8CB%E7%82%B9%E9%9B%86%E9%97%B4%E7%9A%84%E8%B7%9D%E7%A6%BB%E8%8C%83%E5%BC%8F%28%E5%A6%82%3AL2%E6%88%96Euclidean%E8%B7%9D%E7%A6%BB%29%0A&id=AvUTn)
5.漫谈熵和距离
信息熵是为了衡量信息本身的不确定性,与机器学习有关系是因为出现了两个衍生概念:交叉熵、KL散度,出现这两个概念是因为现实生活中我们无法获得全部样本,所以的机器学习问题都是以偏概全,通过测试判断哪种模型预测效果好,所以定义真实的分布概率为p,而经过模型猜测(估计)出来的分布为q,我们在学习(train)的过程就是希望p和q能相等,或者相近,KL散度就是评价这两个抽象分布距离的办法,这样divergence这个词和distance就联系在一起了。