常用幾種距離的標識
曼哈頓距離(Manhattan Distance)
顧名思義,在曼哈頓街區要從一個十字路口開車到另一個十字路口,駕駛距離顯然不是兩點間的直線距離。這個實際駕駛距離就是“曼哈頓距離”。曼哈頓距離也稱為“城市街區距離”(City Block distance)。
二維平面兩點a(x1,y1)與b(x2,y2)間的曼哈頓距離:
n維空間點a(x11,x12,…,x1n)與b(x21,x22,…,x2n)的曼哈頓距離:
- 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)間的歐氏距離:
三維空間點a(x1,y1,z1)與b(x2,y2,z2)間的歐氏距離:
n維空間點a(x11,x12,…,x1n)與b(x21,x22,…,x2n)間的歐氏距離(兩個n維向量):
Matlab計算歐氏距離:
Matlab計算距離使用pdist函式。若X是一個m×n的矩陣,則pdist(X)將X矩陣每一行作為一個n維行向量,然後計算這m個向量兩兩間的距離。X=[1 1;2 2;3 3;4 4]; d
切比雪夫距離 (Chebyshev Distance)
國際象棋中,國王可以直行、橫行、斜行,所以國王走一步可以移動到相鄰8個方格中的任意一個。國王從格子(x1,y1)走到格子(x2,y2)最少需要多少步?這個距離就叫切比雪夫距離。
二維平面兩點a(x1,y1)與b(x2,y2)間的切比雪夫距離:
n維空間點a(x11,x12,…,x1n)與b(x21,x22,…,x2n)的切比雪夫距離:
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),則計算歐式距離