1. 欧氏距离(Euclidean Distance)

欧氏距离,又称欧几里得度量,绝对距离, 是欧几里得空间中两点间“普通”(即直线)距离。

定义如下:

2. 余弦距离(余弦相似度)

余弦距离,Cosine distance, 是用两个向量的夹角的余弦来衡量向量A,B的距离,余弦相似性最常用于高维正空间。
例如在信息检索中,每个词项被赋予不同的维度,而一个文档由一个向量表示,其各个维度上的值对应于该词项在文档中出现的频率。余弦相似度因此可以给出两篇文档在其主题方面的相似度。

余弦距离关注的是向量的角度关系,不关心绝对大小,取值 [-1,1].

2. 1 余弦距离和欧氏距离的区别,联系

归一化后的欧式距离和余弦距离关系:

(1)欧氏距离体现了绝对差异,余弦距离体现方向上的相对差异。

如果分析两个用户对不同视频的偏好,更关注相对差异,需要使用余弦距离。比如用户A的观看向量(0,1),B的观看向量(1,0),这时余弦距离是很大的。
如果分析用户的活跃度,如登录的次数,时长,这时,需要使用欧氏距离。

3. KL散度

4. 马哈拉诺比斯距离

马哈拉诺比斯距离, Mahalanobis distance, 表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。

与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。 对于一个均值为 μ = ( μ 1 , μ 2 , μ 3 , … , μ p ) T {\displaystyle \mu =(\mu _{1},\mu _{2},\mu _{3},\dots ,\mu _{p})^{T}} μ=(μ1​,μ2​,μ3​,…,μp​)T,协方差矩阵为 Σ {\displaystyle \Sigma } Σ 的多变量向量 x = ( x 1 , x 2 , x 3 , … , x p ) T {\displaystyle x=(x_{1},x_{2},x_{3},\dots ,x_{p})^{T}} x=(x1​,x2​,x3​,…,xp​)T ,其马氏距离为

D M ( x ) = ( x − μ ) T Σ − 1 ( x − μ ) {\displaystyle D_{M}(x)={\sqrt {(x-\mu )^{T}\Sigma ^{-1}(x-\mu )}}} DM​(x)=(x−μ)TΣ−1(x−μ) ​

马哈拉诺比斯距离也可以定义为两个服从同一分布并且其协方差矩阵为 Σ {\displaystyle \Sigma } Σ 的随机变量 x ⃗ {\displaystyle {\vec {x}}} x 与 y ⃗ {\displaystyle {\vec {y}}} y ​ 的差异程度:

d ( x ⃗ , y ⃗ ) = ( x ⃗ − y ⃗ ) T Σ − 1 ( x ⃗ − y ⃗ ) {\displaystyle d({\vec {x}},{\vec {y}})={\sqrt {({\vec {x}}-{\vec {y}})^{T}\Sigma ^{-1}({\vec {x}}-{\vec {y}})}}} d(x ,y ​)=(x −y ​)TΣ−1(x −y ​) ​

如果协方差矩阵为单位矩阵,马哈拉诺比斯距离就简化为欧氏距离;如果协方差矩阵为对角阵,其也可称为正规化的欧氏距离。

d ( x ⃗ , y ⃗ ) = ∑ i = 1 p ( x i − y i ) 2 σ i 2 {\displaystyle d({\vec {x}},{\vec {y}})={\sqrt {\sum _{i=1}^{p}{(x_{i}-y_{i})^{2} \over \sigma _{i}^{2}}}}} d(x ,y ​)=i=1∑p​σi2​(xi​−yi​)2​ ​

其中 σ i {\displaystyle \sigma _{i}} σi​ 是 x i {\displaystyle x_{i}} xi​ 的标准差。

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

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

计算步骤:

找出主成分方向,中心化后的数据求协方差矩阵,经过特征值分解找出排序后的特征值矩阵U

U矩阵作用于数据矩阵,旋转空间

新数据空间标准化,减去均值除以标准差,标准化后,让维度同分布,独立

计算新坐标的欧氏距离

5. 实践

欧式距离和余弦距离的实现:

import numpy as npdef euclidean_distance(arr1, arr2):""""""distance = np.sqrt(np.sum((arr1-arr2)**2))return distancedef cosine_distance(arr1, arr2):"""Calculate the cosine distance between arr1 and arr2.:param arr1: np.array:param arr2: np.array:return:"""assert arr1.ndim == 1 and arr2.ndim == 1distance = np.dot(arr1, arr2)/(np.sqrt(np.sum(arr1**2)*np.sum(arr2**2)))return distancedef test():arr1 = np.array([1, 2])arr2 = np.array([4, 8])dis = cosine_distance(arr1, arr2)print(dis)print(euclidean_distance(arr1,arr2))test()

结果:

1.0
6.708203932499369

