我正在使用布尔值,尝试评估Mahout中的推荐引擎。我的问题是关于评估函数的“正确”参数的选择。为这篇冗长的帖子提前道歉。
IRStatistics evaluate(RecommenderBuilder recommenderBuilder,
DataModelBuilder dataModelBuilder,
DataModel dataModel,
IDRescorer rescorer,
int at,
double relevanceThreshold,
double evaluationPercentage) throws TasteException;
1)你能想到一个必须使用以下两个参数的例子:
- DataModelBuilder dataModelBuilder
- IDRescorer rescorer
2)对于double relevanceThreshold
变量,我设置了值GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD,但是,我想知道是否可以通过设置不同的值来构建“更好”的模型。
3)在我的项目中,我需要为每个用户推荐最多10个项目。这是否意味着为变量int at
设置大于10的值是没有意义的?
4)如果我不需要等待很多时间来构建模型,那么将变量double evaluationPercentage
设置为等于1是一个好习惯吗?你能想到1不会给出最佳模型的情况吗?
5)为什么精确/召回(注意我正在研究布尔数据)只要推荐数量(即变量int at
)增加(我通过实验证明)就会增加?
6)spiting of both testing and training tests
在mahout中发生在哪里,我怎样才能改变这个百分比(除非基于项目的建议不是这样)?
答案 0 :(得分:2)
单独准确的建议并不能保证推荐系统的用户获得有效且令人满意的体验,因此测量应仅作为参考点。也就是说,理想情况下,真实用户会根据您设置的基线(如随机推荐)使用您的系统,并进行A / B测试并查看哪些具有更好的性能。但这可能很麻烦而且不太实际。
N推荐的精确度和召回率对于推荐者来说并不是一个很好的指标。你最好使用像AUC这样的指标(曲线下面积)
RandomUtils.useTestSeed();
,这样你就知道每次评估时抽样都会以同样的方式完成。 (不要在生产中使用它)