首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mahout中基于布尔偏好的商品推荐中的精确性与召回

Mahout中基于布尔偏好的商品推荐中的精确性与召回
EN

Stack Overflow用户
提问于 2014-05-21 11:02:20
回答 2查看 1.3K关注 0票数 1

我试图使用mahout中给出的项目推荐来计算具有布尔偏好的数据集的精确性和回忆性。

我正在使用GenericBooleanPrefItemBasedRecommender和

评估(recommenderBuilder recommenderBuilder,DataModelBuilder dataModelBuilder,DataModel dataModel,IDRescorer rescorer,int at,double relevanceThreshold,double evaluationPercentage)抛出TasteException;

因为有布尔偏好,用户的“相关”或“好”电影集都是1级的。

如果我多次运行相同的代码,它总是给出相同的精度和回忆值,并且它们总是相等的。为什么?我没有使用RandomUtils.useTestSeed(),它是如何将数据分割成训练和测试集的?

可能性:

(A)将整个数据集随机分为开始时的测试和训练,或对每个用户随机地将一个固定百分比的相关电影放入测试集::既然没有用户作为parameter.Why输入这个百分比,那么每次运行代码时,我会得到相同的P值和R值吗?为什么P在n和R的值是相同的?

(B)对于每个用户,它将所有相关影片放在培训集中:然后用户没有任何信息可供提出任何建议,因此不可能提供建议。

由于我在n处得到P和R的值相等,这是否意味着对于每个用户,相关电影的数量每次都被移动到测试集=推荐数,即n。如果测试集中的n个相关电影是随机的,那么为什么每次运行代码时都得到相同的P和R值。

我能想到的唯一解释就是结果是推荐人在n处计算P和R如下:一个接一个,每个用户随机地将n个相关的电影放在测试集中。进程必须是随机的,因为它不能区分所有相关的电影,但是进程是固定的,每次运行代码时,它都为每个用户选择相同的n个相关的电影。然后提出n个建议,并在n处计算P和R。

虽然这解释了结果,但我不认为这是一个很好的过程,因为:

1)培训和测试集的概念没有定义为百分比,因此不符合通常的定义。

2) P和R总是相等的,因此我们只能得到一个度量,而不是两个度量。

3)随机采摘“n”电影的过程每次都是相同的。

编辑:我正在添加我的完整代码,以防它帮助回答我的问题:

公共静态空主(String[] args)抛出异常{

代码语言:javascript
复制
FileDataModel model = new FileDataModel(new File("data/test.csv"));
RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator();
RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model) {
ItemSimilarity similarity = new LogLikelihoodSimilarity(model);
return new GenericBooleanPrefItemBasedRecommender(model, similarity);
}
};

IRStatistics stats = evaluator.evaluate(
recommenderBuilder, null, model, null, 5,
GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD,1.0);

System.out.println(stats.getPrecision());
System.out.println(stats.getRecall());
}
EN

回答 2

Stack Overflow用户

发布于 2014-05-21 20:21:26

不确定,但是如果您每次使用一个具有相同值的随机数生成器,它返回的数字序列将是相同的。检查是否有一种方法可以用系统时间之类的东西为rng添加种子。只是猜一下。

票数 0
EN

Stack Overflow用户

发布于 2014-05-22 08:34:06

看看我对相关问题的回答:How mahout's recommendation evaluator works

我认为这将帮助您了解评估是如何工作的,如何选择相关的项目,以及如何计算精确性和召回。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23781335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档