任何人都可以告訴我mahout的RecommenderIRStatsEvaluator是如何工作的?更具體地說,它是如何隨機分配培訓和測試數據以及比較結果的數據?根據我的理解,您需要某種理想/預期的結果,您需要將其與推薦算法的實際結果進行比較,以找出TP或FP,從而計算精確度或召回率。但它看起來像mahout提供了精度/召回分數沒有理想/結果。mahout的推薦評估人員如何工作
回答
將數據分成訓練和測試集,使用您在RecommenderIRStatsEvaluator
類的evaluate
方法中提供的某個相關性閾值。如果這個值是null
有計算它的方法(computeThreshold
)。將數據分成訓練和測試的班級是。如果您仔細查看代碼,您可以看到首先每個用戶的首選項按照降序排序,並且只有那些價值大於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你可以找到非常有用的見解。它說,
它通常假定不喜歡的項目就一直沒 ,即使他們已建議即它們是無趣或無用的,用戶喜歡。然而,這可能並非如此,因爲不喜歡的項目可能包含一些用戶沒有選擇的有趣項目。例如,用戶可能不喜歡某個項目,因爲他不知道它的存在,但是在該建議暴露該項目之後,用戶可以決定選擇它。在任何情況下,當使用IR統計數據時,FP的數量都會超出估計值。
- 1. 如何評估使用Mahout/Hadoop的推薦人
- 2. Apache Mahout分佈式推薦人推薦已評級項目
- 3. 如何讓Mahout推薦工作更快?
- 4. Mahout「反向」推薦人
- 5. Mahout - 推薦給某種人
- 6. Mahout推薦人:如何獲得新的用戶推薦?
- 7. 評估推薦人 - 無法在x個案例中推薦
- 8. 評估LightFM推薦模型
- 9. mahout基於用戶的推薦如何工作?
- 10. Mahout推薦人返回空結果
- 11. Mahout推薦類別
- 12. angularjs評估表達式推薦
- 13. 評估開發人員
- 14. Apache Mahout作爲推薦引擎
- 15. 集成Hive與Mahout推薦
- 16. Weka vs Mahout推薦引擎
- 17. 如何評估基於內容的推薦系統
- 18. 評價基於Mahout的推薦器實現
- 19. Lenskit:如何從java運行LensKit推薦器和評估器
- 20. 自定義推薦工作使用Apache Mahout 0.11.2在hadoop
- 21. Apache Mahout推薦程序不能正常工作
- 22. 如何使用HDInsight .NET SDK提交mahout推薦作業
- 23. Mahout的推薦人 - 問題設置用戶偏好
- 24. Mahout項目對項目推薦人,如何獲得單一偏好的用戶推薦?
- 25. Mahout基於內容的推薦
- 26. 推薦使用Solr和Mahout的系統
- 27. 使用豬或mahout的推薦系統
- 28. 如何使定義的評估工作?
- 29. 新鮮.NET開發人員評估表?
- 30. Mahout推薦人:什麼相對偏好值適合GenericUserBasedRecommender?
非常感謝您的詳細解釋。我希望我有一天能夠回報你的幫助。 – rusho1234
我很高興我能幫到你。 –