FeatureManager可以从使用特征子集生成的模型文件中统计特征使用信息。统计模型特征是为了确定哪些特征可以丢弃从而通过引入新的特征来尝试改进模型。通过FeatureManager的-feature_stats选项来指定要统计特征使用信息的模型文件。返回的信息包括:模型文件的位置、生成模型使用的算法、模型中各特征出现的频次、使用的特征种数、频次的最大值、最小值、中位数、均值、方差和标准差。特征统计只适用于不使用全部特征生成的模型,所以特征统计不适合于Coordinate Ascent、LambdaRank、ListNet和RankNet模型。
在使用RankLib2.11时要注意jdk版本,RankLib2.11是基于java8的,并且在使用模型特征统计功能时需要第三方包Apache的commons-math3。
windows下运行命令如下:
java -cp RankLib-2.11.jar;commons-math3-3.5.jar ciir.umass.edu.features.FeatureManager -feature_stats lambdamart_new.mod
运行结果如下:
如图,用于创建LambdaMART模型的训练文件中总共定义了50个特征,而实际上只使用了其中的20个特征。没有使用的特征不会出现在特征频率列表中。特征使用最少的是特征33,只使用了4次; 使用最多的是特征2,使用了4314次。根据均值和方差可以考虑去掉频率低于100的特征,然后重新训练模型看性能是否有提升。