【问题标题】:k-fold cross validation in RankLibRankLib 中的 k 折交叉验证
【发布时间】:2019-09-14 16:56:13
【问题描述】:
我想对 MQ2008 数据集进行 5 折交叉验证。我正在使用 RankLib 在数据集上应用 ML 算法。我对 Ranklib 中为交叉验证给出的 kcv 选项感到困惑。
使用的命令:
java - jar RankLib.jar -ranker 0 -train train.txt -test test.txt -validate vali.txt -kcv 5
在这里,我们为训练、测试和验证指定不同的文件。然后它是如何划分数据以进行 5 折交叉验证的。
【问题讨论】:
标签:
machine-learning
cross-validation
k-fold
【解决方案1】:
要使用 ranklib 进行 k 折交叉验证,您只需要使用一个数据集。
程序本身会随机划分数据以进行训练、测试和验证。
当您使用 5 折交叉验证时,程序将重复该过程 5 次,并为您提供 5 次分析的平均值作为最终结果。
您需要为您的学习评估选择一个指标。请参阅此How to use page 上的[ -metric2t <metric> ]。
例如,请参阅下面的命令。我只有一个数据集来提供我的算法。我使用NDCG@10 作为我的评估指标。另外,我使用-kcvmd 将模型保存在目录中,并使用-kcvmn 命名模型。
java -jar RankLib-2.1-patched.jar -train trainingData.txt -ranker 8 -kcv 5 -kcvmd kcvModels/ -kcvmn txt -metric2t NDCG@10 -metric2T NDCG@10 -save Models/model.txt