欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【20210803】【数据分析】评价两个向量之间的相关性指标

程序员文章站 2022-07-13 08:53:47
...

        (参考:向量的相似性度量


一、问题

        求下面两个向量的相似性:

a = (x11, x12, x13, ..., x1n)

b = (x21, x22, x23, ..., x2n)

二、方法

1. 欧氏距离(Eculidean Distance)

        欧氏距离是最简单的距离计算公式,源于两点间距离。

【20210803】【数据分析】评价两个向量之间的相关性指标

         向量表示方式为:

【20210803】【数据分析】评价两个向量之间的相关性指标

 

2. 曼哈顿距离(Manhattan Distance)

        曼哈顿距离也就是实际驾驶距离,又称为 ”城市街区距离(City Block Distance)“。

【20210803】【数据分析】评价两个向量之间的相关性指标

 

3. 切比雪夫距离(Chebychev Distance)

        国王走象棋,从 (x1, y1) 到 (x2, y2) 最少需要的步数总是 max(|x2-x1|, |y2-y1|),类似这种的距离度量方法叫做切比雪夫距离。

【20210803】【数据分析】评价两个向量之间的相关性指标

         这个公式的等价形式是:

【20210803】【数据分析】评价两个向量之间的相关性指标

4. 闵可夫斯基距离(Minkowski Distance)

        闵氏距离不是一种距离,而是一组距离的定义,也就是不同的 p 参数,对应不同的距离定义。

【20210803】【数据分析】评价两个向量之间的相关性指标

         其中,p 是一个可变参数。

        当 p = 1 时,就是曼哈顿距离;

        当 p = 2 时,就是欧氏距离;

        当 p → ∞ 时,就是切比雪夫距离。

闵氏距离的缺点:

        1. 将各个分量的量纲(scale),即 ”单位“ 当作相同看待;

        2. 没有考虑各个分量的分布,期望、方差可能是不同的。

例如:

        有三个二维样本(身高,体重):a(180, 50)、b(190, 50)、c(180, 60),a 和 b 的闵氏距离 等于 a 和 c 的闵氏距离,但显然身高的 10cm 和体重的 10kg 并不等价。这就是闵氏距离处理不同量纲、不同分布样本数据的不便之处。

5. 标准化欧氏距离(Standardized Eculidean Distance)

        标准化欧氏距离就是用来解决闵氏距离中的欧氏距离的缺点,思路是:先对各个向量进行标准化:

【20210803】【数据分析】评价两个向量之间的相关性指标

        其中,m 是 X 向量的均值,s 是 X 向量的标准差。标准化之后的数据无量纲,可比性增强,但可解释性减弱。

        标准化欧氏距离定义:

【20210803】【数据分析】评价两个向量之间的相关性指标

         从形式上看,标准化欧氏距离像是一种加权欧氏距离。

 

6. 余弦相似度

        两个向量的夹角的余弦值取值范围为 [-1, 1],两个向量的夹角越小表示余弦越大,即余弦相似度越大;夹角越大表示余弦越小,即余弦相似度越小。

【20210803】【数据分析】评价两个向量之间的相关性指标

即:

【20210803】【数据分析】评价两个向量之间的相关性指标

7. 汉明距离

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

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

        Matlab 中的两个向量之间的汉明距离定义为两个向量不同的分量所占的百分比。

例如:

        X = [0, 0; 1, 0; 0, 2],汉明距离为 D = [0.5, 0.5, 1]。 

9. 杰卡德距离 & 杰卡德相似系数

10. 相关系数 & 相关距离

11. 信息熵

三、Matlab 函数实现方式

X = [a; b]; % 一行一个向量,放两行

d1 = pdist(X, 'euclidean'); % 欧氏距离
d2 = pdist(X, 'cityblock'); % 曼哈顿距离
d3 = pdist(X, 'chebychev'); % 切比雪夫距离
d4 = pdist(X, 'minkowski', 2); % 闵氏距离(以变参数为2的欧氏距离为例)
d5 = pdist(X, 'seuclidean', [0.5, 1]); % 假设两个分量的标准差为0.5和1
d6 = 1 - pdist(X, 'cosine'); % Matlab中的pdist(X, 'cosine')得到的是1减夹角余弦的值
d7 = pdist(X, 'hamming'); % 汉明距离

相关标签: 数据分析