【发布时间】:2016-01-20 15:27:38
【问题描述】:
我正在尝试在 Vowpal Wabbit 中实现网格搜索或更复杂的超参数搜索。为此目的,是否有一种相对简单的方法可以在验证集(vw 中的保留)上获得损失函数值?大众必须计算它,例如对于每个传球次数,因为提前停止取决于它的价值。
到目前为止,我通过使用验证数据集创建一个单独的文件来绕过这一点,在这个数据集上保存不同模型的预测,并比较它们在 python 中的性能,从而导致不必要的数据浪费。但也许有一种方法可以明确使用大众坚持分数?
【问题讨论】:
-
见
--holdout_after(和vw -h | grep holdout)。也就是说,我通常也会准备一个单独的验证集,这样我就可以比较在不同训练规模上训练的模型并绘制学习曲线。我还计算了训练损失(训练误差)来评估过度拟合的程度。我可以提供一些脚本。 -
见github.com/JohnLangford/vowpal_wabbit/pull/841(我的其他脚本对于我自己的实验设置来说太具体了,对其他人没有用处)
-
另见github.com/martinpopel/vowpal_wabbit/wiki/vw-hyperopt-plans(我现在没有时间实施
vw-hyperopt,但我想将来这样做。至少我的计划可能是灵感的来源。) -
使用
--holdout_after=N,您需要连接训练文件和保留文件并计算 N = 训练文件中的示例数。大众在第一次通过后报告的损失将标记为h(作为保留),它将基于您的保留数据。如果您另外使用-p,您将保存预测(在整个连接文件上)。 -
您可以使用
--save_per_pass代替--holdout_after,并使用vw -t -i model123 -d test.file评估每次通过后保存的模型。另一种选择是在每次通过(或另一块训练数据)后使用--save_resume保存模型,并根据需要继续训练并将训练与测试交织在一起(但将模型加载到内存中需要一些时间)。另一种选择是使用github.com/JohnLangford/vowpal_wabbit/wiki/… 按需保存模型(可能使用vw --daemon)
标签: machine-learning vowpalwabbit hyperparameters