Mahout学习笔记-推荐算法

系统 1649 0


  Mahout中的推荐算法主要有:User-based Recommender, Item-based Recommender和Slope-One Recommender。

  1. User-based Recommender

    该算法的主要思想是:与用户u最相似的用户喜欢的商品有很大可能也是用户u喜欢的商品。

      
        1
      
      
        对于用户u的每一个没有preference的商品i

      
      
        2
      
      
           对于每一个对商品i有preference的用户v

      
      
        3
      
            计算用户u与v的相似性s
      
        //
      
      
        实际上无需在线计算,可以事先计算好存储起来
      
      
        4
      
      
             将用户v对于商品i的preference,乘以s,加到用户u对商品i的预测preference的平均值

      
      
        5
      
        返回用户u的平均值最高的几个商品作为推荐商品。
    

 

  上述算法需要穷举每个商品i,导致计算非常非常慢。可以实现计算好某个用户u的所有的邻居(记为集合n),然后,再为用户u做推荐时,只需要考虑用户u的邻居的所有有preference的商品即可,而无需考虑所有商品,算法如下:

      
        1
      
      
        对于每个其他的用户w

      
      
        2
      
      
          计算用户u与用户w之间的相似度s

      
      
        3
      
      
        返回用户u的相似度最高的几个用户,记为用户u的邻居n

      
      
        4
      
      
        //
      
      
        上述步骤可以离线完成,类似于索引
      
      
        5
      
      
        对于用户u的每个u本身没有preference,但是u的邻居n中某个用户有preference的商品i

      
      
        6
      
      
          对于每个对商品i有preference的用户u的邻居v

      
      
        7
      
           计算用户u与v的相似度
      
        //
      
      
        其实无需在线计算,可以提前计算好,存储起来
      
      
        8
      
             将用户v对于商品i的preference,乘以s,加到用户u对商品i的预测preference的平均值
    

  2. Item-based Recommender

    该算法的主要思想是:喜欢商品i的用户u,有很大可能性会喜欢和商品i很相似的其他商品

      
        1
      
      
        对于用户u的每个没有preference的商品i

      
      
        2
      
      
          对于每个用户u有preference的商品j

      
      
        3
      
      
            计算商品i与j的相似度s

      
      
        4
      
      
            把用户u对商品j的preference,乘以s,加到用户u对商品i的preference的平均值

      
      
        5
      
       返回用户u的平均值最高的几个商品作为推荐商品
    

  3. Slope-One Recommender

    首先计算每两个商品之间preference差值的平均值

      
        1
      
      
        对于某个商品i

      
      
        2
      
      
          对于某个商品j

      
      
        3
      
      
            对于每个对商品i和j都有preference的用户u

      
      
        4
      
             将用户u对商品i和商品j的preference的差值加到所有用户对商品i和商品j的差值的平均值当中去  
    

    推荐

      
        1
      
      
        对于用户u的每个没有preference的商品i

      
      
        2
      
      
          对于用户u的每个有preference的商品j

      
      
        3
      
      
            取得商品i和商品j的preference差值的平均值diff

      
      
        4
      
      
            将diff加上u对商品j的preference的和加入用户u对商品i的preference的平均值当中去

      
      
        5
      
           返回用户u的预测preference最高的几个商品作为推荐
    

 

  [1] Mahout in Action

Mahout学习笔记-推荐算法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论