回忆下前四篇的内容,有没有发现一个共同点?没错,无论是用于统计聚类的K-means算法,还是拟合直线的最小二乘法,或是简单高效的KNN分类算法都提到了距离的计算。可见“距离”在机器学习中还是一个无法绕开的概念,本次我们就来谈谈机器学习中常用的距离度量方法。

什么是距离?

既然要讲“距离”,我们首先要知道,在机器学习中什么叫做距离。距离简单来说就是评价两个事物之间的在时间或空间上间隔的长度就像下面这样:

郑州至北京710km;

郑州至开封65km;

但是在机器学习领域中可有点不同,首先就是机器学习里的距离是抽象的但却是一个有方向的向量。在机器学习中,所谓的距离是用来度量两个样本的相似程度的概念。我们常在超市里听到这样一句话“这种苹果的味道和那种差距不大,但是却贵得多”。那么在这句话里,“两种苹果”就是两个样本,“味道和价格”就是两个要比较的特征,“差距不大”代表着相似,也就是在“味道”这个特征下两个样本的距离近。“贵得多”代表着在“价格”这个特征下,两个样本的距离远,相似度低。

那么这篇文章的目的就是介绍这种抽象的距离尺度需要用什么方法去衡量。

欧氏距离

欧氏距离是我们接触比较多的一种距离度量方式。没错!我们从初中开始就在在课堂上学到了!它表示在n维空间两个点之间的真实距离。在二维空间的欧式距离就是两点之间的直线距离,如图1所示:A,B两点的距离:

推广到n维空间中的两点A(x11 ,x12, …x1n),B(x21,x22,….x2n)

欧氏距离虽然很有用,但也存在着缺点,它忽略了样本不同指标之间的差异,在实际问题中不能满足要求。例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区分个体有着不同的重要性。为此,人们提出了标准化欧氏距离。

标准化欧氏距离的思路是:既然样本各个维度分布不一样,那么可以先将样本集进行“标准化”,映射到数学期望为0,方差为1的正态分布。假设样本集X的均值为m,方差为s,则标准化后的值为:

因此标准化欧氏距离的公式为:

如果把方差的导数看作权重,标准化欧氏距离也可以称为:加权欧氏距离。

欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;

曼哈顿距离

曼哈顿距离又称城市街区距离,它的命名原因是从规划为方型建筑区块的城市(如曼哈顿)间,最短的行车路径而来。我们把方型街道简化到二维平面上,如果要从A点开车到B点,由于只能沿着街道行驶,因此A点到B点的曼哈顿距离便为图2中A到B的折线长度。

西班牙巴塞罗那的街道

图2 曼哈顿距离

二维平面两点A(x1,y1)与B(x2,y2)间的曼哈顿距离:

推广到n维空间点A(x11,x12,…,x1n)与B(x21,x22,…,x2n)的曼哈顿距离:

曼哈顿距离在一些寻路算法如A*算法常常作为度量距离的方法,比如在担保圈分析中,就可以尝试基于曼哈顿距离判断两个实体之间的关联是否紧密。要注意的是,曼哈顿距离依赖坐标系的转度,而非系统在坐标系的平移或映射。

切比雪夫距离

前面提到的欧氏距离只能直线走,而曼哈顿距离只能沿着划定的格子边缘走。而切比雪夫中说的距离则是两者的结合体(即可直线走,也可沿着格子走)。二个点之间的切比雪夫距离定义是其各坐标数值差绝对值的最大值。

二维平面两点A(x1,y1)与B(x2,y2)间的切尔雪夫距离:

推广到n维空间点A(x11,x12,…,x1n)与B(x21,x22,…,x2n)的切尔雪夫距离:

大家玩过国际象棋吗?在国际象棋中,国王只能往周围的8格中走一步,那么如果要从棋盘中(1,E)格走到(3,C)格最少需要走几步?最少步数如下:

这个距离便是切而雪夫距离。

在上面的距离介绍中可以看出该距离计算适用的场景。像曼哈顿距离一样,需要将空间划分成网格,然后以网格为单位来进行度量。但此距离中,允许你走8个方向。而曼哈顿距离中,只允许你走4个方向。在仓储物流中的数据分析工作便可以依赖切尔雪夫距离。

汉明距离

相对于上面的三种距离,汉明距离非常简单:即通过比较向量每一位是否相同,若不同则汉明距离加1,这样得到汉明距离。向量相似度越高,对应的汉明距离越小。如10001001和10110001有3位不同,则这两列数组的汉明距离为三。我们把上面的二进制数作为两个样本的指纹,比如前两位表示样本的特征1,第三到第五表示特征2,最后三个表示特征3……这样子就可以用汉明距离来比较两个样本的距离。在机器学习场景中,汉明距离可以广泛用于各类DNA序列分类研究,通常把一个或多个碱基对当作一类特征,用于评价两个DNA序列的差异性,实现DNA片段的功能预测。

