0

我有一个布尔值/二进制值,其中当客户实际购买产品时找到客户和产品ID,如果客户没有购买它,则找不到。这样表示的数据集:使用与二进制数据的余弦相似度 - Mahout

Dataset

我已经尝试了不同的方法,如GenericBooleanPrefUserBasedRecommender与TanimotoCoefficient或数似然相似之处,但我自己也尝试GenericUserBasedRecommender与非中心余弦相似度,它给了我最高的精度和召回100%和60%。

我不确定在这种情况下使用Uncentered Cosine相似性是否合理,或者这是一个错误的逻辑?以及Uncentered Cosine Similairty对这样的数据集做了什么。

任何想法将非常感激。

谢谢。

回答

0

100%的精确度是不可能的,所以有些事情是错误的。所有的相似性度量都可以很好地处理布尔数据。请记住,空间的维度非常高。

您的示例数据只包含两个项目(顺便说一下,旧版hadoop版本的Mahout的BTW ID应该为0)。所以如图所示的数据集不会给出有效的精确分数。

我已经使用大型E-Com数据集完成了这项工作,并且对数似然大大超出了布尔数据上的其他度量。

顺便说一句Mahout已经从Hadoop转向Spark,我们唯一的指标是LLR。基于Mahout的-色戒完整的通用导购与事件存储,并预测服务器在这里实现: http://templates.prediction.io/PredictionIO/template-scala-parallel-universal-recommendation 幻灯片描述在这里:http://www.slideshare.net/pferrel/unified-recommender-39986309

+0

太谢谢你了。我没有高维问题,因为我的数据不是那么庞大,我只有大约3000行,而我正在使用内存计算数据库SAP HANA。 我也这么认为,精度永远不会是100%,我最关心的总是与数据的表示有关,因为我拥有所有的偏好1.可以像这样表示布尔数据,或者应该我包含客户没有购买的产品并将其设置为0?也许你可以为我提供一个二进制数据集的例子,我真的很感激它。 – user2255207

+0

使用通用推荐器,用户不与之交互的任何项目都被假定为0.您只需将交互事件发送到绑定到用户的推荐器,定期对数据进行训练,然后通过用户或项目ID进行查询。不需要像旧的Mahout代码一样的id翻译,也不需要枚举项目的所有用户。这些都是从交互数据中检测到的。你也可以使用许多事件,甚至用户配置文件数据。 – pferrel