在Vowpal Wabbit获得保持亏损

时间:2015-10-21 14:53:09

标签: machine-learning vowpalwabbit hyperparameters

我试图在Vowpal Wabbit中实现网格搜索或更复杂的超参数搜索。为此目的,是否有一种相对简单的方法来获得在验证集上获得的损失函数值(在vw中保持)?大众必须计算它,例如每次通过次数,因为早期停止取决于它的价值。

到目前为止,我通过创建一个带有验证数据集的单独文件来绕道而行,保存了不同的模型。预测这个数据集,并比较它们在python中的性能,从而招致不必要的数据浪费。但也许有一种方法可以明确地使用vw holdout分数吗?

1 个答案:

答案 0 :(得分:2)

总结一下这些评论,有几种方法可以从大众那里获得延期亏损(可以合并):

  1. 通过一次通过学习,大众报告了渐进式验证损失,其中(简单地说)在足够的示例之后收敛大致与保持损失相同的值。
  2. 通过多次传递,大众根据每个第10个示例(不是随机的1/10示例)报告保持丢失(除非指定--holdout_off)。使用--holdout_period可以指定不同于10的数字。
  3. 参数--holdout_after=N指定输入数据的前N个示例将用于训练,而其余文件将用作保持集(而不是每个第10个示例)。
  4. 可以使用-p predictions.txt计算大众以外的损失(通过将predictions.txt与带金标签的输入数据进行比较)。使用X pass时,predictions.txt将包含X * number_of_input_data_examples。因此,建议训练训练数据(可能需要多次通过),将模型保存到文件中,然后仅使用VW预测:vw -i trained.model -t -d test.input -p test.predictions
  5. 在某些情况下,--save_per_passvw --daemonsaving model on demand可能会有所帮助。
  6. 要从命令行轻松计算保持(测试)丢失和火车损失,可以使用vw-experiment