我有一個5000行的要素數據集,我想在其中進行二元分類。我有它2類載體:具有不平衡數據集問題的二進制分類
Y1 - 類是相當平衡的(0 - 52%/ 1- 48%)
Y2 - 類是非常不平衡(0 - 90%/ 1 - 10%)
我已經將數據集分成訓練集(4000個樣本)和測試集(1,000個樣本)。
於是,我寫了簡單的代碼來獲得一個數據集X
和類矢量Y
,並創建了一個平衡的數據集len = 2
X number of minority class
。
例如,在上面的訓練數據集中,使用90%/ 10%類矢量,將會有400 1和3200 0,因此它將創建一個新的800個樣本數據集, 400個隨機選擇的0類樣本,將被平衡。
因此,從一個4,000個樣本不平衡訓練集中,我得到一個800個樣本平衡數據集,並將其用於訓練學習算法。
然後,我使用在附加的1,000個樣本(測試集)上創建的模型。
我在兩個類向量上運行均衡代碼 - 均衡和不平衡的(即使我不需要它在平衡類向量中)。
當使用平衡類載體,我得到了1000的樣品測試集這混亂的矩陣:
[339 126
288 246]
precision recall f1-score support
0.0 0.54 0.73 0.62 465
1.0 0.66 0.46 0.54 534
avg/total 0.61 0.59 0.58 999
當使用不平衡類載體,我得到了1000的樣品測試集這混亂的矩陣:
[574 274
73 78]
precision recall f1-score support
0.0 0.89 0.68 0.77 848
1.0 0.22 0.52 0.31 151
avg/total 0.79 0.65 0.70 999
如您所見,等級1的精度非常低。
我還使用了包imbalanced-learn中的幾種算法來創建一個平衡的數據集(比如在採樣下,使用集羣質心或者使用SMOTE SVM進行過採樣),但結果總是相同的 - 類1的精度(少數階層)保持非常低的水平。
請問你能告訴你在這種情況下你會做什麼?我的目標是嘗試將不平衡類向量中的類1的精度提高到0.6左右,因爲它在平衡類向量中。
我遇到過類似的情況,你有沒有想出任何解決方案? – Charlotte