我正在尝试在 Vowpal Wabbit 中实现网格搜索或更复杂的超参数搜索。为此目的,是否有一种相对简单的方法可以在验证集(vw 中的保留)上获得损失函数值?大众必须计算它,例如,对于每个通过次数,因为提前停止发生取决于它的值。
到目前为止,我通过使用验证数据集创建一个单独的文件来绕过这一点,在这个数据集上保存不同模型的预测,并比较它们在 python 中的性能,从而导致不必要的数据浪费。但也许有一种方法可以明确使用大众坚持分数?
我正在尝试在 Vowpal Wabbit 中实现网格搜索或更复杂的超参数搜索。为此目的,是否有一种相对简单的方法可以在验证集(vw 中的保留)上获得损失函数值?大众必须计算它,例如,对于每个通过次数,因为提前停止发生取决于它的值。
到目前为止,我通过使用验证数据集创建一个单独的文件来绕过这一点,在这个数据集上保存不同模型的预测,并比较它们在 python 中的性能,从而导致不必要的数据浪费。但也许有一种方法可以明确使用大众坚持分数?
总结评论,有几种方法可以从大众那里获得保持损失(它们可以结合起来):
--holdout_off
通过多次传递,大众基于每10 个示例(不是随机 1/10 示例)报告保持损失(除非指定)。使用--holdout_period
one 可以指定与 10 不同的数字。--holdout_after=N
指定输入数据的前 N 个示例将用于训练,文件的其余部分作为保留集(而不是每 10 个示例)。-p predictions.txt
在大众汽车之外使用和计算损失(通过predictions.txt
与带有金标签的输入数据进行比较)。使用 X 遍时,predictions.txt
将包含 X*number_of_input_data_examples。因此,建议在训练数据上进行训练(可能需要多次通过),将模型保存到文件中,然后仅使用 VW 来预测:vw -i trained.model -t -d test.input -p test.predictions
.--save_per_pass
按需保存模型可能会有所帮助。vw --daemon