zoukankan      html  css  js  c++  java
  • Mahout学习笔记推荐算法


      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

  • 相关阅读:
    必读:Spark与kafka010整合
    6 个开源的家庭自己主动化工具 | Linux 中国
    承上 DBlink 与 SCN | 新增视图找出外部 SCN 跳变
    NetBeans使用Consolas中文乱码的解决
    IDEA community + Gradle + Gretty 调试 servlet 应用 + war包部署到tomcat
    解决ubuntu下IntelliJ IDEA无法锁定到启动器的问题
    virtualbox安装android6.0并设置分辨率为1920x1080x32
    Ubuntu安装Sqlite报错:No module named 'ConfigParser'
    Linux常用指令笔记
    解决Warning Couldn't flush user prefs: java.util.prefs.BackingStoreException: Couldn't get file lock.
  • 原文地址:https://www.cnblogs.com/kemaswill/p/2728590.html
Copyright © 2011-2022 走看看