10种距离和相似性度量

阅读原文

相似性度量与距离

分类时常需要估算不同样本之间的 相似性度量 (Similarity Measurement),这时通常采用的方法就是计算样本间的 “距离” (Distance)。采用什么方法计算距离很讲究,甚至关系到分类的正确与否。

1. 欧几里得距离 Euclidean Distance

两点形成的 直线的距离

欧氏距离
X = [0, 0; 1, 0; 0, 2]; % A,B,C 三点距离比较顺序 (A,B) (A,C) (B,C) 
D = pdist(X, 'euclidean'); % 1.0000    2.0000    2.2361

2. 曼哈顿距离 Manhattan/Cityblock Distance

两点所形成的线段 对轴产生的投影的距离总和

城市街区距离。

坐标(x1, y1)的点 P1 与坐标(x2, y2)的点 P2 的曼哈顿距离为:

曼哈顿距离
X = [0, 0; 1, 0; 0, 2]; % A,B,C 三点距离比较顺序 (A,B) (A,C) (B,C) 
D = pdist(X, 'cityblock'); % 1     2     3

3. 切比雪夫距离 Chebyshev Distance

两点的 各坐标数值差的最大值

maximum coordinate difference 最大的坐标轴差异。

(x1,y1) 和 (x2,y2) 的切比雪夫距离为 max(|x2-x1|,|y2-y1|)

切比雪夫距离
X = [0, 0; 1, 0; 0, 2]; % A,B,C 三点距离比较顺序 (A,B) (A,C) (B,C) 
D = pdist(X, 'chebychev'); % 1     2     2

4. 闵可夫斯基距离 Minkowski Distance

闵氏距离不是一种距离,而是一组距离的定义。

欧式距离和曼哈顿距离的推广,p 是可变参数。

闵氏距离

其中 p 是可变参数。

  • 当 p = 1 时,曼哈顿距离
  • 当 p = 2 时,欧氏距离
  • 当 p→∞ 时,切比雪夫距离
X = [0, 0; 1, 0; 0, 2]; % A,B,C 三点距离比较顺序 (A,B) (A,C) (B,C) 
D = pdist(X, 'minkowski');       % 默认p=2,为欧式距离
D1 = pdist(X, 'minkowski', 1);   % p=1,曼哈顿距离
D2 = pdist(X, 'minkowski', 2);   % p=2,欧式距离
D3 = pdist(X, 'minkowski', 3);   % p=3,闵3距离
D99 = pdist(X, 'minkowski', 99); % p=99,闵99距离
disp(D);                         % 1.0000    2.0000    2.2361
disp(D1);                        % 1         2         3
disp(D2);                        % 1.0000    2.0000    2.2361
disp(D3);                        % 1.0000    2.0000    2.0801
disp(D99);                       % 1         2         2  (接近切比雪夫)

5. 标准化欧氏距离 Standardized Euclidean distance

标准化欧氏距离先将 各个分量 都 “标准化” 到均值、方差相等
因为欧式距离中不同分量可能是不同的量纲,不能“相同看待”(闵式距离的缺点)

解决 各分量的 数据量纲差别大的问题,类比过拟合。

分量标准化,m 均值,s 标准差

标准化公式

两个 n 维向量:a(x11, x12, … , x1n) 与 b(x21, x22, … , x2n)

标准化欧氏距离

公式解释:
k = 1,x11, x21 这组分量求出 m1, s1,然后用标准化公式得到 第1维 的标准化向量;
k = 2,x12, x22 这组分量求出 m2, s2,然后用标准化公式得到 第2维 的标准化向量;
相当于,把各个分量的值都限制在 [-1, 1]。

标准化后,各分量的期望和方差都相同,m = 0,s = 1。

X = [0, 0; 1, 0; 0, 2]; % A,B,C 三点距离比较顺序 (A,B) (A,C) (B,C) 
D = pdist(X, 'seuclidean');                % 默认采用 实际标准差
D1 = pdist(X, 'seuclidean', [0.5, 1]);     % 自定义标准差
D2 = pdist(X, 'seuclidean', std(X, 0, 1)); % 使自定义标准差 = 实际标准差
disp(D)  % 1.7321    1.7321    2.4495
disp(D1) % 2.0000    2.0000    2.8284
disp(D2) % 1.7321    1.7321    2.4495

