機器學習中的各種距離__機器學習

來源:互聯網
上載者:User

機器學習中,經常需要計算各個樣本之間的距離,用於做分類,根據距離的遠近,將不同的樣本歸為一類;但是在目前的機器學習演算法中,距離計算方式層出不窮,那麼這篇部落客要就來梳理下目前機器學習中,常用的距離演算法。

 本文的目的就是對常用的相似性度量作一個總結。


本文目錄:

1. 歐氏距離

2. 曼哈頓距離

3. 切比雪夫距離

4. 閔可夫斯基距離

5. 標準化歐氏距離

6. 馬氏距離

7. 夾角餘弦

8. 漢明距離

9. 傑卡德距離 & 傑卡德相似係數

10. 相關係數 & 相關距離

11. 資訊熵


1. 歐氏距離(Euclidean Distance)

       歐氏距離是最易於理解的一種距離計算方法,源自歐氏空間中兩點間的距離公式。

(1)二維平面上兩點a(x1,y1)與b(x2,y2)間的歐氏距離:

 

(2)三維空間兩點a(x1,y1,z1)與b(x2,y2,z2)間的歐氏距離:

 

(3)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的歐氏距離:

 

  也可以用表示成向量運算的形式:

 

(4)Matlab計算歐氏距離

Matlab計算距離主要使用pdist函數。若X是一個M×N的矩陣,則pdist(X)將X矩陣M行的每一行作為一個N維向量,然後計算這M個向量兩兩間的距離。

例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的歐式距離

X = [0 0 ; 1 0 ; 0 2]

D = pdist(X,'euclidean')

結果:

D =

    1.0000    2.0000    2.2361

 


2. 曼哈頓距離(Manhattan Distance)

       從名字就可以猜出這種距離的計算方法了。想象你在曼哈頓要從一個十字路口開車到另外一個十字路口,駕駛距離是兩點間的直線距離嗎。顯然不是,除非你能穿越大樓。實際駕駛距離就是這個“曼哈頓距離”。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱為城市街區距離(City Block distance)

(1)二維平面兩點a(x1,y1)與b(x2,y2)間的曼哈頓距離

 

(2)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的曼哈頓距離

 

(3) Matlab計算曼哈頓距離

例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的曼哈頓距離

X = [0 0 ; 1 0 ; 0 2]

D = pdist(X, 'cityblock')

結果:

D =

     1     2     3


3. 切比雪夫距離 ( Chebyshev Distance )

       國際象棋玩過麼。國王走一步能夠移動到相鄰的8個方格中的任意一個。那麼國王從格子(x1,y1)走到格子(x2,y2)最少需要多少步。自己走走試試。你會發現最少步數總是max( | x2-x1 | , | y2-y1 | ) 步 。有一種類似的一種距離度量方法叫切比雪夫距離。

(1)二維平面兩點a(x1,y1)與b(x2,y2)間的切比雪夫距離

 

(2)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的切比雪夫距離

 

  這個公式的另一種等價形式是

 

       看不出兩個公式是等價的。提示一下:試試用放縮法和夾逼法則來證明。

(3)Matlab計算切比雪夫距離

例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的切比雪夫距離

X = [0 0 ; 1 0 ; 0 2]

D = pdist(X, 'chebychev')

結果:

D =

     1     2     2

 


4. 閔可夫斯基距離(Minkowski Distance)

閔氏距離不是一種距離,而是一組距離的定義。

(1) 閔氏距離的定義

       兩個n維變數a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的閔可夫斯基距離定義為:

 

其中p是一個變參數。

當p=1時,就是曼哈頓距離

當p=2時,就是歐氏距離

當p→∞時,就是切比雪夫距離

       根據變參數的不同,閔氏距離可以表示一類的距離。

(2)閔氏距離的缺點

  閔氏距離,包括曼哈頓距離、歐氏距離和切比雪夫距離都存在明顯的缺點。

  舉個例子:二維樣本(身高,體重),其中身高範圍是150~190,體重範圍是50~60,有三個樣本:a(180,50),b(190,50),c(180,60)。那麼a與b之間的閔氏距離(無論是曼哈頓距離、歐氏距離或切比雪夫距離)等於a與c之間的閔氏距離,但是身高的10cm真的等價於體重的10kg麼。因此用閔氏距離來衡量這些樣本間的相似性很有問題。

       簡單說來,閔氏距離的缺點主要有兩個:(1)將各個分量的量綱(scale),也就是“單位”當作相同的看待了。(2)沒有考慮各個分量的分布(期望,方差等)可能是不同的。

(3)Matlab計算閔氏距離

例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的閔氏距離(以變參數為2的歐氏距離為例)

X = [0 0 ; 1 0 ; 0 2]

D = pdist(X,'minkowski',2)

結果:

D =

    1.0000    2.0000    2.2361



5. 標準化歐氏距離 (Standardized Euclidean distance )

(1)標準歐氏距離的定義

  標準化歐氏距離是針對簡單歐氏距離的缺點而作的一種改進方案。標準歐氏距離的思路:既然資料各維分量的分布不一樣,好吧。那我先將各個分量都“標準化”到均值、方差相等吧。均值和方差標準化到多少呢。這裡先複習點統計學知識吧,假設樣本集X的均值(mean)為m,標準差(standard deviation)為s,那麼X的“標準化變數”表示為:

  而且標準化變數的數學期望為0,方差為1。因此樣本集的標準化過程(standardization)用公式描述就是:

  標準化後的值 =  ( 標準化前的值  - 分量的均值 ) /分量的標準差

  經過簡單的推導就可以得到兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的標準化歐氏距離的公式:

  如果將方差的倒數看成是一個權重,這個公式可以看成是一種加權歐氏距離(Weighted Euclidean distance)

(2)Matlab計算標準化歐氏距離

例子:計算向量(0,0)、(1,0)、(0,2)兩兩間的標準化歐氏距離 (假設兩個分量的標準差分別為0.5和1)

X = [0 0 ; 1 0 ; 0 2]

D = pdist(X, 'seuclidean',[0.5,1])

結果:

D =

    2.0000    2.0000    2.8284

 


6. 馬氏距離(Mahalanobis Distance)

(1)馬氏距離定義

       有M個樣本向量X1~Xm,共變數矩陣記為S,均值記為向量μ,則其中樣本向量X到u的馬氏距離表示為:

 

       而其中向量Xi與Xj之間的馬氏距離定義為:

       若共變數矩陣是單位矩陣(各個樣本向量之間獨立同分布),則公式就成了:

       也就是歐氏距離了。

  若共變數矩陣是對角矩陣,公式變成了標準化歐氏距離。

(2)馬氏距離的優缺點:量綱無關,排除變數之間的相關性的幹擾。

(3) Matlab計算(1 2),( 1 3),( 2 2),( 3 1)兩兩之間的馬氏距離

X = [1 2; 1 3; 2 2; 3 1]

Y = pdist(X,'mahalanobis')

 

結果:

Y =

    2.3452    2.0000    2.3452    1.2247    2.4495    1.2247

 


7. 夾角餘弦(Cosine)

       有沒有搞錯,又不是學幾何,怎麼扯到夾角餘弦了。各位看官稍安勿躁。幾何中夾角餘弦可用來衡量兩個向量方向的差異,機器學習中借用這一概念來衡量樣本向量之間的差異。

(1)在二維空間中向量A(x1,y1)與向量B(x2,y2)的夾角餘弦公式:

(2) 兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夾角餘弦

       類似的,對於兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用類似於夾角餘弦的概念來衡量它們間的相似程度。

  即:

       夾角餘弦取值範圍為[-1,1]。夾角餘弦越大表示兩個向量的夾角越小,夾角餘弦越小表示兩向量的夾角越大。當兩個向量的方向重合時夾角餘弦取最大值1,當兩個向量的方向完全相反夾角餘弦取最小值-1。

       夾角餘弦的具體應用可以參閱參考文獻[1]。

(3)Matlab計算夾角餘弦

例子:計算(1,0)、( 1,1.732)、( -1,0)兩兩間的夾角餘弦

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.