七招教你處理非平衡數據——避免得到一個“假”模型
首發地址:https://yq.aliyun.com/articles/93547
這篇博客主要介紹處理不平衡數據的技巧,那麼什麼是不平衡數據呢?比如說一位醫生做了一個病例對照研究,數據集由病例10
不平衡數據廣泛存在於各個領域,但在二分類問題中尤其常見,表現為其中的一個類別所占的比例遠遠高於另外的一個類。比如:銀行欺詐檢測、市場營銷、網絡入侵檢測等領域。
這些領域中的數據集有哪些共同點呢?可以發現1一旦發生就是一件“的違規交易,用戶點擊廣告或原本已損壞的服務器在掃描其網絡)。然而,大多數機器學習算法對於不平衡數據集都不能很好地工作。以下七種技術可以幫助我們訓練分類器來檢測異常類。
1.
“0”
在這種情況下,可以應用其他評估指標替代精度指標,例如:
-
/
-
/
- F1
- Matthews
- ROC
2.
——
2.1.
欠采樣是通過減少豐富類的大小來平衡數據集,當數據量足夠時就該使用此方法。通過保存所有稀有類樣本,並在豐富類別中隨機選擇與稀有類別樣本相等數量的樣本,可以檢索平衡的新數據集以進一步建模。
2.2.
相反,當數據量不足時就應該使用過采樣,它嚐試通過增加稀有樣本的數量來平衡數據集,而不是去除豐富類別SMOTE[1]來生成新的稀有樣品。
注意到欠采樣和過采樣這兩種方法相比而言,都沒有絕對的優勢。這兩種方法的應用取決於它適用的用例和數據集本身。另外將過采樣和欠采樣結合起來使用也是成功的。
3.
值得注意的是,使用過采樣方法來解決不平衡問題時應適當地應用交叉驗證。這是因為過采樣會觀察到罕見的樣本,並根據分布函數應用自舉生成新的隨機數據,如果在過采樣之後應用交叉驗證,那麼我們所做的就是將我們的模型過擬合於一個特定的人工引導結果。這就是為什麼在過度采樣數據之前應該始終進行交叉驗證,就像實現特征選擇一樣。隻有重複采樣數據可以將隨機性引入到數據集中,以確保不會出現過擬合問題。
K-fold
4.
成功泛化模型的最簡單方法是使用更多的數據,問題是像邏輯回歸或隨機森林這樣開箱即用的分類器,傾向於通過舍去稀有類來泛化模型。一個簡單的最佳實踐是建立n個模型,每個模型使用稀有類別的所有樣本和豐富類別的n個不同樣本。假設想要合並10那麼1000類別類別。然後,10000訓練10
如果擁有大量數據,這種方法是簡單並且是可橫向擴展的,這是因為可以在不同的集群節點上訓練和運行模型。集合模型也趨於泛化,這使得該方法易於處理。
之前的方法可以很好地將稀有類別和豐富類別之間的比例進行微調,10都是有意義的。一個類別獲得的權重依賴於使用的模型。
6.
Sergey Quora[2],他建議不要依賴隨機樣本來覆蓋訓練r類別。然後,基於稀有類和僅保留的類別對該模型進行訓練。
7.
所有之前的方法都集中在數據上,並將模型保持為固定的組件。但事實上,如果設計的模型適用於不平衡數據,則不需要重新采樣數據,著名XGBoost,因此設計一個適用於不平衡數據集的模型也是很有意義的。
通過設計一個代價函數來懲罰稀有類別的錯誤分類而不是分類豐富類別,可以設計出許多自然泛化為稀有類別的模型。例如,SVM懲罰稀有類別的錯誤分類。
本文不是一個排外的技術列表,而是處理不平衡數據的一些建議。沒有適合所有問題的最佳方法或模型,強烈建議嚐試不同的技術和模型來評估哪些方法最有效並嚐試創造性地結合不同的方法。同樣值得注意的是,在不平衡類別發生的許多領域中,隨著“的不斷變化,需要檢查過去的數據是否過時。
Ye Wu在營銷和銷售預測方麵具有會計和實踐經驗的背景IE
Rick Radewagen是一位有抱負的數據科學家,擁有計算機科學的背景IE
7 Techniques to Handle Imbalanced Data
最後更新:2017-07-12 22:11:56