6. 马哈拉诺比斯距离 Mahalanobis Distance

马氏距离 表示数据的 协方差距离,其考虑到各种特性之间的联系

协方差,排除变量之间的相关性干扰。

设 M 个样本向量 X1 ~ Xm,协方差矩阵记为 S,均值记为向量 μ。
则其中样本向量 X 到 μ 的马氏距离为:

X 到 μ 的马氏距离

其中向量 Xi 与 Xj 间的马氏距离为:

Xi 与 Xj 间的马氏距离

若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了:

S = 1

即为欧氏距离。

若协方差矩阵是 对角矩阵,公式变成了标准化欧氏距离。

X = [1 2; 1 3; 2 2; 3 1]; % A,B,C,D四点,(A,B)(A,C)(A,D)(B,C)(B,D)(C,D)
D = pdist(X,'mahalanobis'); % 2.3452    2.0000    2.3452    1.2247    2.4495    1.2247

7. 夹角余弦

几何中夹角余弦可用来衡量 两个向量方向的差异
机器学习中借用这一概念来衡量样本向量之间的差异。

向量方向差异:[-1, 1]

① 二维空间中向量 A(x1,y1) 与向量 B(x2,y2) 的夹角余弦公式:

二维夹角

② n 维样本点 a(x11,x12,…,x1n) 和 b(x21,x22,…,x2n):

n 维夹角
X = [1 0; 1 1.732; -1 0]; % A,B,C三点 (A,B)(A,C)(B,C)
D = pdist(X, 'cosine'); % matlab中该函数求得结果其实是 1 - cos(θ)
disp(D);   % 0.5000    2.0000    1.5000
disp(1-D); % 0.5000   -1.0000   -0.5000 得到cos(θ)

8. 汉明距离

① 两个等长字符串 s1 与 s2 之间的 汉明距离 定义为 将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。

一个字符串 s1 变化为另一个字符串 s2 需要的最小替换次数。

应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)

② Matlab Hamming distance, percentage of coordinates that differ

X = [1 0; 1 1.732; -1 0]; % A,B,C三点 (A,B)(A,C)(B,C)
D = pdist(X, 'hamming'); % 0.5000    0.5000    1.0000

9. 杰卡德距离/杰卡德相似系数 Jaccard similarity coefficient

① 杰卡德相似系数:两个集合 A 和 B 的交集元素在 A,B 的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号 J(A,B) 表示。

杰卡德相似系数

杰卡德相似系数是 衡量两个集合相似度 的一种指标。

杰卡德相似系数:集合 ∩ / ∪

② 杰卡德距离与杰卡德相似系数相反:

杰卡德距离

杰卡德相似系数:1 - 集合 ∩ / ∪

用两个集合中不同元素占所有元素的比例衡量两个集合的区分度

③ Matlab Jaccard Distance, percentage of nonzero coordinates that differ

非零的坐标轴 数值不同 所占的比例。

X = [1 1 0; 1 -1 0; -1 1 0]; % (A,B)1/2 (A,C)1/2 (B,C)2/2
D = pdist(X, 'jaccard'); % 0.5000    0.5000    1.0000

X = [1 1 1; 1 2 1; 1 2 2]; % (A,B)1/3 (A,C)2/3 (B,C)1/3
D = pdist(X, 'jaccard'); % 0.3333    0.6667    0.3333

10. 相关系数/相关距离 Correlation Coefficient / Distance

① 相关系数的定义:

相关系数

相关系数是 衡量随机变量 X 与 Y 相关程度 的一种方法,相关系数的取值范围是[-1,1]。

相关系数的绝对值越大,则表明 X 与 Y 相关度越高。
当 X 与 Y 线性相关时,相关系数取值为 1(正线性相关)或 -1(负线性相关)

② 相关距离的定义:

相关距离
X = [1 2 3 4 ; 3 8 7 6];
C = corrcoef(X'); % 返回相关系数矩阵
% 1.0000    0.4781
% 0.4781    1.0000

D = pdist(X, 'correlation'); % 0.5219

% 0.4781就是相关系数,0.5219是相关距离
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容