Unbalanced-Classes

使用分類變量過採樣

  • June 18, 2014

我想執行過採樣和欠採樣的組合,以平衡我的數據集,將大約 4000 名客戶分為兩組,其中一組的比例約為 15%。

我研究了 SMOTE(http://www.inside-r.org/packages/cran/DMwR/docs/SMOTE)和 ROSE(http://cran.r-project.org/web/packages/ROSE/ ROSE.pdf),但兩者都使用現有的觀察結果和例如 kNN 創建新的合成樣本。

但是,由於與客戶相關的許多屬性都是分類的,我認為這不是正確的方法。例如,我的很多變量,例如 Region_A 和 Region_B 是互斥的,但是使用 kNN 新的觀察結果可能會同時放在 Region_A 和 Region_B 中。你同意這是一個問題嗎?

在那種情況下 - 如何通過簡單地複制現有觀察結果在 R 中執行過採樣?或者這是錯誤的方法嗎?

ROSE 和 SMOTE 旨在處理分類變量,因此,除非您的分類變量以二進制格式表示,否則您通常不必擔心合成觀察值被分配互斥的分類特徵。如果是這樣,您總是可以將它們作為因素進行重組。

在您的雙區域示例中,您將創建一個具有兩個級別“A”和“B”的新區域變量。您的記錄將通過引用您的原始列來獲取適當的值。

現在,如果您的新合成觀察結果可能會產生衝突的類別,因為它們分佈在多個原本不相關的變量中(例如,syntheticObservation.isPig = 1 和 synthesisObservation.hasWings = 1),您總是可以執行一些額外的數據處理在進行模型估計以清除此類異常之前。

此外,由於您的數據集中確實有大約 600 個事件觀察,也許考慮使用通過對多數類進行欠採樣而得出的合成觀察的潛在好處?

引用自:https://stats.stackexchange.com/questions/103824

comments powered by Disqus