資料集:類別不平衡的資料集

本節將探討下列三個問題:

  • 類別平衡資料集和類別不平衡資料集有何不同?
  • 為什麼訓練不平衡資料集很困難?
  • 如何克服訓練不平衡資料集的問題?

類別平衡資料集與類別不平衡資料集

假設資料集包含類別標籤,其值為正向類別或負向類別。在類別平衡資料集中,正向類別負向類別的數量大致相等。舉例來說,如果資料集包含 235 個正向類別和 247 個負向類別,就是平衡的資料集。

不平衡資料集中,某個標籤的出現頻率遠高於其他標籤。在現實世界中,不平衡資料集遠比平衡資料集常見。舉例來說,在信用卡交易資料集中,詐欺購物可能只占不到 0.1% 的樣本。同樣地,在醫療診斷資料集中,感染罕見病毒的病患人數可能不到總樣本的 0.01%。在不平衡資料集中:

訓練嚴重類別不平衡資料集的困難

訓練的目的是建立模型,成功區分正類和負類。如要這麼做,批次需要足夠數量的正向和負向類別。如果訓練資料集中的類別不平衡程度較輕微,這就不成問題,因為即使是小批次,通常也會包含足夠的正向和負向類別範例。不過,如果資料集嚴重類別不平衡,可能就沒有足夠的少數類別範例可供適當訓練。

舉例來說,請看圖 6 所示的不平衡資料集,其中:

  • 200 個標籤屬於多數類別。
  • 2 個標籤屬於少數類別。
圖 6. 包含 202 個範例的資料集。200 個範例標示為向日葵,2 個範例標示為玫瑰。
圖 6. 花卉資料集極度不平衡,向日葵數量遠多於玫瑰。

 

如果批次大小為 20,大多數批次都不會包含任何少數類別的樣本。如果批次大小為 100,則每個批次平均只會包含一個少數類別範例,這不足以進行適當的訓練。即使批次大小大得多,仍會產生如此不平衡的比例,模型可能無法正常訓練。

訓練不平衡資料集

在訓練期間,模型應學習兩件事:

  • 每個類別的樣貌,也就是哪些特徵值對應至哪些類別?
  • 每個類別的常見程度,也就是類別的相對分布情況。

標準訓練會混淆這兩項目標。相較之下,下列兩步驟技術 (稱為多數類別的下採樣和加權) 會區分這兩項目標,讓模型同時達成這兩項目標。

步驟 1:對多數類別進行下採樣

欠採樣是指以比例極低的少數類別樣本進行訓練。也就是說,您會從訓練資料中省略許多多數類別的範例,人為地強制讓不平衡的資料集變得較為平衡。降採樣可大幅提高每個批次包含足夠少數類別範例的機率,進而適當且有效率地訓練模型。

舉例來說,圖 6 所示的類別不平衡資料集包含 99% 的多數類別和 1% 的少數類別範例。將多數類別的樣本數減少 25 倍,人為建立更平衡的訓練集 (多數類別占 80%,少數類別占 20%),如圖 7 所示:

圖 7. 10 個範例,其中 8 個是向日葵,2 個是玫瑰。
圖 7. 將多數類別的樣本數減少 25 倍。

 

步驟 2:提高下採樣類別的權重

下取樣會向模型展示類別比現實世界更平衡的人工世界,進而造成預測偏差。如要修正這項偏差,您必須將多數類別「加權」,加權因數為您進行向下取樣的因數。加權表示對多數類別範例的損失,比對少數類別範例的損失更嚴厲。

舉例來說,我們將多數類別的樣本數減少 25 倍,因此必須將多數類別的權重增加 25 倍。也就是說,如果模型錯誤預測多數類別,請將損失視為 25 個錯誤 (將一般損失乘以 25)。

圖 8:系統會正常處理少數類別的不良預測損失。不過,如果對多數類別做出錯誤預測,損失會加重 25 倍。
圖 8. 將多數類別的權重調高 25 倍。

 

您應該減少取樣多少資料,並增加多少權重,才能重新平衡資料集?如要找出答案,您應嘗試不同的下取樣和加權因子,就像嘗試其他超參數一樣。

這項技術的優點

對多數類別進行向下取樣並提高權重,可帶來下列優點:

  • 更優質的模型:產生的模型「知道」以下兩件事:
    • 特徵與標籤之間的關聯
    • 類別的實際分布情形
  • 加快收斂速度:在訓練期間,模型會更常看到少數類別,有助於加快收斂速度。