0

RecommenderEvaluator を使用して、Mahout のレコメンデーション効率を推定します。現在、検索されたアイテムの後処理ブーストを行う IDRescorer を使用して、推奨結果を改善しようとしています。

RecommenderEvaluator evaluator = 
    new AverageAbsoluteDifferenceRecommenderEvaluator();
double evaluation = evaluator.evaluate(builder, myModel, 0.9, 0.9);

Mahout で RecommenderEvaluator にカスタム IDRescorer を使用するように指示する方法はありますか?

4

1 に答える 1

1

Recommenderクラスの独自の実装を作成できます

class CustomRecommender implements Recommender{
....
public List<RecommendedItem> recommend(long userID, int howMany) throws TasteException {
 IDRescorer rescorer = new CustomResorer();
 return delegate.recommend(userID, howMany, rescorer);
 }
 public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer) throws TasteException {
    return delegate.recommend(userID, howMany, rescorer);
 }
 public float estimatePreference(long userID, long itemID) throws TasteException {
   IDRescorer rescorer = new CustomResorer();
   return (float) rescorer.rescore( itemID, delegate.estimatePreference(userID, itemID));
 }
...
}

ここでレスコーラーなしでレコメンデーションが呼び出された場合でも、recommendandestimatePreferenceメソッドに組み込みます。

そして、 をビルドするときRecommenderBuilderに、レコメンダーのインスタンスを作成します。

RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
   @Override
   public Recommender buildRecommender(DataModel model) throws TasteException {
    Similarity similarity = new ...             
    return new CustomRecommender(model, similarity);                    
   }

};
于 2014-06-25T09:28:06.807 に答える