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

     
     
  • 相关阅读:
    JSON初试
    for ...in 、for each ...in、 for...of(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of)
    WPF MVVM 模式下的弹窗
    『简易日志』NuGet 日志包 SimpleLogger
    WPF 让一组 Button 实现 RadioButton 的当前样式效果
    IIS 错误解决:当前标识没有对 Temporary ASP.NET Files 的写访问权限
    [读书笔记] 《大话设计模式》
    WPF 原生绑定和命令功能使用指南
    ASP.NET Core MVC 网站学习笔记
    在香蕉派的树莓派系统上配置 Syncthing 自启动
  • 原文地址:https://www.cnblogs.com/DjangoBlog/p/6212817.html
Copyright © 2011-2022 走看看