- 機器學習中,我們經常會對兩個樣本之間的相似度進行度量,此時會用到各種距離公式來反映某類事物在距離上接近或者遠離的程度,K近鄰算法,K-means聚類算法也涉及到距離公式的選擇問題,今天我們就來總結一下常見的幾種距離公式,以及這些公式的Python代碼實現。
所有距離公式列表:
- 閔可夫斯基距離(Minkowski Distance)
- 歐式距離(Euclidean Distance)
- 馬氏距離(Mahalanobis Distance)
- 曼哈頓距離(Manhattan Distance)
- 切比雪夫距離(Chebyshev Distance)
- 夾角余弦(Cosine)
- 漢明距離(Hamming Distance)
- 傑卡德相似系數(Jaccard Similarity Coefficient)
一.閔可夫斯基距離(Minkowski Distance)
嚴格意義上來看,閔可夫斯基距離不是一種距離,而是一組距離的定義。
兩個n維向量A(x11,x12,...x1n)與B(x21,x22,...x2n)間的閔可夫斯基距離為:
其中P是一個變參數
- 當P=1時,就是曼哈頓距離
- 當P=2時,就是歐式距離
- 當P->∞時,就是切比雪夫距離。
因此我們根據P參數的不同,閔可夫斯基距離可以表示一類距離。
二.歐式距離(Euclidean Distance)
歐式距離即L2范數,是歐式空間兩點間的距離公式,如圖
- 平面上的兩點a(x1,y1)和b(x2,y2)間的歐式距離:
- 三維空間的兩點a(x1,y1,z1)和b(x2,y2,z2)間的歐式距離:
- 兩個n維向量A(x11,x12,...x1n)與B(x21,x22,...x2n)間的歐式距離為:
向量表示形式:
三. 馬氏距離(Mahalanobis Distance)
馬氏距離是在歐式距離上發展而來,有M個樣本向量X1 -Xm,協方差矩陣為S,均值為向量μ,向量X到μ的馬氏距離為:
向量Xi與向量xj的馬氏距離為:
若協方差矩陣是單位矩陣,則是歐式距離公式;若是對角矩陣,則為標准化歐式距離公式。
馬氏距離的優點是:與量綱無關,排除變量之間的相關性的干擾。
四.曼哈頓距離(Manhattan Distance)
曼哈頓距離即L1范數,也稱為城市街區距離。
- 二維平面兩點a(x1,y1)和b(x2,y2)間的曼哈頓距離:
- 兩個n維向量A(x11,x12,...x1n)與B(x21,x22,...x2n)間的曼哈頓距離為:
五.切比雪夫距離(Chebyshev Distance)
切比雪夫距離即范數。
- 二維平面兩點a(x1,y1)和b(x2,y2)間的切比雪夫距離:
- 兩個n維向量A(x11,x12,...x1n)與B(x21,x22,...x2n)間的切比雪夫距離為:
等價公式為:
六.夾角余弦(Cosine)
夾角余弦是用來衡量兩個向量方向上的差異,我們可以用來表示樣本向量間的差異。
- 二維空間兩個向量A(x1,y1)和B(x2,y2)間的夾角余弦公式:
- 兩個n維樣本點A(x11,x12,...x1n)與B(x21,x22,...x2n)間的相似度:
或者:
夾角余弦的取值范圍是【-1,1】。夾角余弦越大,表示兩個向量的夾角越小。當兩個向量重合時,同向,夾角余弦最大,為1,反向,夾角余弦最小,為-1.
七.漢明距離(Hamming Distance)
漢明距離是定義兩個等長的字符串s1與s2,將其中一個變成另外一個所需要的最小替換次數。例如:1111與1001之間的漢明距離為2.
八.傑卡德相似系數(Jaccard Similarity Coefficient)
傑卡德相似系數定義兩個集合A和B的交集元素在A,B集合的並集中所占的比例。是用來衡量兩個集合相似度的一種指標。
傑卡德距離:用集合中不同元素占所有元素的比例來衡量兩個集合的區分度。
參考書籍:機器學習算法原理與編程實現