gpt4 book ai didi

mahout - mahout 的推荐评估器的工作原理

转载 作者:行者123 更新时间:2023-12-04 23:02:16 25 4
gpt4 key购买 nike

谁能告诉我 mahout 的 RecommenderIRStatsEvaluator 是如何工作的?更具体地说,它如何随机拆分训练和测试数据以及结果与哪些数据进行比较?基于我的低估,您需要某种理想/预期的结果,您需要将其与推荐算法的实际结果进行比较以找出 TP 或 FP
从而计算准确率或召回率。但看起来 mahout 提供了一个没有理想/结果的精确/召回分数。

最佳答案

使用您在 evaluate 中提供的一些相关性阈值将数据拆分为训练集和测试集。 RecommenderIRStatsEvaluator的方法类(class)。如果此值为 null有计算它的方法( computeThreshold )。将数据拆分为训练和测试的类是 GenericRelevantItemsDataSplitter .如果您查看代码,您会发现首先每个用户的首选项按照值按降序排序,而不是那些值大于 relevanceThreshold 的用户。被视为相关。另请注意,最多 at被放入这个集合。

@Override
public FastIDSet getRelevantItemsIDs(long userID,
int at,
double relevanceThreshold,
DataModel dataModel) throws TasteException {
PreferenceArray prefs = dataModel.getPreferencesFromUser(userID);
FastIDSet relevantItemIDs = new FastIDSet(at);
prefs.sortByValueReversed();
for (int i = 0; i < prefs.length() && relevantItemIDs.size() < at; i++) {
if (prefs.getValue(i) >= relevanceThreshold) {
relevantItemIDs.add(prefs.getItemID(i));
}
}
return relevantItemIDs;
}

您可以在 RecommenderIRStatsEvaluator.evaluate 中看到如何计算精度和召回率方法。简而言之就是这样:
首先,一次只评估一个用户。他的偏好值分为相关(如上所述)和其他。相关的用作测试集,另一个与所有其他用户一起用作训练。然后 top-at为该用户生成推荐。接下来,该方法会查看一些作为测试集放在一边的项目是否出现在推荐中,以及有多少:
int intersectionSize = 0;
List<RecommendedItem> recommendedItems = recommender.recommend(userID, at, rescorer);
for (RecommendedItem recommendedItem : recommendedItems) {
if (relevantItemIDs.contains(recommendedItem.getItemID())) {
intersectionSize++;
}
}

精度比计算如下:
(double) intersectionSize / (double) numRecommendedItems

哪里 numRecommendedItems通常是您的 at如果推荐人至少产生 at建议,否则较小。

类似地,召回计算如下:
(double) intersectionSize / (double) numRelevantItems

哪里 numRelevantItems是此用户的测试集中的项目数。

最终的精度和召回率是所有用户的所有精度和召回率的宏观平均值。

希望这能回答你的问题。

编辑:继续您的问题,在评估推荐系统的 IR 统计数据(精度和召回率)时非常棘手,特别是如果您每个用户的用户偏好数量很少。在此 book您可以找到非常有用的见解。它说

it is typically assumed that the not liked items would have not been liked even if they had been recommended i.e they are uninteresting or useless for the user. However, this may not be true, because the set of not liked items may contains some interesting items that the user did not select. For example, a user may not have liked an item because he was unaware of its existence, but after the recommendation exposed that item, the user can decide to select it. In any case when using IR statistics, the number of the FP is over estimated.

关于mahout - mahout 的推荐评估器的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20480004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com