loglikelihood ratio 相似度

本文介绍LogLikelihoodRatio相似度的概念及计算方法,并通过一个具体的用户偏好商品实例进行详细解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:

  在机器学习中常用到各种距离或者相似度,今天在看美团推荐系统重排序的文章时看到了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.youkuaiyun.com/article/2015-01-30/2823783

    http://blog.youkuaiyun.com/u014374284/article/details/49823557

转载于:https://www.cnblogs.com/arachis/p/5946938.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值