在通过同一数据训练出多个模型后,需要对这些模型进行比较。通常通过RanLib的测试参数可以对不同模型在相同测试数据上按相同指定的评价指标进行评估,通过最后的评估结果进行模型的选择。这种方式是通过测试数据评估结果的平均值来选择。除此以外,还可以通过Analyzer对评估结果进行分析。这种方式是对册数数据中所有查询的结果进行评估。
简单示例
首先,将测试数据按原始顺序按指定的指标进行评估。将评估的结果作为模型对比分析的基准情况。
java -jar bin/RankLib.jar -test data/test.txt -metric2T NDCG@60 -idv out/baseline-ndcg.txt
然后,对各个要进行对比的模型进行相同的评估。
java -jar bin/RankLib.jar -load lambdamart1.model -test data/test.txt -metric2T NDCG@60 -idv out/lambdamart1-ndcg.txt
java -jar bin/RankLib.jar -load lambdamart2.model -test data/test.txt -metric2T NDCG@60 -idv out/lambdamart2-ndcg.txt
最后通过Analyzer以baseline.ndcg.txt为基准对lambdamart1.ndcg.txt和lambdamart2.ndcg.txt进行对比分析。
java -cp bin/RankLib.jar ciir.umass.edu.eval.Analyzer -all out/ -base baseline-ndcg.txt > result.txt
如上,首先得到测试数据以NDCG@60为评价指标的评估结果baseline.ndcg.txt,将其作为模型对比基准。然后用同样的评价指标分别对两个模型进行评估。最后对结果进行对比分析,得到如下对比结果result.txt。
Reading out/baseline-ndcg.txt... 88328 ranked lists [Done]
Reading out/lambdamart1-ndcg.txt... 88328 ranked lists [Done]
Reading out/lambdamart2-ndcg.txt... 88328 ranked lists [Done]
Overall comparison
------------------------------------------------------------------------
System Performance Improvement Win Loss p-value
baseline-ndcg.txt [baseline] 0.5187
lambdamart1-ndcg.txt 0.6883 +0.1696 (+32.71%) 67093 17275 0.0
lambdamart2-ndcg.txt 0.6 +0.0813 (+15.68%) 56339 28431 0.0
Detailed break down
------------------------------------------------------------------------
[ < -100%) [-100%, -75%) [-75%, -50%) [-50%, -25%) [-25%, 0%) (0%, +25%] (+25%, +50%] (+50%, +75%] (+75%, +100%] ( > +100%]
lambdamart1-ndcg.txt 0 0 744 3257 13274 35960 23181 7839 113 0
lambdamart2-ndcg.txt 0 0 1395 4972 22064 37882 14225 4192 40 0
如上结果分为两部分,第一部分是总体的情况,包括模型性能、提升情况、性能提升、下降的query数量、以及进行费希尔精确检验的结果。第二部分是根据性能误差的区间进行的统计。结果中不包括没有变化的query,即性能相同的query。所以结果的query总数可能会小于测试数据中的query总数。