对二进制数据使用余弦相似度 - Mahout

Use Cosine Similarity with Binary Data - Mahout

我有一个 boolean/binary,当客户实际购买产品时可以找到客户和产品 ID,如果客户没有购买则找不到。数据集表示如下:

Dataset

我尝试了不同的方法,例如具有 TanimotoCoefficient 或 LogLikelihood 相似性的 GenericBooleanPrefUserBasedRecommender,但我也尝试了具有非中心余弦相似性的 GenericUserBasedRecommender,它分别给了我最高的精度和召回率 100% 和 60%。

我不确定在这种情况下使用非中心余弦相似度是否有意义,或者这是一个错误的逻辑? Uncentered Cosine Similairty 对此类数据集有何作用。

如有任何想法,我们将不胜感激。

谢谢。

100% 的精确度是不可能的,所以出了点问题。所有相似性指标都适用于布尔数据。请记住 space 具有非常高的维度。

您的样本数据只有两项(顺便说一句,对于 Mahout 的旧 hadoop 版本,id 应该为 0)。因此,如图所示的数据集不会给出有效的精度分数。

我已经用大型电子商务数据集完成了这项工作,对数似然在布尔数据上的表现大大优于其他指标。

顺便说一句,Mahout 已经从 Hadoop 转向 Spark,我们唯一的指标是 LLR。此处实现了基于 Mahout-Samsara 的具有事件存储和预测服务器的完整通用推荐器: http://templates.prediction.io/PredictionIO/template-scala-parallel-universal-recommendation 此处描述的幻灯片:http://www.slideshare.net/pferrel/unified-recommender-39986309