我應該在VW中使用哪些參數來執行二進制分類任務?例如,我們使用rcv1_small.dat。 I thought最好使用邏輯損失函數(或鉸鏈),並且使用--oaa 2
是沒有意義的。然而,實證結果(在所有4個實驗報道漸進驗證0/1虧損)表明最好的組合是--oaa 2
沒有邏輯的損失(即默認平方損失):Vowpal中的--oaa 2和--loss_function = logistic的影響Wabbit
cd vowpal_wabbit/test/train-sets
cat rcv1_small.dat | vw --binary
# average loss = 0.0861
cat rcv1_small.dat | vw --binary --loss_function=logistic
# average loss = 0.0909
cat rcv1_small.dat | sed 's/^-1/2/' | vw --oaa 2
# average loss = 0.0857
cat rcv1_small.dat | sed 's/^-1/2/' | vw --oaa 2 --loss_function=logistic
# average loss = 0.0934
我的主要問題是:爲什麼--oaa 2
沒有給出與--binary
(在上述設置中)完全相同的結果?
我的第二個問題是:爲什麼優化邏輯損失不會改善0/1損失(與優化默認平方損失相比)?這是特定的數據集嗎?
謝謝,你對我的主要問題的答案似乎是正確的。在上面的例子中加上'-b 28'得到平方= 0.0856,logistic = 0.0909,oaa_squared = 0.0855,oaa_logistic = 0.0909。有趣的是,隨着哈希碰撞(默認-b 18),oaa(具有兩倍的特徵)有時(平方)更好,有時(邏輯)更糟。 –
至於我的第二個問題,我沒有比較平方與邏輯損失值。所有報告的值都是0/1損失。對於二元分類,這是'--binary'的效果(順便說一下:它對最終的模型/權重沒有影響)。對於oaa,報告0/1損失(即,1減去準確性)是默認的(不能改變,例如對於多分類 - 邏輯損失)。所以我認爲我的第二個問題仍然沒有答案。 –
對不起,我沒有注意到你比2比差損失函數的原始預測損失了0/1。我目前正在使用修改後的vw來源,其中0 - 1損失在'--oaa'中被替換爲當前kaggle競爭所需的平均對數損失。我可以在下週嘗試使用原始資料。 – truf