2013-09-23 77 views
2

我對數據集(有6個目標類)有多類分類問題。訓練數據的類標籤分佈有偏斜:下面是每個類的分佈類別標籤(1〜6)關於在vowpal中設置權重的實用指導wabbit

(array([174171,  12,  29, 8285, 9996, 11128]), 

的我使用vowpal wabbit的OAA方案進行分類,並試圖1.0對於每個實施例的默認權重。然而,對於大多數模型而言,這隻會導致模型預測評估中的所有示例均爲1.0(因爲標籤1在訓練集中具有非常大的表示形式)。

我想現在試驗不同的權重,我可以應用到每個類的示例,以幫助提高分類器的性能。

關於決定每個示例權重的技巧的任何指針或實用技巧將非常有用。一種可能的技術是根據它們的頻率來權衡反比例子。不幸的是,這似乎導致分類器對標籤2和3有很大的偏見,並且在評估中幾乎預測了2和3。

在決定權重時,模型選擇是否起作用?我正在試驗神經網絡和邏輯和鉸鏈損失函數。

回答

3

可能有更好的方法,但我會開始,像你這樣,通過逆加權的例子根據標籤的稀有如下:標籤的計數

總和= 174171 + 12 + 29 + 8285 + 9996 + 11128 = 203621這樣

標籤1出現174171次(總共85.5%)將被加權:203621/174171 = 1.16909 標籤2中出現12次(稀有)將被加權:203621/12 = 16968.4

等。

請確保列車組中的示例已被很好地洗牌。這對於在線學習至關重要。將相同的標籤示例放在一起是非常糟糕的在線性能的祕訣。

如果你沒有洗牌好,你會得到新的例子表現不好,你可以reweight比較積極,例如採用逆權重的sqrt(),然後如果這仍然過於激進,切換到逆權重log(),等等。

另一種方法是使用新的成本敏感的多類選項之一,例如--csoaa github上的大衆wiki上有一些例子,詳細介紹如何使用這些選項及其訓練集格式。

選擇的損失函數應該肯定會有效果。但是請注意,通常,在使用多類或任何其他基於縮減的選項vw時,應該單獨保留--loss_function,並讓算法使用其內置的默認值。如果您嘗試不同的損失函數並獲得比減少內置損失函數更好的結果,這可能是vw的開發人員感興趣的,請將其報告爲缺陷。

相關問題