想象你在地图上寻找从家到朋友家的最短路线,闵可夫斯基距离就像是一个万能的尺子,可以根据你的喜好量出不同类型的“远近”。
欧几里得距离
就像是直接走直线距离,就好比你和朋友住在同一平面城市,从你家门到他家门,直接穿过街道走过去的最短距离。
曼哈顿距离
则是走街区的距离,假设你只能沿着街区边缘走,不能穿房子,从一个街区的这头走到另一个街区的那头,就像是在城市里走网格状的道路,不能斜穿。
切比雪夫距离
则是看你们两个家中最远的那个房间之间的距离,就像是不管你怎么走,总要走过最长的那一段路,比如说你家的卧室离大门最远,他家也是,那这段距离就是关键。
切比雪夫距离这个概念,可以用一个更生活化的例子来解释。想象你去超市买东西,超市里的商品摆放在不同的货架上,而你需要买的是苹果、牛奶和面包,这三个商品分别位于超市的三个角落。
切比雪夫距离的思想是这样的:不论你怎样走,先去哪个货架,最终决定你这次购物旅程“最耗时”或“最远”的,其实是这三个商品中离你最远的那一个位置。比如,如果你一开始在超市入口,苹果在最左边尽头,牛奶在最右边尽头,面包在最前面深处,那么无论你怎么规划路线,从入口到这三个地方中的任何一个开始逛,最终决定你整个行程“最长步行距离”的,其实是从入口到这三个商品中最远的那个——可能是苹果或牛奶所在的尽头。
换句话说,切比雪夫距离就是考虑最坏情况下的距离,即所有可能路径中的最大单项距离。在这个场景中,它不关心你实际走过的总步数,只看你离目标物中最远的那个有多远。就像比赛跑步,不管你中间跑得多快,最终成绩由你跑得最慢的那一段决定。这就是切比雪夫距离简单而又直观的含义。
而闵可夫斯基距离就是这个万能尺子,你想怎么量就怎么量。如果尺子设定成2(欧几里得),它就是量直线;设成1(曼哈顿),它就只量街区;设成无限大,它就只关心最远的那一点(切比雪夫)。这样,你就可以根据天气、心情或实际情况选择最合适的出行方式了。
机器学习什么时候会用到曼哈顿距离呢?
曼哈顿距离在机器学习中主要用于以下几种场景:
分类与回归问题:在一些特定的分类和回归模型中,特别是在那些需要衡量特征间绝对差异更为重要的情况下,曼哈顿距离可以作为距离度量来替代欧几里得距离。例如,在特征空间中,如果各个维度的取值都是整数或变化较为离散,曼哈顿距离更能体现这种特征差异。
聚类分析:在K-means、DBSCAN等聚类算法中,曼哈顿距离可以用来确定数据点之间的相似度,尤其是在处理离散化或稀疏数据时更为有效。它有助于将数据划分到不同的簇中,尤其是在数据呈“块状”分布的特征空间中。
特征选择与降维:在评估特征对目标变量的重要性时,曼哈顿距离可以用于特征之间差异的量化,帮助识别哪些特征对模型贡献更大。在降维过程中,利用曼哈顿距离进行距离计算,有助于保留数据的局部结构,特别是对于处理高维空间中的稀疏特征。
异常检测:在检测数据集中异常点时,曼哈顿距离可以用于识别那些在多个维度上同时偏离正常范围较远的点,因为它是各维度差值绝对值的总和。
推荐系统:在某些推荐算法中,尤其是基于内容的推荐,曼哈顿距离可以用来衡量用户偏好或项目特征之间的相似度,因为它能够容忍不同特征上独立的较大偏差,适合处理离散特征的匹配。
图像处理:在图像分割或特征提取中,尤其是在处理像素级操作时,曼哈顿距离因其计算效率和对离散数据的友好性,有时会被用作度量像素间差异。
综上所述,曼哈顿距离在处理离散数据、强调各维度独立差异、需要快速计算或在特定数据结构上保持不变性等场景中,是机器学习中一个非常有用的工具。
说的太抽象了,我无法直观的感受
想象一下,你正在规划在一座方格状布局的城市(如纽约曼哈顿)中旅行的路线。城市中的道路严格按照东西向和南北向排列,不允许斜着穿越街区。现在你要从A点出发,到达B点。
欧几里得距离就像是你直接飞过去,无视街道,直线到达B点的最短距离。
而曼哈顿距离则是你必须沿着街道走的实际行走距离,只能向北、南、东、西四个方向移动,直到到达目的地。
在机器学习中,如果我们的数据像是分布在这样的“城市”中,每个特征(比如收入、年龄、教育水平等)就像是一个街区,数据点(人或事件)则位于这些街区的交叉口。当我们想要比较两个数据点的相似度时,使用曼哈顿距离意味着我们关注的是每个特征上差异的直接累加,而不是考虑它们组合后的整体差异。
例如,建立一个电影推荐系统,如果用户对电影的评分是基于几个维度(比如剧情、视觉效果、演员表现等)的评分,曼哈顿距离可以帮助我们找到在各个维度上与用户偏好最接近的其他用户或电影。即使某个电影在某一方面评分差距很大(比如视觉效果),但只要其他方面接近,总体上仍可能被看作是相似的,因为曼哈顿距离更重视每一方面的独立差异累加。
这样的场景下,曼哈顿距离提供了一种更实际、分项考量的视角,使得机器学习模型能够理解和区分数据点间的差异,并据此做出决策,比如推荐相似度高的电影给用户。
继续简化
让我们尝试用更简单的语言和一个具体的例子来解释这个概念。
想象你有两个朋友,我们称他们为小明和小红,我们想看看他们俩在某些方面的相似程度如何。我们将考虑的方面有三个“街区”,分别是他们的年龄、月收入和受教育年数。
小明的情况是:年龄25岁,月收入8000元,受教育16年。
小红的情况是:年龄27岁,月收入7500元,受教育15年。
如果我们要用曼哈顿距离来衡量他们在这三个方面上的“距离”或差异,我们不会去计算他们所有差异的综合影响(比如年龄和收入的差距乘积加上教育年的差距),而是直接计算每个方面上的差距,然后把它们相加起来。
在年龄上,他们相差2岁。
在月收入上,他们相差500元。
在受教育年数上,他们相差1年。
所以,用曼哈顿距离来衡量的话,我们就是简单地把这些差异加起来:2岁 + 500元 + 1年。这个总和就是他们在这些特征上的“曼哈顿距离”,它告诉我们,如果把每个特征看作一个独立的街区,小明和小红在这些街区上的“行走距离”总共是多少。
总结来说,曼哈顿距离在机器学习中,尤其是在比较两个对象的相似性时,更侧重于看每个特征(街区)上单独的差异,然后直接把这些差异累加起来得到总距离,而不是考虑所有特征差异的某种组合效应。这种方式适用于那些特征之间相对独立,且每个特征差异同样重要的情况。