2017-04-19 68 views

回答

1

A1:對於線性迴歸,如果您關心平均值,則應該使用--loss_function squared(這是默認值)。如果您關心的是中位數而不是平均值(例如,如果您有一些異常值可能會大大影響平均值),請使用--loss_function quantile。順便說一句:這些不是優化器,只是損失函數。我會離開優化器(增強型SGD)原樣(默認),因爲它工作得很好。

A2:best constant是會給出最低誤差的常數預測,而best constant loss是總是預測best constant數的平均誤差。它是所有目標變量的加權平均值。這與線性迴歸公式y = Ai*xi + B中的攔截b不同。 B是獨立於輸入的自由術語。 B不一定是y的平均值。 A3:如果要查找模型的截距,請在模型中查找名稱爲Constant的重量。這將要求兩個短步驟:

# 1) Train your model from the dataset 
# and save the model in human-readable (aka "inverted hash") format 
vw --invert_hash model.ih your_dataset 

# 2) Search for the free/intercept term in the readable model 
grep '^Constant:' model.ih 

grep步驟的輸出應該是這樣的:

Constant:116060:-1.085126 

116060是散列時隙(在模型位置)和-1.085126是值的截距(假設沒有散列衝突,以及輸入的線性組合)。

+0

謝謝,那麼如何翻譯與最佳常數相比在損失方面表現更差的模型?最佳常數虧損信息的價值是什麼? – user90772

+0

對不起,您不清楚您在問什麼:翻譯模型意味着什麼?什麼數據「更糟糕」?不良表現最常見的原因是數據不良或過度擬合,但您沒有提供關於如何訓練的任何細節?數據類型和大小(例子數量,特徵數量,進度輸出)?你有什麼選擇在訓練中使用?你在訓練後如何評價?......在這裏非常難以幫助。最佳常數損失對於瞭解您的標籤的(加權)平均值很有用。 – arielf

+0

我必須更具體。所以,就我而言,即使RMSE優於簡單平均值,模型的損失也比最佳常數差得多。我正在處理高維分類特徵和數字輸出。數據大小很小(大約500-1000),特徵數量很大(OHE後大約10K)。什麼是標籤的加權平均值?就我而言,我有一個簡單的迴歸問題(沒有權重),這是否意味着最佳常數的損失是平均值的損失? – user90772