参考:

  1. 欧氏距离和余弦相似度的区别是什么?;
  2. zhihu 机器学习中的散度;
  3. 百面机器学习;
  4. wiki 余弦距离;
  5. 马哈拉诺比斯距离 Wikipedia;
  6. cnblog 马氏距离

距离度量:欧氏距离,余弦距离,KL散度,马氏距离(含python代码实现)相关推荐

  1. 马氏距离 java实现_Python实现的计算马氏距离算法示例

    本文实例讲述了Python实现的计算马氏距离算法.分享给大家供大家参考,具体如下: 我给写成函数调用了 python实现马氏距离源代码: # encoding: utf-8 from __future ...

  2. 各种距离 欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准欧氏距离、马氏距离、余弦距离、汉明距离、杰拉德距离、相关距离、信息熵...

    1. 欧氏距离(Euclidean Distance) 欧氏距离是最容易直观理解的距离度量方法,我们小学.初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离. 二维平面上点a(x1,y1)与b( ...

  3. 欧氏距离 vs 马氏距离

    欧氏距离定义: 欧氏距离( Euclidean distance)是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离. 在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是 d ...

  4. 马氏距离 vs 欧氏距离

    欧氏距离定义: 欧氏距离( Euclidean distance)是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离. 在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是  d ...

  5. 【尚未完成,不建议参考】马氏距离,汉明距离

    本博客尚未完成,不建议参考 主要参考:马氏距离实例详解_NLP新手村成员的博客-CSDN博客_马氏距离计算实例 马氏距离例题详解(全网最详细)___Wedream__的博客-CSDN博客_马氏距离公式 ...

  6. 欧式距离和马氏距离的关系(公式推导)

    欧氏距离(Euclidean Distance)与马氏距离(Mahalanobis Distance) 欧氏距离 度量样本和样本分布间的距离d(x,μ)=(x−μ)T(x−μ)\begin{align ...

  7. 曼哈顿距离,欧式距离,明式距离,切比雪夫距离以及马氏距离

    1.曼哈顿距离 曼哈顿距离又称Manhattan distance,还见到过更加形象的,叫出租车距离的.具体贴一张图,应该就能明白. 上图摘自维基百科,红蓝黄皆为曼哈顿距离,绿色为欧式距离. 2.欧式 ...

  8. 机器学习两种距离——欧式距离和马氏距离

    我们熟悉的欧氏距离虽然很有用,但也有明显的缺点.它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求.例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区 ...

  9. Mahalanobis距离(马氏距离)的“哲学”解释

    讲解教授:赵辉 (FROM : UESTC) 课程:<模式识别> 整理:PO主 基础知识: 假设空间中两点x,y,定义: 欧几里得距离, Mahalanobis距离, 不难发现,如果去掉马 ...

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

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

最新文章

  1. c语言流程图图裂代表的意义,程序流程图的意义
  2. c++头文件_51单片机C语言编程知多少:几人不知头文件,你要的干货在这里了
  3. 剑指offer:63-66记录
  4. mysql 怎样链接jdbc_jdbc链接mysql
  5. sanic set up
  6. SQL语句 分页实现
  7. 新来的妹子把几百万数据放入了内存,系统立马爆了,我不得已做到了妹子傍边,手把手教妹子...
  8. elf文件反编译C语言,ELF文件解析和反汇编
  9. 猫途鹰:中国游客旅行花费低于全球平均水平,购物消费则远超全球
  10. python下载网页上的pdf文件_利用Python把网页内容转换为pdf格式文件,批量下载到本地!...
  11. 踩坑合集(1)——虚拟机桥接模式下的连网问题
  12. java计算机毕业设计公立医院绩效考核系统MyBatis+系统+LW文档+源码+调试部署
  13. 正则表达式匹配标签及其中的内容
  14. LeetCode刷题1894-中等-找到需要补充粉笔的学生编号
  15. zzuli OJ 1088: 手机短号 (多实例)
  16. cad命令栏怎么调出来_软件CAD | 基本操作逻辑
  17. Excel 取消单元格合并,并且将空值填充
  18. Elixir - comprehensions
  19. 宇视钉钉智联门禁能否关闭测温?
  20. html一键生成海报,稿定设计如何制作海报 一键生成海报的方法

热门文章

  1. 使用CE找天龙八部基址(图解)毛头小伙制作
  2. 如何高效录制教学视频?
  3. html5 3d游戏引擎演示,HTML5、JavaScript 3D游戏引擎和框架
  4. 全国计算机java语言程序设计_2018年全国计算机等级考试二级教程:Java语言程序设计(2018年版)...
  5. 研发质量管理工作经验总结(二)----质量管理技能
  6. java-常量和变量
  7. webhub123 前端技术社区和技术交流学习网站导航
  8. Linux 内核同步(一):原子操作
  9. oracle索引管理
  10. jndi weblogic mysql_在WebLogic新建针对Oracle数据库的JNDI数据源