以前在写《Multi-view CNNs for 3D Objects Recognition》的阅读笔记的时候,文章中的一个创新点即是将MVCNN网络提取到的3D Objects的形状特征描述符,投影到马氏距离(Mahalanobis Distance)上,“这样的话,相同类别3D形状之间的ℓ2距离在投影后的空间中就更小,而不一样的类别之间的ℓ2在投影后会更大”,也更适用于3D形状的分类与检索。
后来我沿着这篇文章继续追踪这个马氏距离,发如今2013年BMVC会议上的《Fisher Vector Faces in the Wild》,2008年的PR会议上的《Learning a Mahalanobis distance metric for data clustering and classification》,这两篇文章都使用了马氏距离进行衡量特征向量之间的“远近”。
所以,我想搞清楚马氏距离以及欧式距离之间的区别。本文是之为记。
html
方差:方差是标准差的平方,而标准差的意义是数据集中各个点到均值点距离的平均值。反应的是数据的离散程度。
协方差:标准差与方差是描述一维数据的,当存在多维数据时,咱们一般须要知道每一个维数的变量中间是否存在关联。协方差就是衡量多维数据集中,变量之间相关性的统计量。好比说,一我的的身高与他的体重的关系,这就须要用协方差来衡量。若是两个变量之间的协方差为正值,则这两个变量之间存在正相关,若为负值,则为负相关。
协方差矩阵,当变量多了,超过两个变量了。那么,就用协方差矩阵来衡量这么多变量之间的相关性。假设
web
马氏距离(Mahalanobis Distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的类似度的方法。与欧氏距离不一样的是它考虑到各类特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,由于二者是有关联的)而且是尺度无关的(scale-invariant),即独立于测量尺度。
对于一个均值为
网络
马氏距离有不少优势,马氏距离不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还能够排除变量之间的相关性的干扰。
它的缺点是夸大了变化微小的变量的做用。ide
这个stackexchange问答很好的回答了马氏距离的解释:
下图是一个二元变量数据的散点图:
svg
沿着新坐标轴的单位向量是协方差矩阵的特征向量。函数
注意到没有变形的椭圆,变成圆形后沿着特征向量用标准差(协方差的平方根)将距离长度分割。用
在最后一步中,坐标轴扩展的量是协方差矩阵的逆的特征值(平方根),同理的,坐标轴缩小的量是协方差矩阵的特征值。因此,点越分散,须要的将椭圆转成圆的缩小量就越多。idea
尽管上述的操做能够用到任何数据上,可是对于多元正态分布的数据表现更好。在其余状况下,点的平均值或许不能很好的表示数据的中心,或者数据的“脊椎”(数据的大体趋势方向)不能用变量做为几率分布测度(using variance as a measure of spread)来准确的肯定。spa
原始坐标系的平移、旋转,以及坐标轴的伸缩一块儿造成了仿射变换(affine transformation)。除了最开始的平移以外,其他的变换都是基底变换,从原始的一个变为新的一个。.net
对于多元正太分布,Mahalanobis 距离(已经变换到新的原点)出如今表达式
假设数据分布是一个二维的正椭圆,
x 轴y 轴均值都为0,x 轴的方差为1000,y 轴的方差为1,考虑两个点(1,0),(0,1) 到原点的距离,若是计算的是欧氏距离那么二者相等,可是仔细想一下,由于x轴的方差大,因此(0,1) 应该是更接近中心的点,也就是正态分布标准差的(68,95,99.7) 原则。这时候须要对x,y 轴进行缩放,对应的操做就是在协方差矩阵的对角上加上归一化的操做,使得方差变为1.假设数据分布是一个二维的椭圆,可是不是正的,好比椭圆最长的那条线是
45° 的,由于矩阵的对角只是对坐标轴的归一化,若是不把椭圆旋转回来,这种归一化是没有意义的,因此矩阵上的其余元素(非对角)派上用场了。若是椭圆不是正的,说明变量之间是有相关性的(x大y也大,或者负相关),加上协方差非对角元素的意义就是作旋转。
上图是,一个左下右上方向标准差为 3,正交方向标准差为 1 的多元高斯分布的样本点。因为 x 和 y 份量共变(即相关),x 与 y 的方差不能彻底描述该分布;箭头的方向对应的协方差矩阵的特征向量,其长度为特征值的平方根。