【问题标题】:Use Cosine Similarity with Binary Data - Mahout对二进制数据使用余弦相似度 - Mahout
【发布时间】:2015-10-22 13:58:05
【问题描述】:

我有一个布尔值/二进制文件,其中在客户实际购买产品时找到了客户和产品 ID,如果客户没有购买,则找不到。数据集表示如下:

Dataset

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

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

任何想法都将不胜感激。

谢谢。

【问题讨论】:

    标签: mahout binary-data similarity mahout-recommender cosine-similarity


    【解决方案1】:

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

    您的示例数据只有两项(顺便说一句,对于 Mahout 的旧 hadoop 版本,ID 应该是 0)。所以显示的数据集不会给出有效的精度分数。

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

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

    【讨论】:

    • 非常感谢。我对高维没有问题,因为我的数据不是那么大,我只有大约 3000 行,而且我使用的是内存计算数据库 SAP HANA。我也这么认为,精度永远不可能是 100%,我最关心的总是与数据的表示有关,因为我有所有的偏好 1. 可以这样表示布尔数据,还是应该包括客户没有购买的产品并将其设置为0?也许你可以给我一个二进制数据集的例子,我真的很感激。
    • 使用 Universal Recommender 假设用户不与之交互的任何项目为 0。您需要做的就是将交互事件发送到与用户关联的推荐器,定期训练数据,然后查询用户或项目 ID。不需要像旧的 Mahout 代码那样进行 id 转换,也不需要枚举项目的所有用户。这些是从交互数据中检测到的。您还可以使用许多事件,甚至是用户个人资料数据。
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 2011-01-01
    • 2013-02-12
    • 2019-10-25
    • 2017-12-12
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多