假設某個資料集內含以下類別標籤的值: 正面或負數。在已平衡的資料集中,正向的數量 和排除標籤大約相同。但是,如果其中一個標籤比較常見 那麼資料集 不平衡。 在不平衡的資料集中,主要標籤稱為 主要類別; 較不常見的標籤稱為 少數類別。
下表列出一般可接受的名稱和範圍 不同程度的不平衡:
屬於少數類別的資料百分比 | 不平衡的度數 |
---|---|
資料集的 20-40% | 溫和 |
資料集的 1-20% | 中 |
小於資料集的 1% | 極端 |
比如,假設有一個病毒偵測資料集 代表資料集的 0.5%,而多數類別則代表 99.5%。 像這樣非常不平衡的資料集在醫學領域很常見,因為 大多數科目不會有病毒。
不平衡的資料集有時會缺少少數少數類別 才能正確訓練模型 也就是說,正面標籤太少,模型幾乎只會在 排除標籤,對正面標籤不夠瞭解例如: 如果批量為 50,許多批次就不會包含正標籤。
通常,尤其是對於輕微的不平衡和中等的平衡 容錯則沒有問題因此,建議您先試用 對原始資料集的內容進行訓練如果模型的成效良好,就大功告成了。 如果不是,則至少較不理想的模型可提供 日後實驗的基準。 之後,您可以嘗試下列技巧來解決問題 完全是平衡資料集所造成
降低取樣和加權
處理不平衡資料集的其中一種方法是減少取樣並增加 多數類別。這兩個新字詞的定義如下:
步驟 1:將主要類別向下取樣。請考慮 這個病毒資料集每 200 個負數的比率為 1 標籤降低取樣率 設為 20 可讓餘額增加 1 至 10 個負數 (10%)。雖然 產生的訓練集仍中等,但 正好比原本的極度不平衡 比例 (0.5%)。
步驟 2:提高向下取樣類別的權重:新增範例 對應至向下取樣類別將係數降低為 20 後 範例權重應為 20。(沒錯,這可能看似出人意料,但 稍後會再說明原因)。
「weight」一詞不是模型參數 (例如 w1 或 w2)。這裡的 weight 是指 範例權重:提高個別範例的重要性 儲存權重權重 10 表示模型會將該範例視為 運算損失的 10 倍很重要 (例如運算損失) 權重 1。
weight 應與您用於縮減的因數相同:
\[\text{ \{example weight\} = \{original example weight\} × \{downsampling factor\} }\]
降低取樣後,新增範例權重看起來似乎不是問題。畢竟,各位 想讓模型改進少數類別 多數類別?事實上,大多數類別的權重會降低 預測偏誤。也就是說 反過取樣後的權重反而會降低 模型預測結果和資料集標籤平均值。
重新平衡比率
為了重新平衡資料集,您應縮減多少樣本並增加權重? 如要找出答案 建議您嘗試重新平衡比率 就像實驗其他委刊項一樣 「超參數」。 儘管如此,答案最終取決於下列因素:
- 批量
- 不平衡比率
- 訓練集內的樣本數量
理想情況下,每個批次應包含多個少數類別範例。 如果批次作業中的少數類別數量不足,訓練成效就會相當差。 批量應大於不平衡比率的倍數。 舉例來說,如果不平衡比率為 100:1,則批量應 最低為 500。
練習:隨堂測驗
請考慮以下狀況:
- 批量為 128。
- 不平衡比率為 100:1。
- 訓練集包含 10 億個範例。