loglikelihood ratio 相似度


摘要:

  在機器學習中常用到各種距離或者相似度,今天在看美團推薦系統重排序的文章時看到了loglikelihood ratio 相似度,特總結起來。以后有時間再把常用的相似度或者距離梳理到一篇文章。

背景:

  記錄loglikelihood ratio 相似度概念

總結:

  

  在mahout中,loglikelihood ratio也作為一種相似度計算方法被采用。

   下表表示了Event A和Event B之間的相互關系,其中:

  k11 :Event A和Event B共現的次數
  k12 :Event A發生,Event B未發生的次數
  k21 :Event B發生,Event A未發生的次數
  k22 :Event A和Event B都不發生的次數

  則logLikelihoodRatio=2 * (matrixEntropy - rowEntropy - columnEntropy)

  其中

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

  (entropy為幾個元素組成的系統的香農熵)

  下面舉一個實際的例子:

  

我以一個實際的例子來介紹一下其中的計算過程:假設有商品全集I={a,b,c,d,e,f},其中A用戶偏好商品{a,b,c},B用戶偏好商品{b,d},那么有如下矩陣:

  

  • k11表示用戶A和用戶B的共同偏好的商品數量,顯然只有商品b,因此值為1
  • k12表示用戶A的特有偏好,即商品{a,c},因此值為2
  • k21表示用戶B的特有偏好,即商品d,因此值為1
  • k22表示用戶A、B的共同非偏好,有商品{e,f},值為2

此外我們還定義以下變量N=k11+k12+k21+k22,即總商品數量。

計算步驟如下:

    1. 計算行熵 

       

      注:代碼中k11+k12k21+k22N

       

    2. 計算列熵 

       

       

    3. 計算矩陣熵 

       


      注意:以上熵的計算均沒有加負號,后面會講到原因

       

    4. 計算相似度 

      UserSimilarity=2(matrixEntropyrowEntropycolumnEntropy)
    5. 實現代碼:https://github.com/Tongzhenguo/Java-codes/blob/master/src/main/java/data/code/similarity/logLikelihoodRatio.java

參考鏈接:

    http://www.csdn.net/article/2015-01-30/2823783

    http://blog.csdn.net/u014374284/article/details/49823557


免責聲明!

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



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