資料集:不平衡資料集

請考慮含有分類標籤的資料集,其值為「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 應等於用於降樣時使用的因數:

 {example weight} = {original example weight} ×{downsampling factor} 

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

您也許會想知道,加權是否會抵銷降採樣。是的,在某種程度上是。不過,結合加權和下採樣,小批次就能包含足夠的少數類別,訓練有效的模型。

相較於對少數類別進行降樣和加權,單獨對少數類別加權通常更容易實作。不過,提高少數類別的權重通常會增加預測偏差。

對多數類別進行下採樣可帶來下列優點:

  • 收斂速度加快:在訓練期間,模型會更頻繁地看到少數類別,有助於加快收斂速度。
  • 減少磁碟空間:將多數類別合併為權重較大的少數樣本,模型便可使用較少的磁碟空間來儲存這些權重。這樣一來,您就能為少數類別節省更多磁碟空間,讓模型從該類別收集更多樣本,範圍也更廣泛。

很遺憾,您通常必須手動將多數類別降樣,這可能會在訓練實驗期間耗費大量時間,尤其是在處理非常大型資料集時。

重新平衡比率

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

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

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

練習:檢查您的理解程度

請考慮以下情況:

  • 訓練集包含略多於十億個範例。
  • 批次大小為 128。
  • 不平衡比率為 100:1,因此訓練集會以以下方式劃分:
    • 約 10 億個多數類別的示例。
    • 約 1,000 萬個少數類別的示例。
下列敘述何者正確?
將批次大小增加至 1,024 可改善產生的模型。
目前的超參數沒問題。
將批次大小維持在 128,但將下採樣 (和加權) 設為 20:1,可改善產生的模型。