問題中的測試命令不正確。它沒有輸入(-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個的子集。