马氏距离

一、简介

马氏距离是基于样本分布的一种距离。物理意义就是在规范化的主成分空间中的欧氏距离

所谓规范化的主成分空间就是利用主成分分析对一些数据进行主成分分解。再对所有主成分分解轴做归一化,形成新的坐标轴。由这些坐标轴张成的空间就是规范化的主成分空间

二、公式

pytorch马氏距离 spss 马氏距离_机器学习

最后的公式从右往左看,中心化->旋转->缩放->求欧氏距离

特征值其实就是每个主成分维度的方差,特征向量其实就是每个主成分维度投影的基底。特征向量组合起来变成变换矩阵,行代表特征向量的个数,也是基底的个数

其中 对协方差矩阵进行特征值分解即

 

                                                

pytorch马氏距离 spss 马氏距离_人工智能_02

  

 由性质 相乘等于单位阵

                                                                

pytorch马氏距离 spss 马氏距离_欧氏距离_03


三、图像描述

 

pytorch马氏距离 spss 马氏距离_欧氏距离_04

四、马氏距离的作用(基于欧式距离)

 

欧氏距离对于不同的量纲一视同仁

        例子1:在模式识别课上有个数据是学生的身高、鞋码、体重来分类性别。三个数据的单位都不一样,如果x1样本和x2的鞋码之间相差10(其他一样),x1和x3的体重相差10(其他一样),在欧式空间中就认为x1,x2的距离和x1,x3的距离是相同的,明显x1和x2的性别差异就很大。

        例子2:随机生成一个维度间相关的分布

pytorch马氏距离 spss 马氏距离_人工智能_05

pytorch马氏距离 spss 马氏距离_欧氏距离_06

归一化后的欧氏距离考虑方差的影响

  • 举个例子:一个样本点分别到两个类分布中心的距离相同(欧式),可以通过观察方差分布来分类。
  • 判断两个点哪一个是该类的例子:欧氏距离对于方差视而不见,即使中心化之后两个点到中心的相对距离的互相关系(谁近谁远)是不会改变的。
    如上图(模拟某一个类别的两个属性值的分布),两个点到其维度中心的距离都相同,但是明显左侧的红点不属于这一类。但是仅计算测试样本(红,黄两点)与样本中心的欧式距离来判断,这两个点会被分为同一类。
  • 所以要本质上解决这个问题,就要针对主成分分析中主成分来进行标准化

五.马氏距离的升华——向量空间按照主成分旋转后的欧氏距离

        主成分分析:找到主成分方向(方差大的维度),将整个样本空间按照主成分方向旋转,让主成分方向作为新的轴,让维度之间尽可能互相独立。

        马氏距离:在主成分空间中,样本到原点的欧式距离(因为PCA的时候已经中心化数据了,所以该类别样本的中心就是原点)

计算步骤:

  1. 找出主成分方向:中心化后的数据求协方差矩阵,经过特征值分解找出排序后的特征值矩阵U
  2. U矩阵作用于数据矩阵,旋转空间
  3. 新数据空间标准化,减去均值除以标准差,标准化后,让维度同分布,独立
  4. 计算新坐标的欧氏距离  注意: 此时原点是类中心

                                   

pytorch马氏距离 spss 马氏距离_pytorch马氏距离_07