文章目录
距离
常见距离测度
一、欧氏距离(Euclidean Distance)
公式
欧氏距离是最常用的距离测度之一,用于计算两个点在欧几里得空间中的直线距离。对于两个n维向量x = (x1, x2, …, xn)和y = (y1, y2, …, yn),欧氏距离定义为:
d E u c l i d e a n ( x , y ) = √ ( ∑ ( x i − y i ) 2 ) dEuclidean(x, y) = √(∑(xi - yi)^2) dEuclidean(x,y)=√(∑(xi−yi)2)
例子
假设有两个点A(1, 2)和B(4, 6),则它们之间的欧氏距离为:
d E u c l i d e a n ( A , B ) = √ ( ( 1 − 4 ) 2 + ( 2 − 6 ) 2 ) = √ ( 9 + 16 ) = √ 25 = 5 dEuclidean(A, B) = √((1 - 4)^2 + (2 - 6)^2) = √(9 + 16) = √25 = 5 dEuclidean(A,B)=√((1−4)2+(2−6)2)=√(9+16)=√25=5
例题
计算点C(3, 5)和点D(7, 1)之间的欧氏距离。
答案: d E u c l i d e a n ( C , D ) = √ ( ( 3 − 7 ) 2 + ( 5 − 1 ) 2 ) = √ ( 16 + 16 ) = √ 32 = 4 √ 2 dEuclidean(C, D) = √((3 - 7)^2 + (5 - 1)^2) = √(16 + 16) = √32 = 4√2 dEuclidean(C,D)=√((3−7)2+(5−1)2)=√(16+16)=√32=4√2
二、曼哈顿距离(Manhattan Distance)
公式
曼哈顿距离,也称为城市街区距离,用于计算两个点在标准坐标系上的绝对轴距总和。对于两个n维向量x和y,曼哈顿距离定义为:
d M a n h a t t a n ( x , y ) = ∑ ∣ x i − y i ∣ dManhattan(x, y) = ∑|xi - yi| dManhattan(x,y)=∑∣xi−yi∣
例子
同样以点A(1, 2)和B(4, 6)为例,它们之间的曼哈顿距离为:
d M a n h a t t a n ( A , B ) = ∣ 1 − 4 ∣ + ∣ 2 − 6 ∣ = 3 + 4 = 7 dManhattan(A, B) = |1 - 4| + |2 - 6| = 3 + 4 = 7 dManhattan(A,B)=∣1−4∣+∣2−6∣=3+4=7
例题
计算点E(2, 3)和点F(5, 8)之间的曼哈顿距离。
答案: d M a n h a t t a n ( E , F ) = ∣ 2 − 5 ∣ + ∣ 3 − 8 ∣ = 3 + 5 = 8 dManhattan(E, F) = |2 - 5| + |3 - 8| = 3 + 5 = 8 dManhattan(E,F)=∣2−5∣+∣3−8∣=3+5=8
三、切比雪夫距离(Chebyshev Distance)
公式
切比雪夫距离是闵可夫斯基距离的一个特例,当p趋向于无穷大时,它计算的是两个点在各个维度上的最大差异。对于两个n维向量x和y,切比雪夫距离定义为:
d C h e b y s h e v ( x , y ) = m a x ( ∣ x i − y i ∣ ) dChebyshev(x, y) = max(|xi - yi|) dChebyshev(x,y)=max(∣xi−yi∣)
例子
以点A(1, 2)和B(4, 6)为例,它们之间的切比雪夫距离为:
d C h e b y s h e v ( A , B ) = m a x ( ∣ 1 − 4 ∣ , ∣ 2 − 6 ∣ ) = m a x ( 3 , 4 ) = 4 dChebyshev(A, B) = max(|1 - 4|, |2 - 6|) = max(3, 4) = 4 dChebyshev(A,B)=max(∣1−4∣,∣2−6∣)=max(3,4)=4
例题
计算点G(0, 7)和点H(4, 8)之间的切比雪夫距离。
答案: d C h e b y s h e v ( G , H ) = m a x ( ∣ 0 − 4 ∣ , ∣ 7 − 8 ∣ ) = m a x ( 4 , 1 ) = 4 dChebyshev(G, H) = max(|0 - 4|, |7 - 8|) = max(4, 1) = 4 dChebyshev(G,H)=max(∣0−4∣,∣7−8∣)=max(4,1)=4
四、余弦相似度(Cosine Similarity)
虽然余弦相似度不是传统意义上的“距离”,而是一种衡量两个向量间夹角的相似性,但它在某些场景下非常有用。
公式
余弦相似度定义为两个向量的点积除以它们模的乘积:
C o s i n e S i m i l a r i t y ( x , y ) = ( x ⋅ y ) / ( ∣ ∣ x ∣ ∣ ∗ ∣ ∣ y ∣ ∣ ) Cosine Similarity(x, y) = (x · y) / (||x|| * ||y||) CosineSimilarity(x,y)=(x⋅y)/(∣∣x∣∣∗∣∣y∣∣)
其中,x · y表示向量x和y的点积,||x||和||y||分别表示向量x和y的模。
例子
假设有两个向量x = (1, 2)和y = (3, 4),则它们之间的余弦相似度为:
C o s i n e S i m i l a r i t y ( x , y ) = ( 1 ∗ 3 + 2 ∗ 4 ) / ( √ ( 1 2 + 2 2 ) ∗ √ ( 3 2 + 4 2 ) ) = ( 3 + 8 ) / ( √ 5 ∗ √ 25 ) = 11 / ( 5 ∗ 5 ) = 11 / 25 = 0.44 Cosine Similarity(x, y) = (1*3 + 2*4) / (√(1^2 + 2^2) * √(3^2 + 4^2)) = (3 + 8) / (√5 * √25) = 11 / (5 * 5) = 11/25 = 0.44 CosineSimilarity(x,y)=(1∗3+2∗4)/(√(12+22)∗√(32+42))=(3+8)/(√5∗√25)=11/(5∗5)=11/25=0.44
例题
计算向量z = (2, 3)和w = (4, 6)之间的余弦相似度。
答案: C o s i n e S i m i l a r i t y ( z , w ) = ( 2 ∗ 4 + 3 ∗ 6 ) / ( √ ( 2 2 + 3 2 ) ∗ √ ( 4 2 + 6 2 ) ) = ( 8 + 18 ) / ( √ 13 ∗ √ 52 ) = 26 / ( √ 13 ∗ 2 √ 13 ) = 26 / ( 13 ∗ 2 ) = 1 Cosine Similarity(z, w) = (2*4 + 3*6) / (√(2^2 + 3^2) * √(4^2 + 6^2)) = (8 + 18) / (√13 * √52) = 26 / (√13 * 2√13) = 26 / (13 * 2) = 1 CosineSimilarity(z,w)=(2∗4+3∗6)/(√(22+32)∗√(42+62))=(8+18)/(√13∗√52)=26/(√13∗2√13)=26/(13∗2)=1
总结
以上介绍了几种常见的距离测度公式、例子和例题。在实际应用中,选择合适的距离测度取决于具体问题的需求和数据的特点。
马氏距离(Mahalanobis distance)
是一种用于计算不同维度数据点之间距离的度量方法,由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出。以下是对马氏距离的定义、原理、公式、例子和例题的详细阐述:
马氏距离的定义与原理
马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的一种统计距离。它表示一个点与一个分布之间的距离,或者两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。马氏距离不仅考虑了各个变量的量纲,还考虑了它们之间的相关性,因此在处理具有相关性的多维数据时更加有效。
马氏距离的原理在于它消除了不同维度间量纲的影响,并且能够处理不同变量之间的相关性。这使得马氏距离成为衡量高维数据点间距离的一种有效工具。与欧氏距离相比,马氏距离是尺度无关的(scale-invariant),即独立于测量尺度。
马氏距离的定义
马氏距离(Mahalanobis Distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的一种计算两个未知样本集相似度的方法。它表示点与一个分布之间的距离,特别适用于处理具有相关性的多维数据。
马氏距离的原理
马氏距离的原理基于统计学的协方差矩阵,它考虑了数据的协方差结构。与欧氏距离不同,马氏距离不仅考虑了各个变量的量纲,还考虑了它们之间的相关性。这使得马氏距离在处理多维数据时更加精确,特别是在变量之间存在高度相关性的情况下。
马氏距离的公式
对于一个均值为μ,协方差矩阵为Σ的多变量向量x,其马氏距离定义为:
D M ( x ) = √ ( ( x − μ ) ′ Σ − 1 ) ( x − μ ) ) D_M(x) = √((x - μ)'Σ^{-1})(x - μ)) DM(x)=√((x−μ)′Σ−1)(x−μ))
其中,x是一个n维向量,μ是均值向量,Σ是协方差矩阵,Σ^{-1}是协方差矩阵的逆矩阵,'表示转置。
如果要计算两个点x和y之间的马氏距离,公式则为:
D M ( x , y ) = √ ( ( x − y ) ′ Σ ( − 1 ) ( x − y ) ) D_M(x, y) = √((x - y)'Σ^(-1)(x - y)) DM(x,y)=√((x−y)′Σ(−1)(x−y))
马氏距离的例子
假设有一个二维数据集,其中x和y两个维度非独立同分布,存在相关性。现在有两个点A(x1, y1)和B(x2, y2),以及数据集X的均值向量μ和协方差矩阵Σ。要计算点A到数据集X的马氏距离,可以使用公式:
D M ( A , X ) = √ ( ( x 1 − μ x ) ′ Σ ( − 1 ) ( x 1 − μ x ) + ( y 1 − μ y ) ′ Σ ( − 1 ) ( y 1 − μ y ) ) D_M(A, X) = √((x1 - μ_x)'Σ^(-1)(x1 - μ_x) + (y1 - μ_y)'Σ^(-1)(y1 - μ_y)) DM(A,X)=√((x1−μx)′Σ(−1)(x1−μx)+(y1−μy)′Σ(−1)(y1−μy))
其中,μ_x和μ_y分别是数据集X在x和y维度上的均值。
马氏距离的例题
例题:
假设有一个二维数据集,包含以下三个样本点:(3, 4),(5, 6),(2, 2)。首先计算这三个样本点的均值向量μ和协方差矩阵Σ,然后计算点A(5, 2)到数据集X的马氏距离。
步骤:
-
计算均值向量μ:
μ x = ( 3 + 5 + 2 ) / 3 = 10 / 3 μ_x = (3 + 5 + 2) / 3 = 10 / 3 μx=(3+5+2)/3=10/3
μ y = ( 4 + 6 + 2 ) / 3 = 12 / 3 = 4 μ_y = (4 + 6 + 2) / 3 = 12 / 3 = 4 μy=(4+6+2)/3=12/3=4
所以,均值向量μ = (10/3, 4)。
-
计算协方差矩阵Σ:
首先计算每个样本点与均值的差:
d 1 = ( 3 − 10 / 3 , 4 − 4 ) = ( − 1 / 3 , 0 ) d1 = (3 - 10/3, 4 - 4) = (-1/3, 0) d1=(3−10/3,4−4)=(−1/3,0)
d 2 = ( 5 − 10 / 3 , 6 − 4 ) = ( 5 / 3 , 2 ) d2 = (5 - 10/3, 6 - 4) = (5/3, 2) d2=(5−10/3,6−4)=(5/3,2)
d 3 = ( 2 − 10 / 3 , 2 − 4 ) = ( − 4 / 3 , − 2 ) d3 = (2 - 10/3, 2 - 4) = (-4/3, -2) d3=(2−10/3,2−4)=(−4/3,−2)
然后计算协方差矩阵的元素:
Σ x x = ( d 1 x 2 + d 2 x 2 + d 3 x 2 ) / 3 = ( ( − 1 / 3 ) 2 + ( 5 / 3 ) 2 + ( − 4 / 3 ) 2 ) / 3 = 10 / 3 Σ_xx = (d1_x^2 + d2_x^2 + d3_x^2) / 3 = ((-1/3)^2 + (5/3)^2 + (-4/3)^2) / 3 = 10/3 Σxx=(d1x2+d2x2+d3x2)/3=((−1/3)2+(5/3)2+(−4/3)2)/3=10/3
Σ y y = ( d 1 y 2 + d 2 y 2 + d 3 y 2 ) / 3 = ( 0 2 + 2 2 + ( − 2 ) 2 ) / 3 = 8 / 3 Σ_yy = (d1_y^2 + d2_y^2 + d3_y^2) / 3 = (0^2 + 2^2 + (-2)^2) / 3 = 8/3 Σyy=(d1y2+d2y2+d3y2)/3=(02+22+(−2)2)/3=8/3
Σ x y = Σ y x = ( d 1 x ∗ d 1 y + d 2 x ∗ d 2 y + d 3 x ∗ d 3 y ) / 3 = ( ( − 1 / 3 ) ∗ 0 + ( 5 / 3 ) ∗ 2 + ( − 4 / 3 ) ∗ ( − 2 ) ) / 3 = 14 / 9 Σ_xy = Σ_yx = (d1_x * d1_y + d2_x * d2_y + d3_x * d3_y) / 3 = ((-1/3) * 0 + (5/3) * 2 + (-4/3) * (-2)) / 3 = 14/9 Σxy=Σyx=(d1x∗d1y+d2x∗d2y+d3x∗d3y)/3=((−1/3)∗0+(5/3)∗2+(−4/3)∗(−2))/3=14/9
所以,协方差矩阵Σ = [[10/3, 14/9], [14/9, 8/3]]。
-
计算协方差矩阵的逆矩阵Σ^(-1):
逆矩阵的计算可以通过多种方法完成,例如使用线性代数库。这里假设已经计算出逆矩阵为Σ^(-1)。
-
计算点A到数据集X的马氏距离:
使用公式 D M ( A , X ) = √ ( ( x 1 − μ x ) ′ Σ − 1 ( x 1 − μ x ) + ( y 1 − μ y ) ′ Σ − 1 ( y 1 − μ y ) ) D_M(A, X) = √((x1 - μ_x)'Σ^{-1}(x1 - μ_x) + (y1 - μ_y)'Σ^{-1}(y1 - μ_y)) DM(A,X)=√((x1−μx)′Σ−1(x1−μx)+(y1−μy)′Σ−1(y1−μy)),将点A的坐标和均值向量以及逆协方差矩阵代入公式,计算出马氏距离。
请注意,这里的计算步骤和结果是为了说明马氏距离的计算过程,实际计算中可能需要使用数值计算工具或编程库来完成逆矩阵的计算和马氏距离的具体计算。
Lance距离
也被称为堪培拉距离(Canberra Distance),是一种在聚类分析和其他统计学应用中常见的距离测度。以下是对Lance距离的定义、原理、公式、例子和例题的详细解释:
定义
Lance距离是由Lance和Williams最早提出的,用于确定样本间距离的一种距离测度。它被广泛应用于数理统计多元分析中的中心聚类,特别是在处理具有非负数值的数据集时表现出色。
原理
Lance距离的原理基于对数据集中各维度差异的加权处理。与欧氏距离不同,Lance距离对接近于0的值的变化非常敏感,这有助于在处理稀疏数据或具有极端值的数据集时提供更为准确的距离度量。此外,Lance距离对数据的量纲不敏感,但假定变量之间相互独立,没有考虑变量之间的相关性。
公式
在n维空间中,两个点x = (x1, x2, …, xn)和y = (y1, y2, …, yn)之间的Lance距离定义为:
d(x, y) = ∑(i=1 to n) (|xi - yi| / (|xi| + |yi|))
其中,|xi|和|yi|分别表示xi和yi的绝对值。
例子
假设有两个二维点A(1, 2)和B(4, 6),我们计算它们之间的Lance距离:
d(A, B) = (|1 - 4| / (|1| + |4|)) + (|2 - 6| / (|2| + |6|))
= (3 / 5) + (4 / 8)
= 0.6 + 0.5
= 1.1
例题
例题:
计算三维点C(1, 2, 3)和点D(5, 6, 8)之间的Lance距离。
步骤:
-
列出两个点的坐标:
- 点C(1, 2, 3)
- 点D(5, 6, 8)
-
对每个维度计算差异并求绝对值:
- |1 - 5| = 4
- |2 - 6| = 4
- |3 - 8| = 5
-
对每个维度的差异除以该维度上两点坐标绝对值的和:
- 4 / (|1| + |5|) = 4 / 6 = 0.667
- 4 / (|2| + |6|) = 4 / 8 = 0.5
- 5 / (|3| + |8|) = 5 / 11 ≈ 0.455
-
将所有维度的结果相加得到Lance距离:
- Lance距离 = 0.667 + 0.5 + 0.455 = 1.622
通过这个过程,我们计算出了点C和点D之间的Lance距离约为1.622。Lance距离的这种计算方法在处理稀疏数据或具有极端值的数据集时特别有用,因为它对接近于0的值的变化非常敏感。
归一化距离
是一种在数据分析和机器学习中常用的距离测度,它通过对原始距离进行归一化处理,使得不同量纲或不同范围的数据可以在同一尺度上进行比较。以下是对归一化距离的定义、原理、公式、例子和例题的详细解释:
定义
归一化距离是指将原始距离值按照一定的比例或方法映射到一个新的、通常是[0, 1]或[-1, 1]区间内的距离值。这种处理有助于消除量纲差异,使得不同特征或不同数据集之间的距离具有可比性。
原理
归一化距离的原理基于对数据分布的标准化处理。在实际应用中,由于不同特征或不同数据集的数据分布可能存在较大差异,直接使用原始距离进行比较可能会产生误导。通过归一化处理,可以将所有数据映射到同一尺度上,从而更准确地衡量它们之间的相似性或差异性。
公式
归一化距离的具体公式取决于所采用的归一化方法。以下是一些常见的归一化方法及其对应的公式:
-
最小-最大归一化(Min-Max Normalization):
d norm = d − d min d max − d min d_{\text{norm}} = \frac{d - d_{\text{min}}}{d_{\text{max}} - d_{\text{min}}} dnorm=dmax−dmind−dmin
其中, d d d 是原始距离值, d min d_{\text{min}} dmin 和 d max d_{\text{max}} dmax 分别是距离值的最小值和最大值。经过归一化处理后, d norm d_{\text{norm}} dnorm 的值将落在 [0, 1] 区间内。
-
Z-score 归一化(Standardization):
虽然Z-score归一化通常用于特征缩放而不是直接计算归一化距离,但它也可以用于将距离值转换为标准正态分布的形式。公式为:
d norm = d − μ d σ d d_{\text{norm}} = \frac{d - \mu_d}{\sigma_d} dnorm=σdd−μd
其中, μ d \mu_d μd 是距离值的均值, σ d \sigma_d σd 是距离值的标准差。经过Z-score归一化处理后, d norm d_{\text{norm}} dnorm 将符合标准正态分布,即均值为0,标准差为1。
例子
假设有两个人A和B,他们的身高(cm)和体重(kg)数据如下:
- A: 身高180cm,体重70kg
- B: 身高170cm,体重65kg
我们计算他们之间的欧氏距离,并进行归一化处理。
-
计算原始欧氏距离:
设身高为x,体重为y,则A和B之间的欧氏距离为:
d = ( x A − x B ) 2 + ( y A − y B ) 2 = ( 180 − 170 ) 2 + ( 70 − 65 ) 2 = 100 + 25 = 125 ≈ 11.18 d = \sqrt{(x_A - x_B)^2 + (y_A - y_B)^2} = \sqrt{(180 - 170)^2 + (70 - 65)^2} = \sqrt{100 + 25} = \sqrt{125} \approx 11.18 d=(xA−xB)2+(yA−yB)2 =(180−170)2+(70−65)2 =100+25 =125 ≈11.18
-
进行最小-最大归一化处理:
假设我们已知数据集中身高的最大值为200cm,最小值为150cm;体重的最大值为80kg,最小值为50kg。因此,身高和体重的归一化因子分别为:
身高归一化因子 = 200 − 150 200 − 150 = 1 \text{身高归一化因子} = \frac{200 - 150}{200 - 150} = 1 身高归一化因子=200−150200−150=1
体重归一化因子 = 80 − 50 80 − 50 = 1 \text{体重归一化因子} = \frac{80 - 50}{80 - 50} = 1 体重归一化因子=80−5080−50=1
由于身高和体重的归一化因子相同,我们可以直接对原始欧氏距离进行归一化处理:
d norm = d − d min d max − d min = 11.18 − 0 20 2 − 0 ≈ 0.4 d_{\text{norm}} = \frac{d - d_{\text{min}}}{d_{\text{max}} - d_{\text{min}}} = \frac{11.18 - 0}{20\sqrt{2} - 0} \approx 0.4 dnorm=dmax−dmind−dmin=202 −011.18−0≈0.4
这里我们假设了距离的最小值为0,最大值为 20 2 20\sqrt{2} 202 (即两个特征都从最小值变化到最大值时的欧氏距离)。
例题
例题:
给定三个二维点P1(1, 2)、P2(4, 6)和P3(2, 3),计算P1到P2和P1到P3的原始欧氏距离,并进行最小-最大归一化处理。
步骤:
-
计算原始欧氏距离:
- P1到P2的距离:
d 12 = ( 1 − 4 ) 2 + ( 2 − 6 ) 2 = 9 + 16 = 25 = 5 d_{12} = \sqrt{(1 - 4)^2 + (2 - 6)^2} = \sqrt{9 + 16} = \sqrt{25} = 5 d12=(1−4)2+(2−6)2 =9+16 =25 =5 - P1到P3的距离:
d 13 = ( 1 − 2 ) 2 + ( 2 − 3 ) 2 = 1 + 1 = 2 ≈ 1.41 d_{13} = \sqrt{(1 - 2)^2 + (2 - 3)^2} = \sqrt{1 + 1} = \sqrt{2} \approx 1.41 d13=(1−2)2+(2−3)2 =1+1 =2 ≈1.41
- P1到P2的距离:
-
确定距离的最小值和最大值:
- 在这个例子中,最小距离 d min d_{\text{min}} dmin 显然为0(但实际应用中可能不存在),最大距离 d max d_{\text{max}} dmax 可以通过计算所有点对之间的最大距离来得到。为了简化,我们可以假设一个足够大的值作为 d max d_{\text{max}} dmax,例如假设数据集在一个边长为10的正方形区域内,则最大距离约为 10 2 10\sqrt{2} 102 。
-
进行最小-最大归一化处理:
- P1到P2的归一化距离:
d 12 ,norm = d 12 − d min d max − d min ≈ 5 − 0 10 2 − 0 ≈ 0.35 d_{12\text{,norm}} = \frac{d_{12} - d_{\text{min}}}{d_{\text{max}} - d_{\text{min}}} \approx \frac{5 - 0}{10\sqrt{2} - 0} \approx 0.35 d12,norm=dmax−dmind12−dmin≈102 −05−0≈0.35 - P1到P3的归一化距离:
d 13 ,norm = d 13 − d min d max − d min ≈ 1.41 − 0 10 2 − 0 ≈ 0.1 d_{13\text{,norm}} = \frac{d_{13} - d_{\text{min}}}{d_{\text{max}} - d_{\text{min}}} \approx \frac{1.41 - 0}{10\sqrt{2} - 0} \approx 0.1 d13,norm=dmax−dmind13−dmin≈102 −01.41−0≈0.1
- P1到P2的归一化距离:
请注意,这里的归一化距离是一个相对值,它表示了原始距离在最大可能距离中所占的比例。在实际应用中,归一化距离的具体计算可能会因数据集和归一化方法的不同而有所差异。
参考文献
- 文心一言