[英]Imbalanced data: undersampling or oversampling?
我有二元分類問題,其中一個類占所有觀察的99.1%(210 000)。 作為處理不平衡數據的策略,我選擇了采樣技術。 但我不知道該怎么做:對我的多數班級進行抽樣,或者對代表較少的班級進行過采樣。 如果有人有建議嗎?
謝謝。
Ps 我使用sklearn的隨機森林算法。
我認為上面接受的答案中有一個拼寫錯誤。 你不應該“低估少數人”和“對大多數人進行過度抽樣”; 相反,你應該對大多數人進行抽樣,並對少數人進行過度抽樣。
如果您熟悉Weka,您可以輕松地嘗試使用不同的數據不平衡技術和不同的分類器來研究哪種方法效果最好。 對於Weka中的欠采樣,請參閱此文章: weka上的smote和欠采樣的組合 。
對於Weka中的過采樣,您可以嘗試使用SMOTE算法(此處提供了一些信息: http : //weka.sourceforge.net/doc.packages/SMOTE/weka/filters/supervised/instance/SMOTE.html )。 當然,創建20,811個合成少數數據(即,如果您正在尋找平衡數據)在計算上比欠采樣更昂貴,因為:(1)與創建合成數據相關的計算成本; (2)與42,000個樣本(包括為少數群體類別創建的20,811個合成樣本)的訓練相關的計算成本更高,而不是21,000個樣本。
根據我的經驗,你提到的兩種數據不平衡方法都能很好地工作,但我通常首先使用欠采樣進行實驗,因為從資源的角度來看,我認為它的價格要低一些。
這里有用於欠采樣和過采樣的Python包:
您還可以研究成本敏感的分類技術,以通過成本矩陣懲罰少數群體的錯誤分類。
是一個超參數。 交叉驗證哪些最有效。 但是使用訓練/測試/驗證集。
欠:
當我們有數十億(很多)數據點並且我們沒有足夠的計算或內存(RAM)資源來處理數據時,通常會執行欠采樣。 與在完整數據上訓練數據或在某些情況下對過采樣數據進行訓練相比,欠采樣可能導致更差的性能。 在其他情況下,由於欠采樣,我們可能不會有明顯的性能損失。
當在有限的計算,存儲器和/或存儲約束內工作時,主要執行欠采樣以使模型的訓練更易於管理和可行。
過采樣:
過采樣往往效果很好,因為與欠采樣不同,過采樣不會丟失信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.