我正在尝试为基于项目的产品推荐协作过滤编写一些代码。输入的行是买家,列是产品,带有一个简单的 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/