zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU 1025 Constructing Roads In JGShining's Kingdom (DP+二分)
    HDU 1158 Employment Planning
    HDU 2059 龟兔赛跑
    Csharp 简单操作Word模板文件
    Csharp windowform datagridview Clipboard TO EXCEL OR FROM EXCEL DATA 保存datagridview所有數據
    Csharp 讀寫文件內容搜索自動彈出 AutoCompleteMode
    Csharp windowform controls clear
    CSS DIV大图片右上角叠加小图片
    Csharp DataGridView自定义添加DateTimePicker控件日期列
    Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  • 原文地址:https://www.cnblogs.com/arachis/p/5946938.html
Copyright © 2011-2022 走看看