演算法分析與設計 - 作業3

Rainycolor發表於2024-03-18

目錄
  • 寫在前面
  • 相似性與相異性(Similarity)
  • 歐幾里得距離(L2 norm, Euclidean distance)
  • 歐氏距離平方(Squared Euclidean distance)
  • 曼哈頓距離(L1 norm, City Block, Manhattan, or taxicab distance)
  • 堪培拉距離(Canberra distance)
  • 切比雪夫距離(L∞ norm, Chebyshev distance, maximum distance.)
  • 閔可夫斯基距離(Lp norm, Minkowski distance)
  • 餘弦距離(Cosine distance)
  • 皮爾遜相關距離(Pearson Correlation distance)
  • 馬哈拉諾比斯距離(馬氏距離)(Mahalanobis distance)
  • 標準歐幾里得距離(Standardized Euclidian distance)
  • 卡方距離(Chi-square distance)
  • 詹森-夏農距離(JS 散度)(Jensen-Shannon distance)
  • 編輯距離(Levenshtein distance)
  • 漢明距離(Hamming distance)
  • 傑卡德/谷本距離(Jaccard/Tanimoto distance)
  • 索倫斯-戴斯指數(Sørensen–Dice)
  • 寫在最後

寫在前面

省流版:

演算法分析與設計 - 作業3

演算法分析與設計課作業,感覺之後有用於是順便學了下。

相似性與相異性(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|} \]

寫在最後

參考:

  • 資料科學中使用的 17 種相似性和相異性度量
  • 17 types of similarity and dissimilarity measures used in data science.
  • 餘弦距離、歐氏距離和傑卡德相似性度量的對比分析 - ChaoSimple - 部落格園
  • 皮爾遜相關係數_百度百科
  • 馬哈拉諾比斯距離_百度百科
  • 馬氏距離(Mahalanobis Distance)
  • 卡方距離——Chi-square Distance-CSDN部落格
  • 基於卡方距離度量的改進KNN演算法
  • Kullback-Leibler(KL)散度介紹
  • 理解JS散度(Jensen–Shannon divergence)
  • GAN:兩者分佈不重合JS散度為log2的數學證明_js距離為什麼等於log2-CSDN部落格
  • 距離計算方式_milvus 內積歸一化-CSDN部落格
  • 編輯距離(Edit Distance)的介紹-CSDN部落格
  • 漢明距離及其高效計算方式

相關文章