求两个点的欧氏距离_数据智能系列(五)| 距离的秘密相关推荐

  1. 计算两个向量间的欧氏距离_用Numpy实现常见距离度量

    设 和 为两个向量,求它们之间的距离. 这里用Numpy实现,设 和 为 ndarray <numpy.ndarray>,它们的shape都是(N,) 为所求的距离,是个浮点数( floa ...

  2. 傅里叶描述子欧氏距离_机器学习中的各种距离

    让我们一起 改变智造 hi,大家国庆都玩的怎么样啊? 是不是很诧异我现在才问候国庆的事情? 因为我今天才刚刚上班(呵呵,怎么可能) 加班加到"秃"起~ 即使这样我也要继续伴随大家去 ...

  3. bat 两个文本字符替换_数据人必会的Excel|掌握这些文本函数,让你的工作如鱼得水...

    点击上方 蓝字 关注我们 公众号数据万花筒文章配合视频一起学习效果更佳哦,搜索视频号数据万花筒,更多学习视频火热更新中. 除了数值型数据,分析师在分析过程中常常也会接触文本类型的数据,这时候就该文本函 ...

  4. python 求两条曲线的交点_这几种问法都是考察张角问题,高考数学圆锥曲线的焦点弦张角定理...

    在高考数学的圆锥曲线中,有很多神奇的问法,比如 (1)在x轴上是否存在点Q,使得∠PQM+∠PQN=180° (2)在x轴上是否存在一点B使得∠ABM=∠ABN: (3)在x轴上是否存在定点Q,使得直 ...

  5. python求两数之和的命令_数学建模:科学计算Python2小时-Python基础

    这一部分主要面向数模活动中的python基础知识进行讨论 作者 系列文章(科学计算Python2小时)目录:李似:科学计算Python2小时-前言与目录​zhuanlan.zhihu.com 首先要说 ...

  6. three.js 求两个vector3 的夹角_初中数学:动点问题-阿氏圆最值模型(2),求PD-1/2PC的最大值...

    动点问题中的阿氏圆最值模型是初中数学的难点,优秀的学生是必须要会的,这类题目的解题方法就在于构造比例线段,然后求最值. 阿氏圆最小值的解法在这里:初中数学:动点问题-阿氏圆最值模型(1) 阿氏圆最值模 ...

  7. 用python求两个人的平均身高_黄哥Python:分治算法(Divide-and-Conquer)

    分治算法(Divide-and-Conquer) 在计算机科学中,分而治之(简称分治法)是基于多分支递归的算法设计范例.分而治之算法的工作原理是将问题递归分解为两个或多个相同或相关类型的子问题,直到这 ...

  8. 用python求两个人的平均身高_大学python题 求大佬解答!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 7-4 计算指数 (5 分) 真的没骗你,这道才是简单题 -- 对任意给定的不超过10的正整数n,要求你输出2n.不难吧? 输入格式: 输入在一行中给出一 ...

  9. python求两条直线的交点_如何计算两条线的交点?

    不能袖手旁观 所以我们有线性系统:A1 * x + B1 * y = C1 A2 * x + B2 * y = C2 让我们用克莱默法则来做,这样就可以在行列式中找到解:x = Dx/D y = Dy ...

最新文章

  1. Page.IsValid的问题
  2. 【二维树状数组】See you~
  3. 医院挂号设计源代码_锡盟蒙医医院设立智慧导诊系统服务患者
  4. 怎么选择数据服务器?请记住这五条
  5. 《超越平凡的平面设计: 版式设计原理与应用》—色轮
  6. ruby hash方法_Ruby中带有示例的Hash.flatten方法
  7. Marching Cubes
  8. oracle+执行变量语句,ORACLE sql 语句的执行过程(SQL性能调整)
  9. mysql之desc 与asc
  10. 《高效能程序员的修炼》——程序员的八种境界
  11. c语言自学的视频,最适合自学的C语言自学视频
  12. Java复习题及答案
  13. python覆盖写文件_python写文件时覆盖原来的代码方法实例
  14. tf.flags.DEFINE解释
  15. MacOS 系统盘瘦身,对/System/Library开刀
  16. 给腾讯云主机上配置SFTP
  17. linux常用命令语句(全)
  18. S3C2440时钟体系 - SOC裸机
  19. java 1st 2nd 3rd 4th_1st怎么输入excel “st”在1的右上角 EXCEL excel 1st 2nd 3rd 4th 怎么设置上标 如何改为上标...
  20. linux网络配置命令笔记,Linux笔记(九) 网络命令

热门文章

  1. ssm访问html乱码_SpringMVC+jdbc和SSM整合
  2. mysql varchar 效率_由MySQL中char和varchar效率想到的
  3. centos用php上传文件,WBB - Centos下PHP无法Curl模拟Post上传文件的问题
  4. undolog 是binlog_mysql日志redo log、undo log、binlog以及作用看这篇就可以啦
  5. python格式化输出宽度对齐_python 中 字符串格式化示例,输出格式没有达到指定宽度,求帮忙!...
  6. 【每日一练 085】性能优化-实例优化(四)
  7. 2场直播丨OGG日常运维及故障处理、云原生数据仓库AnalyticDB
  8. 云端之战:Google Cloud 的多云战略和甲骨文的数据库云
  9. 云小课丨SA基线检查:给云服务来一次全面“体检”
  10. Everything is Serverless,从开源框架对比说起