距离度量是有监督和无监督学习算法的基础,包括k近邻、支持向量机和k均值聚类等。距离度量的选择影响我们的机器学习结果,因此重要的是要考虑哪个指标最适合这个问题。因此,我们在决定使用哪种测量方法时应该谨慎。但在我们做出决定之前,我们需要了解距离测量的工作原理以及我们可以选择哪些测量。本文将简要介绍常用的距离度量、它们的工作原理、如何在Python中计算它们以及何时使用它们。这加深了知识和理解,改进了机器学习算法和结果。在更深入地研究不同的距离测量之前,让我们大致了解一下它们的工作原理以及如何选择正确的测量方法。距离度量用于计算给定问题空间中两个对象之间的差异,即数据集中的特征。然后可以使用该距离来确定特征之间的相似性,距离越小,特征越相似。对于距离度量,我们可以在几何距离度量和统计距离度量之间进行选择,我们应该选择哪种距离度量取决于数据的类型。要素可能具有不同的数据类型(例如,实值、布尔值、分类),并且数据可能是多维的或由地理空间数据组成。几何距离测量1.欧几里德距离欧几里德距离衡量的是两个实值向量之间的最短距离。它是最常用的距离度量,也是许多应用程序的默认距离度量,因为它的直观性、使用简单性和在许多用例中的良好效果。欧氏距离也可以称为l2范数,其计算方法为:Python代码如下fromscipy.spatialimportdistancedistance.euclidean(vector_1,vector_2)欧氏距离有两个主要缺点。首先,距离度量不适用于维度高于2D或3D空间的数据。其次,如果我们不对特征进行归一化和/或归一化,则距离可能会因不同的单位而发生偏差。2.曼哈顿距离曼哈顿距离也称为出租车或城市街区距离,因为两个实值向量之间的距离是根据一个人只能沿直角移动这一事实来计算的。此距离度量通常用于离散和二进制属性,以便可以获得真实路径。曼哈顿距离基于l1范数,计算公式为:Python代码如下fromscipy.spatialimportdistancedistance.cityblock(vector_1,vector_2)曼哈顿距离主要有两个缺点。它不如高维空间中的欧几里德距离直观,也没有显示最短的可能路径。虽然这可能很好,但我们应该意识到这不是最短的距离。3.切比雪夫距离切比雪夫距离也称为棋盘距离,因为它是两个实值向量在任意维度上的最大距离。它通常用于仓库物流,其中最长的路径决定了从一个点到另一个点所需的时间。切比雪夫距离是根据l无穷范数计算的:Python代码如下fromscipy.spatialimportdistancedistance.chebyshev(vector_1,vector_2)切比雪夫距离只有非常具体的用例,因此很少使用。4.Minkowski距离Minkowski距离Minkowski距离是上述距离度量的一般化形式。它可以用于相同的用例,同时提供高度的灵活性。我们可以选择p值来找到最合适的距离度量。闵可夫斯基距离的计算方法为:Python代码如下fromscipy.spatialimportdistancedistance.minkowski(vector_1,vector_2,p)由于闵可夫斯基距离代表了不同的距离测度,所以与它们有相同的主要缺点,例如问题在高维空间和对特征单元的依赖。此外,p值的灵活性可能是一个缺点,因为它会降低计算效率,因为需要多次计算才能找到正确的p值。5.余弦相似度和距离余弦相似度余弦相似度是方向的度量,其大小由两个向量之间的余弦值决定,忽略向量的大小。余弦相似度通常用于数据大小无关紧要的高维度,例如推荐系统或文本分析。余弦相似度可以在-1(相反方向)和1(同向)之间,计算方法是:余弦相似度常用于0到1的正空间。余弦距离为1减去余弦相似度,介于0(相似值)和1(不同值)之间。Python代码如下fromscipy.spatialimportdistancedistance.cosine(vector_1,vector_2)余弦距离的主要缺点是不考虑大小,只考虑向量的方向。因此,没有充分考虑到价值观的差异。6.HaversinedistanceHaversinedistance测量球体上两点之间的最短距离。因此,它经常用于航海,其中经度、纬度和曲率对计算有影响。半正弦距离的公式如下:其中r是球体的半径,φ和λ是经度和纬度。Python代码如下fromsklearn.metrics.pairwiseimporthaversine_distanceshaversine_distances([vector_1,vector_2])haversinedistance的主要缺点是它假设一个球体,这种情况很少见。7.汉明距离汉明距离测量两个二进制向量或字符串之间的差异。按元素比较向量并平均差异数。如果两个向量相同,则结果距离在0之间,如果两个向量完全不同,则结果距离为1。Python代码如下fromscipy.spatialimportdistancedistance.hamming(vector_1,vector_2)汉明距离有两个主要缺点。距离度量只能比较相同长度的向量,不能给出差异的大小。因此,当差异的大小很重要时,不建议使用汉明距离。统计距离度量统计距离度量可用于假设检验、拟合优度检验、分类任务或异常值检测。8.Jaccard指数和距离Jaccard指数Jaccard指数用来判断两个样本集之间的相似度。它反映了与整个数据集相比存在多少一对一匹配。Jaccard索引通常用于比较深度学习模型对二进制数据(例如图像识别)与标记数据的预测,或者比较基于单词重叠的文档中的文本模式。Jaccard距离的计算方法为:Python代码如下fromscipy.spatialimportdistancedistance.jaccard(vector_1,vector_2)Jaccardindex和distance的主要缺点是受数据大小的影响比较大,即即,每个项目的权重与数据集的大小成反比。9.Sorensen-Dice指数S?rensen-Dice指数类似于Jaccard指数,可以衡量样本集的相似性和多样性。该指数更直观,因为它计算重叠的百分比。S?rensen-Dice索引常用于图像分割和文本相似度分析。计算公式如下:Python代码如下fromscipy.spatialimportdistancedistance.dice(vector_1,vector_2)它的主要缺点也是受数据集大小的影响很大。10.DynamicTimeWarping动态时间规整是衡量两个不同长度时间序列之间距离的重要方法。可用于所有时间序列数据用例,例如语音识别或异常检测。为什么我们需要一个度量来衡量时间序列的距离?如果时间序列长度不同或失真,则上述其他距离度量无法确定良好的相似性。例如,欧氏距离计算每个时间步长的两个时间序列之间的距离。但是,如果两个时间序列形状相同,但在时间上发生了偏移,那么即使时间序列非常相似,欧式距离也会表现出很大的差异。动态时间扭曲通过使用多对一或一对多映射来最小化两个时间序列之间的总距离,从而避免了这个问题。在搜索最佳对齐时,这会导致更直观的相似性度量。通过动态规划找到一条距离最小的曲线路径,必须满足以下条件:边界条件:曲线路径起点和终点在两个时间序列的起点和终点处单调性条件:保持点的时间顺序,避免时间反向连续条件:路径转换仅限于相邻时间点,避免时间跳跃WarpingWindowCondition(可选):允许点落入给定宽度的warpingwindowSlopeCondition(可选):Limitingcurvedpathslope,以避免我们可以使用的极端运动Python中的fastdtw包:fromscipy.spatial.distanceimporteuclideanfromfastdtwimportfastdtwdistance,path=fastdtw(timeseries_1,timeseries_2,dist=euclidean)动态时间扭曲的一个主要缺点是与其他时间的距离它的计算量相对较高与其他测量方法相比。小结本文简要介绍十种常用的测距方法。本文展示了它们的工作原理、如何在Python中实现它们以及它们通常用于解决哪些问题。如果您认为我错过了重要的距离测量,请在评论中告诉我。https://avoid.overfit.cn/post/785c0b20c78749ddaf4223796040d522作者:JonteDancker
