請考慮含有分類標籤的資料集,其值為「Positive」或「Negative」。在平衡的資料集中,正面和負面標籤的數量大致相同。不過,如果某個標籤比另一個標籤更常見,則資料集就會失衡。在資料集不平衡的情況下,主要標籤稱為多數類別;較少見的標籤則稱為少數類別。
下表列出不同程度的失衡情形的一般名稱和範圍:
屬於少數類別的資料百分比 | 失衡程度 |
---|---|
20% 至 40% 的資料集 | 溫和 |
1% 到 20% 的資料集 | 普通 |
< 資料集的 1% | 極端 |
舉例來說,假設病毒偵測資料集的少數類別占資料集的 0.5%,多數類別則占 99.5%。在醫學領域,這類極不平衡的資料集很常見,因為大多數受試者不會感染病毒。
不平衡的資料集有時可能不含足夠的少數類別範例,無法正確訓練模型。也就是說,由於正面標籤太少,模型幾乎只會訓練負面標籤,無法充分瞭解正面標籤。舉例來說,如果批次大小為 50,許多批次就不會包含任何正面標籤。
通常來說,不平衡並不是問題,尤其是在資料集略為不平衡或適度不平衡的情況下。因此,您應該先嘗試在原始資料集上進行訓練。如果模型運作良好,就完成了。如果沒有,至少次佳模型可為日後的實驗提供良好的基準值。接著,您可以嘗試下列技巧,解決資料集不平衡所造成的問題。
降樣本和加權
處理不平衡資料集的方法之一,就是減少樣本數並提高多數類別的權重。以下是這兩個新詞彙的定義:
步驟 1:將多數類別的樣本數量減少。請參考圖 5 所示的病毒資料集,其中每 200 個負面標籤就有 1 個正面標籤。將取樣率降低 10 倍,可改善平衡,使正樣本與負樣本的比例為 1:20 (5%)。雖然產生的訓練集仍略為失衡,但正負樣本比率已遠優於原先極度失衡的比例 (0.5%)。
步驟 2:提高經下採樣類別的權重:在經下採樣的類別中加入示例權重。經過 10 倍的下採樣後,範例權重應為 10。(雖然這似乎違反直覺,但我們稍後會說明原因)。
「weight」一詞並非指模型參數 (例如 w1 或 w2)。在此處,權重是指示例權重,可在訓練期間提高個別示例的重要性。範例權重為 10 表示模型會將範例視為 (在計算損失時) 權重為 1 的範例的 10 倍重要。
weight 應等於用於降樣時使用的因數:
\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]
在降樣後加入示例權重可能會顯得奇怪。畢竟您試圖讓模型改善少數類別,為何要提高多數類別的權重?事實上,提高多數類別的權重,往往會降低預測偏差。也就是說,在降樣本後增加權重,通常會減少模型預測平均值與資料集標籤平均值之間的差異。
重新平衡比率
您應將多少樣本數降至最低,並提高多少權重,才能重新平衡資料集?如要找出答案,您應嘗試調整平衡比率,就像嘗試調整其他超參數一樣。不過,最終的答案取決於下列因素:
- 批次大小
- 失衡比率
- 訓練集的範例數
在理想情況下,每個批次都應包含多個少數類別範例。不含足夠少數類別的批次,訓練效果會很差。批量大小應比不平衡比率大上好幾倍。舉例來說,如果不平衡比率為 100:1,則批量大小應至少為 500。
練習:檢查您的理解程度
請考慮以下情況:
- 訓練集包含略多於十億個範例。
- 批次大小為 128。
- 不平衡比率為 100:1,因此訓練集會以以下方式劃分:
- 約 10 億個多數類別的示例。
- 約 1,000 萬個少數類別的示例。