常見的距離算法和相似度(相關系數)計算方法


摘要:

  1.常見的距離算法

    1.1歐幾里得距離(Euclidean Distance)以及歐式距離的標准化(Standardized Euclidean distance)

    1.2馬哈拉諾比斯距離(Mahalanobis Distance)

    1.3曼哈頓距離(Manhattan Distance)

    1.4切比雪夫距離(Chebyshev Distance)

    1.5明可夫斯基距離(Minkowski Distance)

    1.6海明距離(Hamming distance)

   2.常見的相似度(系數)算法

    2.1余弦相似度(Cosine Similarity)以及調整余弦相似度(Adjusted Cosine Similarity)

    2.2皮爾森相關系數(Pearson Correlation Coefficient)

    2.3Jaccard相似系數(Jaccard Coefficient)

    2.4Tanimoto系數(廣義Jaccard相似系數)

    2.5對數似然相似度/對數似然相似率

    2.6互信息/信息增益,相對熵/KL散度

    2.7信息檢索--詞頻-逆文檔頻率(TF-IDF)

    2.8詞對相似度--點間互信息

  3.距離算法與相似度算法的選擇(對比)

內容:

  1.常見的距離算法

    1.1歐幾里得距離(Euclidean Distance)

    公式:

    標准歐氏距離的思路:現將各個維度的數據進行標准化:標准化后的值 = ( 標准化前的值 - 分量的均值 ) /分量的標准差,然后計算歐式距離

    歐式距離的標准化(Standardized Euclidean distance)

    公式:

 

    1.2馬哈拉諾比斯距離(Mahalanobis Distance)

    公式:

     關系:若協方差矩陣是對角矩陣,公式變成了標准化歐氏距離;如果去掉馬氏距離中的協方差矩陣,就退化為歐氏距離。歐式距離就好比一個參照值,它表征的是當所有類別等概率出現的情況下,類別之間的距離;當類別先驗概率並不相等時,馬氏距離中引入的協方差參數(表征的是點的稀密程度)來平衡兩個類別的概率。

     特點:量綱無關,排除變量之間的相關性的干擾。 

         擴展

    1.3曼哈頓距離(Manhattan Distance)

    公式:

     定義:通俗來講,想象你在曼哈頓要從一個十字路口開車到另外一個十字路口實際駕駛距離就是這個“曼哈頓距離”,此即曼哈頓距離名稱的來源,同時,曼哈頓距離也稱為城市街區距離(City Block distance)。

    1.4切比雪夫距離(Chebyshev Distance)

    公式:

     

    1.5明可夫斯基距離(Minkowski Distance)

    定義:

    關系:明氏距離是歐氏距離的推廣,是對多個距離度量公式的概括性的表述。p=1退化為曼哈頓距離;p=2退化為歐氏距離;切比雪夫距離是明氏距離取極限的形式。這里明可夫斯基距離就是p-norm范數的一般化定義。

     下圖給出了一個Lp球(||X||p=1)的形狀隨着P的減少的可視化圖:

    

      參照:淺談L0,L1,L2范數及其應用機器學習中的范數與距離淺談壓縮感知(十):范數與稀疏性

   

    1.6海明距離(Hamming distance)

    定義:在信息論中,兩個等長字符串之間的漢明距離是兩個字符串對應位置的不同字符的個數。

    場景:在海量物品的相似度計算中可用simHash對物品壓縮成字符串,然后使用海明距離計算物品間的距離 

    參考simHash 簡介以及 java 實現相似度計算常用方法綜述通過simHash判斷數組內容相同(或者網頁排重)的測試代碼

  2.常見的相似度(系數)算法

    2.1余弦相似度(Cosine Similarity)

    公式:

    定義:兩向量越相似,向量夾角越小,cosine絕對值越大;值為負,兩向量負相關。

    不足:只能分辨個體在維之間的差異,沒法衡量每個維數值的差異(比如用戶對內容評分,5分制,X和Y兩個用戶對兩個內容的評分分別為(1,2)和(4,5),使用余弦相似度得出的結果是0.98,兩者極為相似,但從評分上看X似乎不喜歡這2個內容,而Y比較喜歡,余弦相似度對數值的不敏感導致了結果的誤差,需要修正這種不合理性)

     調整余弦相似度(Adjusted Cosine Similarity)

    公式:,其中Here $\bar{R_{u}}$ is the average of the u-th user's ratings.

  

    2.2皮爾森相關系數(Pearson Correlation Coefficient)

    

    定義:兩個變量之間的皮爾遜相關系數定義為兩個變量之間的協方差和標准差的商

    擴展

    2.3Jaccard相似系數(Jaccard Coefficient)

    公式:,這里X,Y不再是向量,而變成了集合

    定義:Jaccard系數主要用於計算符號度量或布爾值度量的個體間的相似度,無法衡量差異具體值的大小,只能獲得“是否相同”這個結果,所以Jaccard系數只關心個體間共同具有的特征是否一致這個問題。Jaccard系數等於樣本集交集與樣本集合集的比值。

    計算:假設樣本A和樣本B是兩個n維向量,而且所有維度的取值都是0或1。例如,A(0,1,1,0)和B(1,0,1,1)。我們將樣本看成一個集合,1表示集合包含該元素,0表示集合不包含該元素。

    p:樣本A與B都是1的維度的個數

    q:樣本A是1而B是0的維度的個數

    r:樣本A是0而B是1的維度的個數

    s:樣本A與B都是0的維度的個數

    那么樣本A與B的傑卡德相似系數可以表示為:

      clip_image017

    附:與Jaccard Coefficient相對應的是Jaccard 距離:d(X,Y) = 1 - Jaccard(X,Y);傑卡德距離用兩個集合中不同元素占所有元素的比例來衡量兩個集合的區分度。(參考自余弦距離、歐氏距離和傑卡德相似性度量的對比分析)

 

    2.4Tanimoto系數(廣義Jaccard相似系數)

    公式:

 

    定義:廣義Jaccard相似度,元素的取值可以是實數。又叫作谷本系數

    關系:如果我們的x,y都是二值向量,那么Tanimoto系數就等同Jaccard距離。

 

    2.5對數似然相似率

    對於事件A和事件B,我們考慮兩個事件發生的次數:

    k11:事件A與事件B同時發生的次數
    k12:B事件發生,A事件未發生
    k21:A事件發生,B事件未發生
    k22:事件A和事件B都未發生

    
    rowEntropy = entropy(k11, k12) + entropy(k21, k22)
    columnEntropy = entropy(k11, k21) + entropy(k12, k22)
    matrixEntropy = entropy(k11, k12, k21, k22)
    2 * (matrixEntropy - rowEntropy - columnEntropy)

    詳情 擴展

    2.6互信息/信息增益,相對熵/KL散度

    互信息/信息增益:信息論中兩個隨機變量的相關性程度

    公式:

    

    

    相對熵/KL散度:又叫交叉熵,用來衡量兩個取值為正數的函數(概率分布)的相似性

    公式:

    

    擴展:知乎問答

    2.7信息檢索--詞頻-逆文檔頻率(TF-IDF)

    《數學之美》中看到的TF-IDF算法,在網頁查詢(Query)中相關性以詞頻(TF)與逆文檔頻率(IDF)來度量查詢詞(key)和網頁(page)的相關性;

    網頁中出現key越多,該page與查詢結果越相關,可以使用TF值來量化

    每個詞的權重越高,也即一個詞的信息量越大;比如“原子能”就比“應用”的預測能力強,可以使用IDF值來量化,這里的IDF《數學之美》中說就是一個特定條件下關鍵詞的概率分布的交叉熵。

      

        2.8詞對相似度--點間相似度

    

 

3.距離算法與相似度算法的選擇(對比)

  3.1 歐式距離和余弦相似度

    歐幾里得距離度量會受指標不同單位刻度的影響,所以一般需要先進行標准化,同時距離越大,個體間差異越大

    空間向量余弦夾角的相似度度量不會受指標刻度的影響,余弦值落於區間[-1,1],值越大,差異越小

    當兩用戶評分趨勢一致時,但是評分值差距很大,余弦相似度傾向給出更優解。例如向量(3,3)和(5,5),這兩位用戶的認知其實是一樣的,但是歐式距離給出的解顯然沒有余弦值合理。

    余弦相似度衡量的是維度間相對層面的差異,歐氏度量衡量數值上差異的絕對值;一種長度與方向的度量所造成的不同;余弦相似度只在[0,1]之間,而馬氏距離在[0,無窮)之間(注:以上參考自知乎問題

    應用上如果要比較不同人的消費能力,可以使用歐式距離進行度量(價值度量);如果想要比較不同用戶是否喜歡周傑倫,可以使用余弦相似度(定性度量)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM