Classification
如何通過卷積神經網絡 (CNN) 對不平衡的數據集進行分類?
我在二元分類任務中有一個不平衡的數據集,其中正數與負數分別為 0.3% 和 99.7%。正面和負面之間的差距是巨大的。當我使用 MNIST 問題中使用的結構訓練 CNN 時,測試結果顯示高假陰性率。此外,訓練誤差曲線在一開始的幾個時期內迅速下降,但在接下來的時期內保持相同的值。
你能告訴我一個處理這個問題的方法嗎?謝謝!
發生這種情況是因為當您進行小批量時,小批量包含您的陽性樣本的可能性非常小(鑑於此處的比例比率)。所以它最終會學習負類的模式,在幾個 epoch 之後,所有東西都會被歸類為負類。
有兩種可能的方法來處理這種情況。
- 鑑於比例為 0.3% 到 99.7%,這是一個高度傾斜的數據集。每 1000 個樣本幾乎沒有 3 個正類樣本。我想說你應該通過獲得更多積極的類來平衡數據集。去獲取盡可能多的陽性樣本。然後,您可以使用更平衡的數據集。例如,您可以獲取 1000 個正樣本,然後隨機選擇一組 1000 個負樣本並構建分類器。現在,它應該能夠同時學習這兩個類。
- 在小批量後更新權重時使用加權誤差度量。在任何 mini-batch 期間,權重與正類和負類的樣本數成比例更新。現在,在目前的情況下,比例為 3:1000,即使這個技巧也可能行不通。因此,您可以嘗試通過獲取更多 297 個正樣本並將它們與 1000 個負樣本組合來將比例設置為 300:1000。然後使用 300:1000 的比例,您應該根據每個類中的樣本數量對小批量期間的錯誤進行加權。這應該有效。