RankLib2.11文件格式及参数说明

RankLib是一个排序学习算法的库。目前已经实现了8种流行的算法:RankNet、RankBoost、AdaRank、Coordinate Ascent、LambdaMART、MART、ListNet和Random Forests。还实现了多种检索指标,并提供了多种方法进行评价。

文件格式

训练、测试、验证数据文件格式与SVM-Rank相同。每一行代表一个样本数据,格式如下:

 qid: : : ... : # 

其中是样本的标签,也就是训练的目标;qid:是query标识,同一query的数据需要保持连续,否则会被解析为两个不同的query;:是特征及其值;是其他信息,在训练时#后面的信息会被忽略。

为正整数,为浮点数,为字符串。

0 qid:9004234 1:0.00015 2:0.2 3:0.6955521 4:1.0 31:0.8157 32:0.500204 33:1.0 34:0.666667 43:0.5 44:1.0 50:1.0 #其他描述信息
0 qid:9004234 1:0.01112 4:1.0 14:1.0 31:0.77 32:0.463174 33:1.0 34:0.333333 42:0.15 43:0.3 44:1.0 50:1.0 #其他描述信息
0 qid:9004234 1:0.00015 3:0.6955521 4:1.0 31:0.8157 32:0.500204 33:1.0 34:0.666667 43:0.5 44:1.0 50:1.0 #其他描述信息
0 qid:9004234 3:0.4073483 4:1.0 24:1.0 31:0.7943 32:0.388067 33:1.0 34:0.333333 42:0.15 43:0.3 44:1.0 50:1.0 #其他描述信息

使用方法

RankLib不依赖其他第三方包,只需要有java环境即可。在RankLib所在目录下执行java -jar bin/RankLib.jar会打印使用说明,会看到详细的参数信息。

RankLib参数分为训练和测试两部分,训练参数中除了公共的参数外,还有一些算法特有的参数。

训练参数

公共参数
参数 说明
-train 训练数据文件。
-ranker 指定使用过的排序算法:
0:MART 1:RankNet 2:RankBoost 3:AdaRank 4:Coordinate Ascent 5:LambdaRank 6:LambdaMART 7:ListNet 8:Random Forests 9:Linear regression (L2 regularization)
-feature 可选的,特征描述文件,列出学习器使用的特征,每行一个特征。
如果不指定此文件,默认使用所有特征
-metric2t 可选的,对训练数据进行评价的度量。支持MAP、NDCG@k、DCG@k、P@k、RR@k、ERR@k,默认为ERR@10
-gmax 可选的,标签最大值,对ERR的计算有影响,默认为4,即标签范围是0、1、2、3。
-qrel 可选的,TREC格式的相关性判断文件,只对MAP和NDCG的计算有影响,默认不使用
-silent 可选的,不打印进度信息,默认是打印的
-missingZero 可选的,用0替换缺失的特性值,而不是抛出异常,默认抛出异常
-validate 可选的,用于调优的验证数据文件。如果指定验证数据,对验证数据执行的最好的模型为最终的模型。默认不进行验证
-tvs 可选的,如果没有单独的验证数据,可以使用此选项将训练数据分割成x的训练数据和1-x的验证数据。x为0-1之间的浮点数。默认不进行分割
-save 可选的,保存学习到的模型,默认不保存
-test 可选的,测试数据文件。如果指定测试数据,将使用测试数据评估训练出的模型,默认不进行测试
-tts 可选的,如果没有单独的测试数据,可以使用此选项将训练数据分割成x的训练数据和1-x的测试数据。x为0-1之间的浮点数。如果同时指定-tts和-tvs,-tts会覆盖-tvs,即只会将数据分割成训练数据和测试数据。
-metric2T 可选的,对测试数据进行评价的度量。由于在实现时选项并没有区分大小写,所以同时指定-metric2t与-metric2T选项时,两个参数总是相同的,且为最后一个设置的值。默认与metric2t相同
-norm 可选的,对所有特征向量进行标准化。method可选值为:sum(对每个特征通过其所有值的和对其进行标准化)、zscore(对每个特征通过其平均值/标准偏差进行标准化)、linear(对每个特征通过其最大值、最小值进行标准化),默认不进行标准化
-kcv 可选的,使用k折交叉验证法进行训练。-tvs选项可以进一步的在每折中保留一部分训练数据进行验证。默认不使用k折交叉验证
-kcvmd 可选的,保存通过交叉验证训练的模型的目录,默认不保存
-kcvmn

可选的,每折中学到的模型的后缀。以字符“f”加上折数为前缀。默认为空字符串“”

 

RankNet参数
-epoch 可选的,训练迭代次数,默认为100
-layer 可选的,隐藏层的数量,默认为1
-node 可选的,每个隐藏层的节点数量,默认为10
-lr 可选的,学习率,默认为0.00005
RankBoost参数
-round 可选的,训练轮数,默认为300
-tc 可选的,候选域值的数量,如果为-1,则特征的所有值都用做候选域值,默认为10
AdaRank参数
-round 可选的,训练的轮数,默认为500
-noeq 可选的,训练时不使用“强”特征队列,默认为使用
-tolerance 可选的,连续两轮学习的性能最小提升,默认为0.002
-max 可选的,在不改变性能的情况下,连续选择一个特性的最大次数,默认为5
Coordinate Ascent参数
-r 可选的,随机重新启动的次数,默认为5
-i 可选的,每个维度的迭代次数,默认为25
-tolerance 可选的,两次随机重启运算后性能的最小提升,默认为0.001
-reg 可选的,正则化参数,默认不进行正则化
MART、LambdaMART参数
-tree 可选的,树的数量,默认为1000
-leaf 可选的,每棵树叶子节点的数量,默认为10
-shrinkage 可选的,学习率,默认为0.1
-tc 可选的,树分裂时候选域值的数量,如果为-1,则使用特征的所有值,默认为256
-mls 可选的,每个叶子节点必须包含的文档的最小数量,默认为1
-estop 可选的,如果在验证数据上连续e轮没有任何性能提升就提前停止训练,默认为100
ListNet参数
-epoch 可选的,训练轮数,默认为1500
-lr 可选的,学习率,默认为0.00001
Random Forests参数
-bag 可选的,bag的数量,默认为300
-srate 可选的,子集采样率,默认为1.0
-frate 可选的,特征采样率,默认为0.3
-rtype 可选的,bag使用的排序算法,可选值只有0(MART)和6(LambdaMART),默认为0
-tree 可选的,每个bag中树的数量,默认为1
-leaf 可选的,每棵树叶子节点的数量,默认为100
-shrinkage 可选的,学习率,默认为0.1
-tc 可选的,树分裂时候选域值的数量,如果为-1,则使用特征的所有值,默认为256
-mls 可选的,每个叶子节点必须包含的文档的最小数量,默认为1
Linear Regression参数
-L2 可选的,L2正则化参数,默认为1.0E-10

 测试参数

公共参数
-load 要加载的模型,可以使用多个-load选项按递增的顺序来指定来自多折的模型。在这种情况下,测试/排序数据将相应地进行分区。
-test 用来评估模型的测试数据,不能与-rank选项同时使用。
-rank 对指定文件中的样本进行排序,不能与-test选项同时使用。
-metric2T 可选的,对测试数据进行评估的度量,默认为ERR@10
-gmax 可选的,标签最大值,对ERR的计算有影响,默认为4,即标签范围是0、1、2、3。
-score 可选的,保存每个排序的对象的分数,必须和-rank选项一起使用。
-qrel 可选的,TREC格式的相关性判断文件,只对MAP和NDCG的计算有影响,默认不使用
-idv 可选的,保存模型对于单独的排序列表,在测试度量上的性能,必须和-test选项一起使用。
-norm 可选的,标准化特征向量,可选值与训练参数中的-norm选项相同。

你可能感兴趣的:(机器学习,IR,LTR)