我一直按照本文中的步骤通过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组矩阵。相似矩阵和共生矩阵。
这是我的相似度矩阵(我假设mahout使用我的“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
所以,理论上,我建议76151220购买791520-WP的人,对吗?
问题的第2部分是解释交叉相似性矩阵。请记住,我的filter2是“views”。
我如何理解这一点:
**790907** 76120956:14.2824428207241 791500-LXQ2:13.864741460885853 190907:10.735807818360627
我把这个矩阵称为“访问76120956网页的人最终购买了790907 ”。因此,我应该向购买76120956的客户推广790907,甚至可能在我们的网站上添加这两种产品之间的链接。
或者是“访问790907网页的人最终购买了76120956 ”?
我的计划不是按原样使用这些。我仍然会使用RowSimilarity和不同的来源对产品进行排名 - 但我错过了对mahout输出的基本解释。
如果你知道任何澄清这一点的文件,那将是一件很有价值的资产。
谢谢。
答案 0 :(得分:4)
在这两种情况下,矩阵都会通过附加到每个相似项目的LLR值告诉您item-id键与列出的项目类似。类似用户购买物品的意义相似。在第二种情况下,它说类似的人查看了这些项目,而且这种观点似乎也导致了购买同一项目。
同时单独购买的同时发生,交叉发生添加检查以确保视图也与购买相关联。这允许您同时使用它们作为建议。
输出通常用于搜索引擎,您可以将用户的购买历史和视图用作针对矩阵的2字段查询,每个字段中有一个。
有类似的方法可以找到基于项目的建议。
更好的是,在这里使用像Universal Recommender这样的东西:actionml.com/docs/ur和PredictionIO用于端到端系统。