假設某個資料集內含以下類別標籤的值: 正面或負數。在平衡的資料集中,正面和負面標籤的數量大致相同。不過,如果某個標籤比另一個標籤更常見,則資料集就會失衡。在資料集不平衡的情況下,主要標籤稱為多數類別;較少見的標籤則稱為少數類別。
下表列出不同程度的失衡情形的一般名稱和範圍:
屬於少數類別的資料百分比 | 不平衡的度數 |
---|---|
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)。這裡的 weight 是指 範例權重:提高個別範例的重要性 儲存權重權重 10 表示模型會將該範例視為 運算損失的 10 倍很重要 (例如運算損失) 權重 1。
weight 應等於用於降樣時使用的因數:
\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]
降低取樣後,新增範例權重看起來似乎不是問題。畢竟您試圖讓模型改善少數類別,為何要提高多數類別的權重?事實上,提高多數類別的權重,往往會降低預測偏差。也就是說 反過取樣後的權重反而會降低 模型預測結果和資料集標籤平均值。
重新平衡比率
您應將多少樣本數降至最低,並提高多少權重,才能重新平衡資料集?如要找出答案 建議您嘗試重新平衡比率 就像實驗其他委刊項一樣 「超參數」。 儘管如此,答案最終取決於下列因素:
- 批量
- 失衡比率
- 訓練集的範例數量
理想情況下,每個批次應包含多個少數類別範例。 如果批次作業中的少數類別數量不足,訓練成效就會相當差。 批量應大於不平衡比率的倍數。 舉例來說,如果不平衡比率為 100:1,則批量大小應至少為 500。
練習:檢查您的理解程度
請考慮以下狀況:
- 這個訓練集含有超過 10 億個範例。
- 批次大小為 128。
- 不平衡比率為 100:1,因此訓練集會以以下方式劃分:
- 約有 10 億個類別範例。
- 約 1,000 萬個少數類別範例。