我正在尝试为产品推荐编写基于项目的协同过滤的代码。输入将买方作为行和产品作为列,使用简单的0/1标记来指示买方是否已购买物品。输出是给定购买的类似项目的列表,按余弦相似性排列。
我正在尝试衡量一些不同实现的准确性,但我不确定最佳方法。我发现大多数文献都提到使用某种形式的均方误差,但是当你的协同过滤算法预测评级(例如5星中的4星)而不是推荐用户将购买哪些项时,这似乎更适用。
我正在考虑的一种方法如下......
上述内容似乎有点随意,但我认为在对相同数据进行训练时比较两种不同的算法可能很有用。
答案 0 :(得分:1)
实际上你的方法与文献相似,但我认为你应该考虑使用召回和精确度,就像大多数论文一样。
http://en.wikipedia.org/wiki/Precision_and_recall
此外,如果你将使用Apache Mahout,这个类中有一个召回和精确的实现; GenericRecommenderIRStatsEvaluator
答案 1 :(得分:0)
测试推荐器的最佳方法是始终手动验证结果。但是某种自动验证也很好。
根据推荐系统的精神,您应该及时分割数据,并查看您的算法是否可以预测用户将来购买的内容。这应该为所有用户完成。
不要指望它可以预测一切,100%的正确性通常是过度拟合的标志。