评估一个推荐程序:
利用平均值来评分:AverageAbsoluteDifferenceRecommenderEvaluator
利用均方根来评分:RMSRecommenderEvaluator
public void recommenderEvaluator() throws Exception{
DataModel dataModel = new FileDataModel(new File("F:\\tdunning-MiA-5b8956f\\intro.csv"));
//选择评测模型(均方根评测)
RecommenderEvaluator recommenderEvaluator = new RMSRecommenderEvaluator();
//recommenderBuilder对象主要是为了根据传入的dataModel模型建立推荐引擎模型
RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
@Override
public Recommender buildRecommender(DataModel dataModel) throws TasteException {
UserSimilarity similarity = new LogLikelihoodSimilarity(dataModel);
UserNeighborhood neigborhood = new NearestNUserNeighborhood(2, similarity, dataModel);
return new GenericUserBasedRecommender(dataModel, neigborhood, similarity);
}
};
//根据上面建立的recommenderBuilder对象和dataModel对象,取数据的70%做测试,预测剩下的30%,查看评测效果
double evaluate = recommenderEvaluator.evaluate(recommenderBuilder, null, dataModel, 0.7, 1.0);
System.out.println(evaluate);
}
测评函数evaluate源码分析: