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

8 篇文章 0 订阅
7 篇文章 0 订阅

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

文件格式

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

<target> qid:<qid> <feature>:<value> <feature>:<value> ... <feature>:<value> # <info>

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

<target>、<qid>、<feature>为正整数,<value>为浮点数,<info>为字符串。

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

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

 

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

 测试参数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值