algorithm - 评估基于项目的协同过滤对二元(是/否)产品推荐的性能

标签 algorithm machine-learning recommendation-engine collaborative-filtering

我正在尝试为基于项目的产品推荐协作过滤编写一些代码。输入的行是买家,列是产品,带有一个简单的 0/1 标志来指示买家是否购买了商品。输出是给定购买的相似项目列表,按余弦相似度排序。

我正在尝试衡量几个不同实现的准确性,但我不确定最佳方法。我发现的大多数文献都提到使用某种形式的均方误差,但是当您的协作过滤算法预测评级(例如 5 星中的 4 星)而不是推荐用户将购买的商品时,这似乎更适用。

我正在考虑的一种方法如下...

  • 将数据分成训练/保留集,训练训练数据
  • 对于集合中的每个项目 (A),从用户购买 A 的保留集中选择数据
  • 确定有多少百分比的 A 级买家购买了为 A 级买家推荐的前 3 名之一

上面的内容似乎有点武断,但我认为在对相同数据进行训练时比较两种不同的算法可能很有用。

最佳答案

实际上,您的方法与文献中的方法非常相似,但我认为您应该像大多数论文一样考虑使用召回率和精确率。

http://en.wikipedia.org/wiki/Precision_and_recall

此外,如果您将使用 Apache Mahout,则此类中有一个用于召回和精确的实现; GenericRecommenderIRStatsEvaluator

关于algorithm - 评估基于项目的协同过滤对二元(是/否)产品推荐的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28817653/

相关文章:

python - 是否可以在 python 的 for 循环中自动创建变量?

c - 二进制搜索算法的平均性能?

c++ - 此函数是否以 3 位的精确精度计算数字的自然对数?

apache - 使用 Mahout 对数据进行分类

python - scikit-learn 在多类分类中默认使用 One-Vs-Rest 吗?

python - 将用户/项目 View 数据转换为二维指标

java - 无法通过在线判断中的所有测试用例

java - 如何避免有很多条件的很多 if-else

python - 训练/测试矩阵图书交叉推荐系统

hadoop - 如何在 Hadoop 中使用 ALS 实现矩阵分解推荐器?