Recommender Systems は初めてです。私は Mahout を学ぼうとしていますが、これまでのところ、私はそれを把握していると思います。
しかし、Mahout in Action (リスト 2.4、21 ページ) の本からの例を使用して Precision & Recall を計算しようとすると、かなり奇妙な問題が発生します。便宜上、ここに本文をコピーして貼り付けます。
RandomUtils.useTestSeed();
DataModel model = new FileDataModel (new File("intro.csv"));
RecommenderIRStatsEvaluator evaluator =
new GenericRecommenderIRStatsEvaluator ();
RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel model)
throws TasteException {
UserSimilarity similarity = new PearsonCorrelationSimilarity (model);
UserNeighborhood neighborhood =
new NearestNUserNeighborhood (2, similarity, model);
return
new GenericUserBasedRecommender (model, neighborhood, similarity);
}
};
IRStatistics stats = evaluator.evaluate(
recommenderBuilder, null, model, null, 2,
GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD,
1.0);
System.out.println(stats.getPrecision());
System.out.println(stats.getRecall());
本にある小さなデータセットを使用して上記を実行しようとすると、すべてが正常になります。しかし、Movielens 1M または 10M を使用して精度と再現率を計算しようとすると、結果は恐ろしく低くなります...たとえば、精度と再現率 @ 2 は次のようになります: P: 0.00573 および R: 0.005882
私はアイデアが不足しているので、誰かが同様の問題を抱えている、または持っていた場合、解決策があると聞いてうれしいです...