java - Apache mahout 推荐器 - 我应该为每个用户重新创建数据模型吗?

标签 java mahout mahout-recommender

我是 Apache Mahout 推荐器的新手。该用例涉及根据用户的购买历史记录向他们提供建议。 我计划使用以下信息:

  • 购买类别
  • 购买金额
  • 购买时间(例如 - 在购买第一条牛仔裤 6 个月后推荐一条牛仔裤)
  • 用户位置

为了识别具有相似购买模式/购买时间的用户并给予他们更多偏好,我是否必须为每个用户制作自定义数据模型? 我计划定期从数据库导入以重新创建数据模型。 有没有一种方法可以动态地给予偏好,如下所述:

  1. 地点+购买类别+时间匹配
  2. 购买类别+时间匹配
  3. 地点 + 时间匹配(例如冬季服装)

目前我正在使用提供的示例代码。 (需要进行大量修改)

UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
        UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
        UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
        List<RecommendedItem> recommendations = recommender.recommend(74, 10);

最佳答案

一般来说,要实现您的建议,您需要对数据执行一个步骤,添加一个诸如 t_since_last_purchase 之类的功能,该功能采用整数 0 -> inf。例如。自上次购买以来的天数。

此功能(时间)将是另一个相关的用户功能。

我认为您正在查看一些较旧的基于 Map-Reduce 的推荐器 - 实际上它们是一流的 - 但考虑到您的用例,您可能需要查看 coorelated cooccurence based reccomenders其一个显着的好处是能够查看用户的多种 Activity (在您的情况下,位置,以前的购买,时间)。

关于java - Apache mahout 推荐器 - 我应该为每个用户重新创建数据模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42084184/

相关文章:

java - 添加新字段时如何避免破坏克隆/复制方法?

java - android在外部数据库中设置数据

java - 创建对象时调用的方法

java - @Import 注册非@Component bean

hadoop - 无法构建mahout-core-0.7-SNAPSHOT.job(在hadoop上推荐)

hadoop - 斜坡一推荐人

PredictionIO 数据导入

java - Mahout 是实时工作还是根据算法规则预处理数据?

numpy - 亚马逊 EC2 与 PiCloud

hadoop - 集群还是推荐?