zoukankan      html  css  js  c++  java
  • 马氏距离 Mahalanobis Distance

    马氏距离是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧式距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的(scale-invariant),即独立于测量尺度。

    1)马氏距离的计算是建立在总体样本的基础上的,这一点可以从上述协方差矩阵的解释中可以得出,也就是说,如果拿同样的两个样本,放入两个不同的总体中,最后计算得出的两个样本间的马氏距离通常是不相同的,除非这两个总体的协方差矩阵碰巧相同;

    2)在计算马氏距离过程中,要求总体样本数大于样本的维数,否则得到的总体样本协方差矩阵逆矩阵不存在,这种情况下,用欧式距离计算即可。
    S = D1 * D1' (D1为m*n矩阵,m > n, m为特征维数,n为样本数)
    rank(S) <= n 故 S 不可逆。
    [if A=BC, then rank(A) <= min(rank(B), rank(C)).]

    3)还有一种情况,满足了条件总体样本数大于样本的维数,但是协方差矩阵的逆矩阵仍然不存在,比如三个样本点(3,4),(5,6)和(7,8),这种情况是因为这三个样本在其所处的二维空间平面内共线。这种情况下,也采用欧式距离计算。
    (均值向量为[5, 6], D1 = [-2 0 2; -2 0 2], S显然不可逆)

    4)在实际应用中“总体样本数大于样本的维数”这个条件是很容易满足的,而所有样本点出现3)中所描述的情况是很少出现的,所以在绝大多数情况下,马氏距 离是可以顺利计算的,但是马氏距离的计算是不稳定的,不稳定的来源是协方差矩阵,这也是马氏距离与欧式距离的最大差异之处。

    优点:它不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还可以排除变量之间的相关性的干扰。

    缺点:它的缺点是夸大了变化微小的变量的作用。
    ——————————————————————————————————————
    Matlab函数 d = mahal(Y,X)   ——  计算Y中每个样本到X数据集中心的马氏距离。

    即:d(I) = (Y(I,:)-mu)*inv(SIGMA)*(Y(I,:)-mu)',其中mu、SIGMA分别为X的均值和方差。

    X的行数必须大于列数(样本数多于维数)。

    ——————————————————————————————————————

    相关

    Pearson’s coefficient;Euclidean distance;

    参考:
    http://zh.wikipedia.org/wiki/%E9%A9%AC%E6%B0%8F%E8%B7%9D%E7%A6%BB
    http://rogerdhj.blog.sohu.com/39020502.html
    http://topic.csdn.net/u/20090819/15/4d4ccbe6-f186-48e6-a150-61c1f41dc4d2.html
    http://zoonek2.free.fr/UNIX/48_R/06.html
    http://www.jennessent.com/arcview/mahalanobis_description.htm
    http://www.aiaccess.net/English/Glossaries/GlosMod/e_gm_mahalanobis

  • 相关阅读:
    leetcode
    leetcode
    [Cocos2d-x + c++]Tableview使用总结
    Windows上安装huginn
    移动端性能测试工具PerfDog
    Centos7配置静态IP地址
    Loadrunner11录制手机APP脚本
    使用VirtualDub数视频时间
    Maven Windows安装和配置
    JMeter安装和配置
  • 原文地址:https://www.cnblogs.com/emanlee/p/2355743.html
Copyright © 2011-2022 走看看