在機器學習過程中,我們經常需要知道個體(樣本)之間的差異大小,進而評價個體的相似性和類別,特征空間中兩個樣本(點)之間的距離就是兩個樣本相似性的一種反映。常見的分類和聚類算法,如K近鄰、K均值(K-means)、層次聚類等等都會選擇一種距離或相似性的度量方法。根據數據特性的不同,可以采用不同的度量方法。一般而言,定義一個函數 \(dist(x,y)\), 若它是一個“距離度量”(distance measure),則需要滿足一些基本性質:
- 非負性:\(dist(x_i,x_j)\ge0\);
- 同一性:\(dist(x_i,x_j)=0\)
當且僅當
\(x_i=x_j\); - 對稱性:\(dist(x_i,x_j)=dist(x_j,x_i)\)
- 直遞性:\(dist(x_i,x_j)\le dist(x_i,x_k)+dist(x_k,x_j)\).
注:直遞性常被稱為“三角不等式”
機器學習中的常見距離公式
1. 閔可夫斯基距離(Minkowski distance)
閔可夫斯基距離不是一種距離,而是一組距離的定義,是對多個距離度量公式的概括性的表述。
給定樣本\(\pmb x_i=(x_{i1};x_{i2};\dots;x_{in})\)與\(\pmb x_j=(x_{j1};x_{j2};\dots;x_{jn})\),\(\pmb x \in R^n\)是\(n\)維向量。
則閔可夫斯基距離可定義為:
注:上式即為\(\pmb x_i - \pmb x_j\)的\(L_p\)范數\(||\pmb x_i - \pmb x_j||_p\)
對\(p\ge1\),公式(1.1)顯然滿足距離度量的基本性質.
當\(p=2\)時,閔可夫斯基距離即歐氏距離(Euclidean distance) :
當\(p=1\)時,閔可夫斯基距離即曼哈頓距離(Manhattan distance),亦稱“街區距離”(city block distance):
當\(p\rightarrow \infty\)時,閔可夫斯基距離即切比雪夫距離(Chebyshev distance):
無圖無真相!!!
如圖1所示,假設乘車從\(\pmb{x}_i\)點到\(\pmb{x}_j\)點(左下角和右上角兩個黑色的點),圖中灰色表示街道,白色方框表示建築物。則綠色的斜線表示歐式距離。其他三條折線表示了曼哈頓距離,顯然這三條折線的長度是相等的。

圖1 歐氏距離與曼哈頓距離
從計算公式可以知道,坐標平面上到原點的歐氏距離(\(p=2\))相等的所有點組成的形狀是一個圓,比如距離為1,則為一個半徑為1的圓。類似的當\(p=1\)時,形狀為菱形,\(p\)趨於\(\infty\)時,形狀是正方形,如圖2:

圖2 p取值與距離
那么,當\(p\)取其他數值的時候呢?它是下面(圖3)這樣子噠:

圖3 p的其他取值
注意,當\(p \lt 1\)時,閔可夫斯基距離不再滿足直遞性(即三角不等式),舉個簡單的反例:假設點\(\pmb{x}_i=(0,0)\),\(\pmb{x}_j=(1,1)\),和另一點\(\pmb{x}_u=(0,1)\),當\(p\lt 1\)時,帶入公式(1.1)計算\(\pmb{x}_i=(0,0)\)到\(\pmb{x}_j=(1,1)\)的距離等於\((1+1)^{1/p} \gt 2\), 而\(\pmb{x}_u=(0,1)\)到這兩個點的距離都是1。
閔可夫斯基距離比較直觀,但是它與數據的分布無關,具有一定的局限性,如果數據某一維度的值遠遠大於另一個維度的值,這個距離公式就會過度放大幅值較大維度的作用。所以,在實際應用計算距離之前,我們通常需要對數據進行標准化。
參考來源:
1)https://www.cnblogs.com/daniel-D/p/3244718.html
2)機器學習 - 周志華