繁体   English   中英

Mahout - 推荐评估员返回0.0

[英]Mahout - Recommender Evaluator Returns 0.0

好吧,我对Mahout和java非常新。 我正在尝试评估推荐器,无论我使用的距离度量或簇大小,下面的代码都会返回0.0。 显然,它根本没有拆分训练和测试数据,我不知道为什么。

任何有关此代码的帮助表示赞赏!

public class Example {
public static void main(String[] args) throws Exception {

 final DataModel model = new FileDataModel(new File("FILENAME")) ;
  RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
  RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
      @Override
      public Recommender buildRecommender(DataModel dataModel) throws TasteException {
          UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
          ClusterSimilarity clusterSimilarity = new NearestNeighborClusterSimilarity(similarity);
          TreeClusteringRecommender tree = new TreeClusteringRecommender(model, clusterSimilarity, 50);
          return tree;
      }
  } ;
double score = evaluator.evaluate(recommenderBuilder, null, model, .7, 1.0);
    System.out.println(score);
    }
}

谢谢!

我相信这是因为您将模型作为buildRecommender方法中的参数传递。 在将DataModel传递给PearsonCorrelation,NearestNeighborClusterSimilarity等内容时,必须在该方法中使用dataModel。

如果不这样做,您最终会评估包含所有首选项的数据模型,这意味着它将尝试估计首选项,发现它已存在并返回该值。 因此,您将始终拥有完美的推荐,因为DataModel模型已经知道了首选项。

来自mahout文档,

自由软件网站建设 : org.apache.mahout.cf.taste.eval.DataModelBuilder,org.apache.mahout.cf.taste.model.DataModel,double,double)

evaluate()返回:一个“得分”,表示推荐者的估计偏好与实际值的匹配程度; 较低的分数意味着更好的匹配,0是完美的匹配

我猜你没事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM