資料集:不平衡資料集

請考慮含有分類標籤的資料集,其值為「Positive」或「Negative」。在平衡的資料集中,正面負面標籤的數量大致相同。不過,如果某個標籤比另一個標籤更常見,則資料集就會失衡。在資料集不平衡的情況下,主要標籤稱為多數類別;較少見的標籤則稱為少數類別

下表列出不同程度的失衡情形的一般名稱和範圍:

屬於少數類別的資料百分比 失衡程度
20% 至 40% 的資料集 溫和
1% 到 20% 的資料集 普通
< 資料集的 1% 極端

舉例來說,假設病毒偵測資料集的少數類別占資料集的 0.5%,多數類別則占 99.5%。在醫學領域,這類極不平衡的資料集很常見,因為大多數受試者不會感染病毒。

圖 5. 包含兩個長條的長條圖。一個長條顯示約 200 個負面類別,另一個長條則顯示 1 個正面類別。
圖 5. 資料集極度不平衡。

 

不平衡的資料集有時可能不含足夠的少數類別範例,無法正確訓練模型。也就是說,由於正面標籤太少,模型幾乎只會訓練負面標籤,無法充分瞭解正面標籤。舉例來說,如果批次大小為 50,許多批次就不會包含任何正面標籤。

通常來說,不平衡並不是問題,尤其是在資料集略為不平衡或適度不平衡的情況下。因此,您應該先嘗試在原始資料集上進行訓練。如果模型運作良好,就完成了。如果沒有,至少次佳模型可為日後的實驗提供良好的基準值。接著,您可以嘗試下列技巧,解決資料集不平衡所造成的問題。

降樣本和加權

處理不平衡資料集的方法之一,就是減少樣本數並提高多數類別的權重。以下是這兩個新詞彙的定義:

  • 下採樣 (在本例中) 是指針對大多數類別的示例,訓練不成比例的子集。
  • 加權是指在經過降樣處理的類別中,將樣本權重加權為降樣處理的倍數。

步驟 1:將多數類別的樣本數量減少。請參考圖 5 所示的病毒資料集,其中每 200 個負面標籤就有 1 個正面標籤。將取樣率降低 10 倍,可改善平衡,使正樣本與負樣本的比例為 1:20 (5%)。雖然產生的訓練集仍略為失衡,但正負樣本比率已遠優於原先極度失衡的比例 (0.5%)。

圖 6. 包含兩個長條的長條圖。一個長條顯示 20 個負面類別,另一個長條則顯示 1 個正面類別。
圖 6. 降採樣。

 

步驟 2:提高經下採樣類別的權重:在經下採樣的類別中加入示例權重。經過 10 倍的下採樣後,範例權重應為 10。(雖然這似乎違反直覺,但我們稍後會說明原因)。

圖 7. 兩步驟的圖表,說明降採樣和加權。步驟 1:從多數類別中隨機擷取樣本。步驟 2:加權會為經過降樣處理的示例增加權重。
圖 7. 加權。

 

「weight」一詞並非指模型參數 (例如 w1 或 w2)。在此處,權重是指示例權重,可在訓練期間提高個別示例的重要性。範例權重為 10 表示模型會將範例視為 (在計算損失時) 權重為 1 的範例的 10 倍重要。

weight 應等於用於降樣時使用的因數:

\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]

在降樣後加入示例權重可能會顯得奇怪。畢竟您試圖讓模型改善少數類別,為何要提高多數類別的權重?事實上,提高多數類別的權重,往往會降低預測偏差。也就是說,在降樣本後增加權重,通常會減少模型預測平均值與資料集標籤平均值之間的差異。

重新平衡比率

您應將多少樣本數降至最低,並提高多少權重,才能重新平衡資料集?如要找出答案,您應嘗試調整平衡比率,就像嘗試調整其他超參數一樣。不過,最終的答案取決於下列因素:

  • 批次大小
  • 失衡比率
  • 訓練集的範例數

在理想情況下,每個批次都應包含多個少數類別範例。不含足夠少數類別的批次,訓練效果會很差。批量大小應比不平衡比率大上好幾倍。舉例來說,如果不平衡比率為 100:1,則批量大小應至少為 500。

練習:檢查您的理解程度

請考慮以下情況:

  • 訓練集包含略多於十億個範例。
  • 批次大小為 128。
  • 不平衡比率為 100:1,因此訓練集會以以下方式劃分:
    • 約 10 億個多數類別的示例。
    • 約 1,000 萬個少數類別的示例。
下列敘述何者正確?
將批次大小增加至 1,024 可改善產生的模型。
如果批次大小為 1,024,每個批次的平均少數類別樣本數約為 10 個,這應該有助於訓練出更優質的模型。
將批次大小維持在 128,但將下採樣 (和加權) 設為 20:1,可改善產生的模型。
由於採用了降樣技術,每個 128 個的批次平均會包含約 21 個少數類別範例,這應該足以訓練出實用的模型。請注意,縮減取樣會將訓練集的範例數量從略高於十億降至約 6,000 萬。
目前的超參數沒問題。
如果批次大小為 128,每批的平均值約為 1 個少數類別範例,可能不足以訓練實用的模型。