基於距離的數學計算方法

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

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.51)

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

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

結果:

D =

    2.0000    2.0000    2.8284

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)兩兩間的夾角餘弦

X = [1 0 ; 1 1.732 ; -1 0]

D = 1- pdist(X, 'cosine')  % Matlab中的pdist(X, 'cosine')得到的是1減夾角餘弦的值

結果:

D =    0.5000   -1.0000   -0.5000

發佈了33 篇原創文章 · 獲贊 10 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章