我们熟悉的欧氏距离虽然很有用,但也有明显的缺点。它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求。例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区分个体有着不同的重要性。因此,有时需要采用不同的距离函数。
    如果用dij表示第i个样品和第j个样品之间的距离,那么对一切i,j和k,dij应该满足如下四个条件:
①当且仅当i=j时,dij=0
②dij>0
③dij=dji(对称性)
④dij≤dik+dkj(三角不等式)
    显然,欧氏距离满足以上四个条件。满足以上条件的函数有多种,本节将要用到的马氏距离也是其中的一种。
    第i个样品与第j个样品的马氏距离dij用下式计算:
dij =(x i 一x j)'S-1(x i一xj)
     其中,x i 和x j分别为第i个和第j个样品的m个指标所组成的向量,S为样本协方差矩阵。
马氏距离有很多优点。它不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还可以排除变量之间的相关性的干扰。它的缺点是夸大了变化微小的变量的作用。

------------------------------------------------------------------------

欧氏距离定义:欧氏距离( Euclidean distance)是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。
在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是
d = sqrt((x1-x2)^+(y1-y2)^)
三维的公式是
d=sqrt(x1-x2)^+(y1-y2)^+(z1-z2)^)
推广到n维空间,欧式距离的公式是
d=sqrt( ∑(xi1-xi2)^ ) 这里i=1,2..n
xi1表示第一个点的第i维坐标,xi2表示第二个点的第i维坐标
n维欧氏空间是一个点集,它的每个点可以表示为(x(1),x(2),...x(n)),其中x(i)(i=1,2...n)是实数,称为x的第i个坐标,两个点x和y=(y(1),y(2)...y(n))之间的距离d(x,y)定义为上面的公式.
欧氏距离看作信号的相似程度。距离越近就越相似,就越容易相互干扰,误码率就越高。
--------------------------------------------------------------------------------

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

下面是关于马氏距离的计算方法(参考:http://topic.csdn.net/u/20080911/14/f4402565-3b4f-4de4-a4fa-f4c020dd1477.html )

两个样本:
His1 = {3,4,5,6}
His2 = {2,2,8,4}

它们的均值为:
U = {2.5, 3, 6.5, 5}
协方差矩阵为:
S =
| 0.25 0.50 -0.75 0.50 |
| 0.50 1.00 -1.50 1.00 |
|-0.75 -1.50 2.25 -1.50 |
| 0.50 1.00 -1.50 1.00 |
其中S(i,j)={[His1(i)-u(i)]*[His1(j)-u(j)]+[His2(i)-u(i)]*[His2(j)-u(j)]}/2

下一步就是求出逆矩阵S^(-1)
马氏距离 D=sqrt{[His1-His2] * S^(-1) * [(His1-His2)的转置列向量]}

欧氏距离(http://en.wikipedia.org/wiki/Euclidean_distance )即两项间的差是每个变量值差的平方和再平方根,目的是计算其间的整体距离即不相似性。

马氏距离(Mahalanobis distances)
1)马氏距离的计算是建立在总体样本的基础上的,这一点可以从上述协方差矩阵的解释中可以得出,也就是说,如果拿同样的两个样本,放入两个不同的总体中,最后计算得出的两个样本间的马氏距离通常是不相同的,除非这两个总体的协方差矩阵碰巧相同;
2)在计算马氏距离过程中,要求总体样本数大于样本的维数,否则得到的总体样本协方差矩阵逆矩阵不存在,这种情况下,用欧式距离来代替马氏距离,也可以理解为,如果样本数小于样本的维数,这种情况下求其中两个样本的距离,采用欧式距离计算即可。
3)还有一种情况,满足了条件总体样本数大于样本的维数,但是协方差矩阵的逆矩阵仍然不存在,比如A(3,4),B(5,6);C(7,8),这种情况是因为这三个样本在其所处的二维空间平面内共线(如果是大于二维的话,比较复杂???)。这种情况下,也采用欧式距离计算。
4)在实际应用中“总体样本数大于样本的维数”这个条件是很容易满足的,而所有样本点出现3)中所描述的情况是很少出现的,所以在绝大多数情况下,马氏距离是可以顺利计算的,但是马氏距离的计算是不稳定的,不稳定的来源是协方差矩阵,这也是马氏距离与欧式距离的最大差异之处。
我们熟悉的欧氏距离虽然很有用,但也有明显的缺点。它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求。马氏距离有很多优点。它不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关;由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还可以排除变量之间的相关性的干扰。它的缺点是夸大了变化微小的变量的作用。

马氏距离的计算:

%欧氏距离和马氏距离的计算
x=[1 2;1 3;2 2;3 1];
[mx,nx]=size(x);
Dis=ones(mx,nx);%产生全1的矩阵
C=cov(x);%计算协方差
for i=1:mxfor j=1:nxD(i,j)=((x(i,:)-x(j,:))*inv(C)*(x(i,:)-x(j,:))')^0.5;end
end
DY=pdist(x,'mahal')
y=squareform(Y)

结果:

机器学习两种距离——欧式距离和马氏距离相关推荐

  1. 距离度量方式(马氏距离,欧式距离,曼哈顿距离)

  2. 简单粗暴理解与实现机器学习之K-近邻算法(三):距离度量、欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化距离、余弦距离、汉明距离、杰卡德距离、马氏距离

    K-近邻算法 文章目录 K-近邻算法 学习目标 1.3 距离度量 1 欧式距离**(Euclidean Distance):** 2 **曼哈顿距离(Manhattan Distance):** 3 ...

  3. K邻近算法概述、欧式距离、Scikit-learn使用 、kNN邻近算法距离度量、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化欧氏距离、余弦距离、汉明距离、杰卡德距离、马氏距离

    一.K-邻近算法概述 K邻近算(K Nearest Neighbor算法,KNN算法):如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别 ...

  4. 马氏距离和欧式距离详解

    一般在机器学习模型中会涉及到衡量两个样本间的距离,如聚类.KNN,K-means等,使用的距离为欧式距离.其实,除了欧氏距离之外,还有很多的距离计算标准,本文主要介绍欧氏距离和马氏距离. 欧氏距离 最 ...

  5. 多元统计分析——欧式距离和马氏距离

    在一元的情形中,定义两个点和之间的距离: 两者作差的绝对值,我们称为欧式距离. 经过标准化的作差绝对值,我们称为统计距离,或者标准化过后的距离.其中,代表样本的标准差. 在多元的情形中,假设我们有两个 ...

  6. 直观理解--马氏距离

    首先我们很了解欧氏距离了,就是用来计算欧式空间(就是我们常见的坐标系)中两个点的距离的. 比如点 x = ( x 1 , - , x n ) x = (x_1,-,x_n) x=(x1​,-,xn​) ...

  7. 马氏距离详解(数学原理、适用场景、应用示例代码)

    看了很多关于马氏距离(Mahalanobis Distance)的介绍,但是总感觉有一些地方不太清晰,所以结合数学公式.机器学习中的应用案例,从头梳理一下. 马氏距离实际上是欧氏距离在多变量下的&qu ...

  8. 马氏距离(Mahalanobis Distance)介绍与实例

    本文介绍马氏距离(Mahalanobis Distance),通过本文,你将了解到马氏距离的含义.马氏距离与欧式距离的比较以及一个通过马氏距离进行异常检测的例子(基于Python的sklearn包). ...

  9. 浅谈马氏距离【Mahalonobis Distance】

    浅谈马氏距离[Mahalonobis Distance] 1. Introduction 2. 欧式距离对于多元数据会存在一些什么问题? 3 .什么是马氏距离 4.马氏距离背后的数学和intuitio ...

  10. 【知识学习】马氏距离 Mahalanobis Distance

    目录 1. 协方差的意义 2. 马氏距离 2.1 概述 2.2 公式 2.3 实际意义 2.4 局限性 2.4.1 协方差矩阵必须满秩[不平衡数据少数类一般都不是] 2.4.2 不能处理非线性流形(m ...

最新文章

  1. 昨日参加Symantec公司用户大会
  2. linux 音频文件播放文件管理,linux dsp 播放音频文件
  3. 设计模式之二抽象工厂设计模式
  4. 纯js实现瀑布流布局及ajax动态新增数据
  5. [Unity][FlowCanvas][NodeCanvas] FlowScript 控制条件延迟启动状态机:设置 First Activation
  6. 双目测距中用到的视差图和景深的关系推导----三种方法详细解
  7. Netty工作笔记0058---Netty群聊系统客户端
  8. 基本排序算法(冒泡,选择(希尔),插入,快速,归并,堆,二分查找)
  9. 学编程怎样入门?这是最有效的学习方法
  10. STM32MP157 u-boot2021.10移植
  11. 【数据库系统】考虑题4所示的日志记录,假设开始时A、B、C的值都是0 (1) 如果系统故障发生在14之后,写出系统恢复后A、B、C的值
  12. 2022低压电工培训试题模拟考试平台操作
  13. 在go mod中使用k8s.io/code-generator生成代码
  14. 如何解决CSDN写博客出现浏览器“不支持隐私模式,需用普通模式访问”的原因?
  15. flask-sqlalchemy一对多 知了传课 flask web全栈开发实战 黄勇
  16. 寻址范围、按字寻址、按字节寻址
  17. 差分近似图像导数算子之Sobel算子
  18. 《VS面向对象及可视化设计 》文本操作实例5-1
  19. 实用的latex符号
  20. 手机怎么编辑PDF签名?这个方法有掌握吗

热门文章

  1. C语言编程序输出SCHAR_MAX的,运用堆栈把十进制变换成二进制
  2. 完全复制 mysql,MySQL完全复制表结构
  3. Quadratic equation(二次剩余)2019牛客多校第九场
  4. 『设计模式』备忘录模式(memento)下象棋,我就想悔棋怎么办
  5. windows系统修改cmd窗口编码格式
  6. 深度学习在CV领域的进展以及一些由深度学习演变的新技术
  7. 嵌入式基础之----C语言
  8. 如何在win10+VS2017环境下新建一个简单的WDF示例程序
  9. linux-shell命令之mkdir(make dir)【创建目录】
  10. 玩转GIT系列之【git切换到某个tag之后提示“detached HEAD】