1. 程式人生 > >常用幾種距離的標識

常用幾種距離的標識

曼哈頓距離(Manhattan Distance)

顧名思義,在曼哈頓街區要從一個十字路口開車到另一個十字路口,駕駛距離顯然不是兩點間的直線距離。這個實際駕駛距離就是“曼哈頓距離”。曼哈頓距離也稱為“城市街區距離”(City Block distance)。

這裡寫圖片描述

  • 二維平面兩點a(x1,y1)與b(x2,y2)間的曼哈頓距離:
    d12=|x1x2|+|y1y2|

  • n維空間點a(x11,x12,…,x1n)與b(x21,x22,…,x2n)的曼哈頓距離:
    d12=k=1n|x1kx2k|

  • Matlab計算曼哈頓距離:
X=[1 1;2 2;3 3;4 4];
d=pdist(X,'cityblock')
d= 2     4     6     2     4     2

歐氏距離(Euclidean Distance)

歐氏距離是最容易直觀理解的距離度量方法,我們小學、初中和高中接觸到的兩個點在空間中的距離一般都是指歐氏距離。

這裡寫圖片描述

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

    d12=(x1x2)2+(y1y2)2

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

    d12=(x1x2)2+(y1y2)2+(x1z2)2

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

    d12=k=1n(x1kx2k)2

  • Matlab計算歐氏距離:
    Matlab計算距離使用pdist函式。若X是一個m×n的矩陣,則pdist(X)將X矩陣每一行作為一個n維行向量,然後計算這m個向量兩兩間的距離。

    X=[1 1;2 2;3 3;4 4];
    d
    =pdist(X,'euclidean') d= 1.4142 2.8284 4.2426 1.4142 2.8284 1.4142

切比雪夫距離 (Chebyshev Distance)

國際象棋中,國王可以直行、橫行、斜行,所以國王走一步可以移動到相鄰8個方格中的任意一個。國王從格子(x1,y1)走到格子(x2,y2)最少需要多少步?這個距離就叫切比雪夫距離。

這裡寫圖片描述

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

d12=max(|x1x2|,|y1y2|)

n維空間點a(x11,x12,…,x1n)與b(x21,x22,…,x2n)的切比雪夫距離:

d12=maxi(|x1ix2i|)

Matlab計算切比雪夫距離:

 X=[1 1;2 2;3 3;4 4];
 d=pdist(X,'chebychev')
 d=
    1     2     3     1     2     1

標準化歐氏距離 (Standardized Euclidean Distance)

定義: 標準化歐氏距離是針對歐氏距離的缺點而作的一種改進。
引入標準化歐式距離的原因是一個數據xi的各個維度之間的尺度不一樣。
標準歐氏距離的思路:既然資料各維分量的分佈不一樣,那先將各個分量都“標準化”到均值、方差相等(做到尺度無關)。
- 尺度無關
假設向量中第一維度元素數量級是100,第二維度數量級為10,如:(500,40),(100,10),則計算歐式距離