在通過同一數據訓練出多個模型後,需要對這些模型進行比較。通常通過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總數。