RecommenderEvaluator接口用于實(shí)現(xiàn)對(duì)特定算法的評(píng)估. 目前實(shí)現(xiàn)對(duì)于ranking的評(píng)估器有AUC, AveragePrecision, AverageReciprocalHitRank, Diversity, HitRate, IdealDCG, Normalized, Precision, Recall, REciprocalRank十類評(píng)估器. 對(duì)于rating實(shí)現(xiàn)評(píng)估器MAE, MPE, MSE, RMSE四類.
若在配置文件中不進(jìn)行評(píng)估器的指定, 最終評(píng)估時(shí)使用對(duì)應(yīng)類型的全部評(píng)估器.
指定評(píng)估器的配置示例:
rating:
rec.recommender.isranking=false
rec.eval.enable=true
rec.eval.class=mse # if rating
ranking:
rec.recommender.isranking=true
rec.eval.enable=true
rec.eval.class=auc
rec.recommender.ranking.topn=10
不同評(píng)估器相應(yīng)的簡(jiǎn)寫見下表
Evaluator | configuration |
---|---|
AUCEvaluator | auc |
AveragePrecisionEvaluator | ap |
AverageReciprocalHitRankEvaluator | arhr |
DiversityEvaluator | diversity |
HitRateEvaluator | hitrate |
IdealDCGEvaluator | idcg |
NormalizedDCGEvaluator | ndcg |
PrecisionEvaluator | precision |
RecallEvaluator | recall |
ReciprocalRankEvaluator | rr |
MAEEvaluator | mae |
MPEEvaluator | mpe |
MSEEvaluator | mse |
RMSEEvaluator | rmse |
注意, 在評(píng)估器進(jìn)行配置時(shí), 對(duì)于rating的算法如果配置ranking的評(píng)估期, 可能最后也會(huì)生成結(jié)果, 但是此評(píng)估結(jié)果不具有意義, 亦無(wú)法與其他算法進(jìn)行比較. 與rating相比, 使用ranking算法還需要配置rec.recommender.ranking.topn.
在使用java進(jìn)行實(shí)現(xiàn)評(píng)估器時(shí), 評(píng)估器的實(shí)例作為Recommender類中evaluate方法的參數(shù)傳入Recommender的對(duì)象中. 其中Recommender的對(duì)象可以為不同的推薦算法. 而RecommenderEvaluator的實(shí)例也可以使用不同的評(píng)估器. 在Java中也可以采用多種不同的評(píng)估器來(lái)對(duì)結(jié)果進(jìn)行評(píng)估, 只需生成相應(yīng)的評(píng)估器即可. 示例代碼如下:
RecommenderEvaluator evaluator = new MAEEvaluator();
double evalValue = recommender.evaluate(evaluator);