-1

我们现在有什么?- 我们正在使用 Mahout 的 GenericItemBasedRecommender 为使用 TanimotoCoefficientSimilarity 作为 ItemSimilarity 的用户获取推荐产品列表。

我们想从这里去哪里?- 当我们不关心产品类别但我们想知道的是产品类别特定的建议时,上述工作正常,即说如果用户一直在购买、浏览、喜欢等,特别是在男士和小工具类别中,我会然后想要在该特定类别中显示此用户推荐,并在 [X] 中为您推荐,在这种情况下,X 将被替换为男士或小工具。我们正在考虑以下几个选项来实现这一目标,我们需要一些线索/意见/反馈等,以确保我们朝着正确的方向前进。选项:

  1. 首先,我们必须转移到非tanimoto 版本来计算项目相似度,以便我们考虑用户购买、喜欢等,而不仅仅是查看/浏览数据。
  2. 找出特定用户的产品类别(这是我们需要指导的地方) - 我们的产品类别层次结构基本上是一棵树,我们需要知道我们将向用户展示树中哪些前 4 个节点(具有最佳推荐)。此外,如果我们说节点 X 是我们向用户显示的类别,节点 Y 是节点 X 的父节点,那么我们不希望在类别 Y 或任何父节点中显示用户产品。实现这一目标的几种方法:

    • 对于每个用户,计算叶级节点的项目相似性得分值的总和,并递归计算父节点直到根。现在在每个节点上,我们有 A = 相似性分数的总和 & B = 推荐的项目数,所以我们在每个节点上也有 A/B=Value (V)。现在我们从树中挑选前 4 V 值并推荐给用户。这里的挑战是,如果我们尝试在请求期间在线计算此时间,我们将很难将整个请求的时间限制在 150 毫秒以下。一个例子:

       Root Level   -     Category12 (A=11, B=4) (category1 + category2)
                                              |
                         _____________________|_________________________
                       /                                                \
                      /                                                  \ 
      Leaf Level - category1 (A=6, B=2)                          category2 (A=5, B=2)
      

      第一类推荐产品:Item1(分数=2)、Item2(分数=4)
      第二类推荐产品:Item3(分数=1)、Item4(分数=4)

    • 第二种选择:为每个类别创建一个基于用户行为(喜欢、购买、查看等)的用户集群,然后找出用户所属的前 4 个类别。不确定我们是否可以在 Mahout 中使用集群来实现这一点,但我认为我们可以离线进行。

请提供您的反馈/建议/线索/想法。

提前致谢!

4

1 回答 1

0
  1. 如果您想在数据中建模不止一件事,我建议使用 SVD 推荐器,而不是将 ALSWR 分解器设置为隐式反馈。完成后,您可以user,item,preference在数据中获得价值,其preference价值将是您的用户与该项目的关联程度。您可以使用数字,例如购买是 a20而视图只是 a 2。我只是在这里抛出数字,我不知道什么最适合您的数据,因为您还可以按比例对事物进行建模,如果购买发生的可能性是视图的 30 倍,那么购买应该是比视图强30倍。

  2. Mahout 提供了一种通过IDRescorer. 您在这里实现自己的逻辑并决定如何影响建议。例如,IDRescorer将检查推荐候选人是否属于同一类别,如果是,则将分数提高 X。这里有一个示例(链接)来自Mahout in Action Book(您绝对应该阅读),显示了一个评分器。

希望这可以帮助

于 2013-08-27T08:57:21.070 回答