-1

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

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

  1. 首先,我们必须移动到非tanimoto版本计算项目相似度,以便我们考虑用户购买,喜欢等,而不仅仅是查看/浏览数据。
  2. 搞清楚产品类别为特定用户(这是我们需要的方向) - 我们的产品类别层次结构基本上是一棵树,我们需要知道其中最高4个节点(用最好的建议)的树,我们将展现给用户。同样,如果我们说节点X是我们向用户展示的类别,而节点Y是节点X的父节点,那么我们不希望在类别Y或任何父级中显示用户产品。的方式实现这一夫妇:

    • 对于在叶级项目为节点的相似性得分值的每一位用户计算SUM和递归计算,直至根父节点。现在在每个节点上,我们有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) 
      

      推荐产品类别1:项目1(评分= 2),项目2(得分= 4)
      推荐产品类别2:项目3(评分= 1),项目4(得分= 4)

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

请提供您的意见/建议/引线/想法。

在此先感谢!

回答

0
  1. 如果你想在你的数据模型多件事情,我会建议与ALSWR factorizer设置为隐式反馈,而不是使用SVD推荐。通过这样做,您的数据中可以有user,item,preference,而preference的值可以是您的用户与该项目的关联程度。你可以玩数字,例如购买是20,视图只是2。我只是在这里投入数字,我不知道什么对您的数据最有效,因为您也可以按比例对事物进行建模,如果购买比观看的可能性低30倍,那么购买应该是比观点强30倍。

  2. Mahout提供了一种通过IDRescorer影响推荐的方法。您在此实施自己的逻辑并决定如何影响建议。例如,IDRescorer将检查推荐候选人是否属于同一类别,如果是,则将该分数提高X.有一个示例(link)来自Mahout in Action Book(您应该明确阅读),并显示rescorer。

希望这有助于

+0

朱利安 - 同意,我们应该,但我们是什么不知道被赋予一个用户你怎么知道向用户推荐哪些类别做两个。我们实际上需要帮助“几个实现此目标的方式:”谢谢。 – anivohra

+0

我不能帮你解决问题的细节。我想说的是,将自定义逻辑引入推荐器的唯一方法是通过实现“IDRescorer”类。另一件事,虽然有点冒失,但会为每个用户产生100-150个建议,然后在某个特定点过滤出你不需要的建议。 –

相关问题