Spark Item Similarity Interpretation(Cross-Similarity and Similarity)

Spark Item Similarity Interpretation (Cross-Similarity and Similarity)

我一直按照本文中的步骤通过 mahout 使用 Spark Item Similarity:

https://mahout.apache.org/users/algorithms/intro-cooccurrence-spark.html

我能够清理我的数据,设置一个仅限本地的 spark/hadoop 节点等等。

现在,我的问题更多地依赖于对矩阵的解释。我尝试了一些 Google 查询,但收效甚微。

我正在创建一个多模式推荐系统 - 我的一个数据集与 Mahout 示例非常相似。

示例输入: Customer ActionName Product 11064612 view 241505 11086047 purchase 110915 11121878 view CERT_DL 11149030 purchase CERT_FS 11104130 view 111401 mahout 的输出是 2 组矩阵。一个相似度矩阵和一个共生矩阵。

这是我的相似度矩阵(我假设驯象师使用我的 "filter1" 购买)

**791207-WP**   791520-WP:11.350536461453885 791520:9.547158147208393 76130142:7.938639976084232 711215:7.0641921646893024 751309:6.805891904514283

那么我该如何解释呢?如果有人购买了 791207-WP,他们可能会对 791520-WP 感兴趣? (所以我会使用左侧部分来表示客户的购买情况,并在右侧部分对产品进行排名?)。

791520-WP 的行如下所示:

791520-WP   76151220:18.954662238247693 791604-WP:13.951210170984268

所以,理论上,我会向购买 791520-WP 的人推荐 76151220,对吗?

问题的第 2 部分是解释交叉相似度矩阵。记住我的 filter2 是 "views".

我将如何解释:

**790907**  76120956:14.2824428207241 791500-LXQ2:13.864741460885853 190907:10.735807818360627

我将此矩阵视为“访问 76120956 网页的人最终购买了 790907”。因此,我应该向购买了 76120956 的客户推广 790907,甚至可能在我们网站上的这 2 种产品之间添加一个 link,例如。

或者是“访问了 790907 网页的人最终购买了 76120956”?

我的计划是不按原样使用这些。我仍然会使用 RowSimilarity 和不同的来源来对产品进行排名 - 但我缺少对 mahout 输出的基本解释。

如果您知道任何说明这一点的文档,那将是一笔宝贵的财富。

谢谢。

在这两种情况下,矩阵都会告诉您项目 ID 键与每个相似项目所附的 LLR 值所列出的项目相似。相似的意思是相似的用户购买了物品。在第二种情况下,它表示类似的人查看了这些项目,并且此视图似乎也导致了对同一项目的购买。

同现仅适用于购买,交叉出现会添加检查以确保视图也与购买相关。这允许您将两者用于推荐。

输出通常用于搜索引擎,您可以使用用户的购买和浏览历史作为针对矩阵的 2 字段查询,每个字段一个。

有类似的方法可以找到基于项目的推荐。

更好的是,在这里使用通用推荐器之类的东西:actionml.com/docs/ur 和 PredictionIO 用于端到端系统。