「笔记」数据科学中常用相似性和相异性度量

写在前面

省流版:

算法分析与设计课作业,感觉之后有用于是顺便学了下。

相似性与相异性(Similarity)

相似性度量是一种衡量给定样本数据之间相互关联或相互接近的方法。相似性度量通常表示为一个数值,样本数据越相似时数值越高;类似地有相异性的定义,一种衡量给定样本数据之间相互远离的方法。

给定的距离 \(d\) 对于任意数据对象 \(p,q, r\),当且仅当满足以下四个条件时才是一个度量:

  • 非负性:\(d(p, q)\ge 0\)
  • 对称性:\(d(p, q) = d(q, p)\)
  • 三角形不等式:\(d(p, q)\le d(p, r) + d(r, q)\)
  • 当且仅当 \(p=q\) 时,\(d(p, q) = 0\)

欧几里得距离(L2 norm, Euclidean distance)

\(P = (p_1, p_2, \cdots, p_n), Q=(q_1, q_2, \cdots, q_n)\),为两个 \(n\) 维空间的点。

两点间欧几里得距离定义为:

\[d(P, Q) = ||P-Q||_0 = \sqrt{\sum_{i=1}^{n} (p_i - q_i)^2} \]

欧氏距离平方(Squared Euclidean distance)

\(P = (p_1, p_2, \cdots, p_n), Q=(q_1, q_2, \cdots, q_n)\),为两个 \(n\) 维空间的点。

两点间欧几里得距离平方定义为:

\[d(P, Q) = \left(||P-Q||_0\right)^2 = \sum_{i=1}^{n} (p_i - q_i)^2 \]

曼哈顿距离(L1 norm, City Block, Manhattan, or taxicab distance)

\(P = (p_1, p_2, \cdots, p_n), Q=(q_1, q_2, \cdots, q_n)\),为两个 \(n\) 维空间的点。

两点间曼哈顿距离定义为:

\[d(P, Q) = ||P-Q||_1 = \sum_{i=1}^{n} |p_i - q_i| \]

堪培拉距离(Canberra distance)

\(P = (p_1, p_2, \cdots, p_n), Q=(q_1, q_2, \cdots, q_n)\),为两个 \(n\) 维空间的点。

两点间堪培拉距离定义为:

\[d(P, Q) = \sum_{i=1}^{n} \dfrac{|p_i - q_i|}{|p_i + q_i|} \]

可看做是曼哈顿距离的加权版本。

切比雪夫距离(L∞ norm, Chebyshev distance, maximum distance.)

\(P = (p_1, p_2, \cdots, p_n), Q=(q_1, q_2, \cdots, q_n)\),为两个 \(n\) 维空间的点。

两点间切比雪夫距离定义为:

\[d(P, Q) = ||P-Q||_{\infin} = \max_{i=1}^{n} |p_i - q_i| \]

通过旋转坐标系 45 度可以实现曼哈顿距离与切比雪夫距离的转换。

闵可夫斯基距离(Lp norm, Minkowski distance)

\(P = (p_1, p_2, \cdots, p_n), Q=(q_1, q_2, \cdots, q_n)\),为两个 \(n\) 维空间的点,参数 \(p\) 表示闵可夫斯基度量。

两点间闵可夫斯基度量为 \(p\) 的闵可夫斯基距离定义为:

\[d(P, Q) = ||P-Q||_{p} = \left(\sum_{i=1}^{n} |p_i - q_i|^{p}\right)^{\frac{1}{p}} \]

欧几里得距离、曼哈顿距离、切比雪夫距离分别为 \(p=2, 1, \infin\) 时的特例。

余弦距离(Cosine distance)

可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。

\(\bm{P} = (p_1, p_2, \cdots, p_n), \bm{Q}=(q_1, q_2, \cdots, q_n)\),为两个 \(n\) 维空间的向量,

两向量间余弦距离定义为:

\[\begin{aligned} d(\bm{P}, \bm{Q}) =& 1 - \cos(\bm{P}, \bm{Q})\\ &1 - \dfrac{\bm{P}\cdot\bm{Q}}{||\bm{P}||\cdot || \bm{Q}||}\\ &1 - \dfrac{\sum\limits_{i=1}^{n}{p_i\cdot q_i}}{\sqrt{\sum\limits_{i=1}^{n} p_i^2}\sqrt{\sum\limits_{i=1}^{n} q_i^2}} \end{aligned}\]

相比欧氏距离,余弦距离更加注重两个向量在方向上的差异,而对绝对的数值不敏感。

皮尔逊相关距离(Pearson Correlation distance)

量化两变量之间线性、单调关系的强度。其值等于两变量协方差和标准差的商。

记多变量向量 \(X = (X_1, X_2, \cdots, X_n), Y=(Y_1, Y_2, \cdots, Y_n)\)

两多变量向量间的皮尔逊相关系数定义为:

\[r = \dfrac{\text{Cov}(X, Y)}{\sigma_X\sigma_Y} = \dfrac{\sum\limits_{i=1}^{n} (X_i - \overline{X})(Y_i - \overline{Y}) }{\sqrt{\sum\limits_{i=1}^{n} (X_i - \overline{X})^2}\sqrt{\sum\limits_{i=1}^{n} (Y_i - \overline{Y})^2}} \]

马哈拉诺比斯距离(马氏距离)(Mahalanobis distance)

表示数据的协方差距离,可以看作是欧氏距离的一种修正,修正了欧式距离中各个维度尺度不一致且相关的问题。

对于一个均值为 \(\mu = (\mu_1, \mu_2, \cdots, \mu_n)\),协方差矩阵为 \(\Sigma\) 的多变量向量 \(X = (X_1, X_2, \cdots, X_n)\),其马氏距离为:

\[D_M(X) = \sqrt{(X - \mu)^{T} \Sigma^{-1}(X - \mu)} \]

记服从同一分布并且其协方差矩阵为 \(\Sigma\) 的随机变量 \(X, Y\),其马氏距离定义为:

\[d(X, Y) = \sqrt{(X - Y)^{T} \Sigma^{-1}(X - Y)} \]

标准欧几里得距离(Standardized Euclidian distance)

\(P = (p_1, p_2, \cdots, p_n), Q=(q_1, q_2, \cdots, q_n)\),为两个 \(n\) 维空间的点。

两点间标准欧几里得距离定义为:

\[d(P, Q) = \left(||P-Q||_0\right)^2 = \sqrt{\sum_{i=1}^{n} \left(\dfrac{p_i - q_i}{\sigma_i}\right)^2} \]

卡方距离(Chi-square distance)

卡方距离一般测量 2 个特征矩阵之间的相似度。这种距离通常用于许多应用,如相似图像检索、图像纹理、特征提取等。

\(P = (p_1, p_2, \cdots, p_n), Q=(q_1, q_2, \cdots, q_n)\),为两个 \(n\) 维空间的点。

两点间卡方距离定义为:

\[d(P, Q) = \sum_{i = 1}^{n} \dfrac{(p_i - q_i)^2}{p_i + q_i} \]

詹森-香农距离(JS 散度)(Jensen-Shannon distance)

詹森-香农距离(JS 散度)计算两个概率分布之间的距离。它是基于Kullback-Leibler(KL)散度得到的对称的散度。

KL 散度同样也用来衡量两个分布之间的差异,等于一个交叉熵减去一个信息熵(交叉熵损失函数的由来)。对于两个概率分布 \(P, Q\),KL 散度定义为:

\[\begin{aligned} KL(P || Q) =& \sum p(x)\log{\dfrac{p(x)}{q(x)}}\\ KL(Q || p) =& \sum q(x)\log{\dfrac{p(x)}{q(x)}} \end{aligned}\]

为了解决 KL 散度的不对称性问题问题,在 KL 散度基础上引入了 JS 散度。对于两个概率分布 \(P, Q\),JS 散度定义为:

\[\begin{aligned} M &= \dfrac{P + Q}{2}\\ JSD(P || Q) &= \dfrac{KL(P || M) + KL(Q || M)}{2} \end{aligned}\]

编辑距离(Levenshtein distance)

衡量两个字符串之间相似程度的指标。它表示将一个字符串转换成另一个字符串所需的最少编辑操作次数。常见的编辑操作包括插入一个字符、删除一个字符、替换一个字符。

指定字符串与字符集后可通过动态规划求解。

汉明距离(Hamming distance)

衡量两个字符串之间相似程度的指标。它表示两个(相同长度)字符串对应位不同的数量。

对于两字符串 \(P=p_1p_2\cdots p_n,Q=q_1q_2\cdots q_n\),其汉明距离定义为:

\[H(P, Q) = \sum_{i=1}^{n}\left[ p_i\not= q_i \right] \]

上式中 \([P]\) 代表艾佛森括号。对于命题 \(P\),有:

\[[P] = \begin{cases} 1 &\text{If P is true}\\ 0 &\text{otherwise} \end{cases} \]

杰卡德/谷本距离(Jaccard/Tanimoto distance)

对于两集合 \(P, Q\),其杰卡德系数定义为:

\[J(P, Q) = \dfrac{|P\cap Q|}{|P\cup Q|} \]

则其杰卡德距离定义为:

\[D(P, Q) = 1 - J(P, Q) = 1 - \dfrac{|P\cap Q|}{|P\cup Q|} \]

上学期写 java 实验文本相似度分析的时候基于 n-gram 分词 + Trie + 杰卡德距离魔改了个除了跑的快但是没啥用的算法出来哈哈

索伦斯-戴斯指数(Sørensen–Dice)

对于两集合 \(P, Q\),其索伦斯-戴斯指数定义为:

\[D(P, Q) = \dfrac{2\cdot |P\cap Q|}{|P| + |Q|} \]

写在最后

参考:

posted @ 2024-03-05 11:36  Luckyblock  阅读(41)  评论(0编辑  收藏  举报