问题中的测试命令不正确。它没有输入(-p ...
指示输出预测)。此外,如果你想测试或预测因为它说test
但使用的命令有-p ...
测试意味着您已标记的数据和您在评估模型的质量,目前尚不清楚。严格地说:预测意味着你没有标签,所以你实际上不知道你的预测有多好。实际上,您也可以预测未标注的数据(假设它没有忽视它们的标签),然后评估这些预测的效果如何,因为您实际上有标签。
一般:
在vw
的Holdout机构被设计用来替换所述测试设置和避免过度拟合,它是唯一的相关当多次通过在单次通过所有实例有效地持有,因为使用;每个下一个(但看不见的)示例被视为1)未标记用于预测,并且2)标记为测试和模型更新。 IOW:你的火车集合也是你的测试集。
所以你可以做的多遍动车组没有抵抗:
vw --loss_function logistic --nn 4 -c --passes 2 --holdout_off train.vw -f model
,然后测试一个单独的模型和标记,测试设置:
vw -t -i model test.vw
或做多次通过相同的列车集与一些持有作为测试集。
vw --loss_function logistic --nn 4 -c --passes 20 --holdout_period 7 train.vw -f model
如果你没有一个测试集,并且要适应,更强的通过使用多遍,你可以问vw
举行,每N
个例子(默认N
为10,但你可以使用--holdout_period <N>
明确地覆盖它,如上所示)。在这种情况下,您可以指定更高的通行证数量,因为vw
将在外出集合的损失开始增加时自动提前终止。
你会发现你打提前终止,因为vw
将打印出类似这样:
passes used = 5
...
average loss = 0.06074 h
这表明只有5个N
次传递提早终止前实际使用,并在持有了集错误例如是0.06074(尾随h
表示这是外出损失)。
正如你所看到的,通过次数,和持久期是完全独立的选项。
为了提高您的模型并获得更多信心,您可以使用其他优化,更改holdout_period,尝试其他参数。您可能还想检查vw-hypersearch
实用程序(在utl
子目录中)以帮助查找更好的超参数。
下面是关于包含在源与测试组中的一个使用vw-hypersearch
的一个示例:
$ vw-hypersearch 1 20 vw --loss_function logistic --nn % -c --passes 20 --holdout_period 11 test/train-sets/rcv1_small.dat --binary
trying 13 ............. 0.133333 (best)
trying 8 ............. 0.122222 (best)
trying 5 ............. 0.088889 (best)
trying 3 ............. 0.111111
trying 6 ............. 0.1
trying 4 ............. 0.088889 (best)
loss(4) == loss(5): 0.088889
5 0.08888
指示,要么4
或5
应该是好的参数上的相应的固定产生的0.08888损失11个例子中1个的子集。