以下是翻譯自:Learning from imbalanced data
在這篇博客文章中,我將討論在訓練機器學習模型時處理不平衡數據的許多注意事項和技術。 該博客文章主要依靠sklearn 不平衡包 imbalanced-learn來實現所討論的技術。
在不平衡數據集上訓練機器學習模型會給學習問題帶來獨特的挑戰。 數據不平衡通常是指分類問題,其中每個類別的樣本數不均等分布。 通常,對于一個類(稱為多數類),擁有大量的數據/觀測值,而對于一個或多個其他類(稱為少數類),則具有較少的觀測值。 例如,假設要建立一個分類器,以對信用卡交易中的欺詐交易或真實交易進行分類每1次欺詐交易就可能有10,000次真實交易,這是相當不平衡的
為了理解類不平衡帶來的挑戰,考慮訓練模型的兩種常用方法:根據某些分裂準則開發的基于樹的邏輯規則(tree-based logical rules),以及通過梯度下降更新的參數化模型( parameterized models updated by gradient descent)。
在構建基于樹的模型(例如決策樹)時,我們的目標是找到能夠提取完整數據集并將觀察結果分成不同類別的邏輯規則。 換句話說,我們希望樹中的每個分割都可以增加觀測的純度,以便將數據過濾到同質的組中。 如果我們存在多數類,那么決策樹的頂部很可能會學習將多數類分為純組的拆分,但要以將少數類分開的學習規則為代價。
對于更具體的示例,這是在“葡萄酒質量數據集”上訓練的決策樹,本文稍后將作為示例。 字段value表示給定節點中每個類別的觀察次數。
同樣,如果要通過梯度下降來更新參數化模型以最小化損失函數,則將進行大部分更新, 沿多數類正確分類的方向更新參數值。 換句話說,許多機器學習模型都受到頻率偏差的影響,在該模型中,他們更加會從更常見的數據樣本中學習。
值得注意的是,并非所有數據集都會受到類不平衡的同等影響。 通常,對于易于區分的問題(其中數據之間存在明確的分隔),類的不平衡不會影響模型的有效學習能力。 但是,當引入類別不平衡時,本來就更難于學習的數據集會導致學習難上加難。
1. 評估指標
處理不平衡數據時,標準分類指標不能充分代表模型性能。 例如,假設您正在構建一個模型,該模型將查看一個人的病歷并對他們是否可能患有罕見病進行分類。 直到您意識到它正確地將99.5%的健康人歸類為“無疾病”,并錯誤地將0.5%的確實患有該病的人歸類為健康,準確性才可能看起來不錯。 我在評估機器學習模型的帖子中對此進行了討論,但是在這里,我還將提供有關處理不平衡數據時的有用指標。
*準確率 *