機器學習中上(過)、下(欠)採樣的方法

過採樣:

  • smote
  1. 假設有兩個class:class1 和 class2 ,其中class1樣本數少
  2. 從class1中隨機選擇一個點C,找到該點的K個鄰居
  3. 從K個鄰居中隨機選擇一個點C_ne
  4. 連接C與C1,在C與C_ne的連線上生成新的點C_new
  5. 重複1-4 M步驟,可構造M個點
from sklearn.datasets import make_classification
from imblearn.over_sampling import SMOTE
from  collections import Counter

# 構造不平衡數據
x,y=make_classification(n_classes=2,n_features=20,n_samples=100,shuffle=True,weights=[0.9,0.1])

#
smt=SMOTE(k_neighbors=4,sampling_strategy=0.5)
x1,y1=smt.fit_resample(x,y)
print(Counter(y1))

 

欠採樣:

   參考文章:https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/tsmcb09.pdf

  • EasyEnsemble

  • BalanceCascade

  1. EasyEnsemble 中下采樣的方式是無監督的,只是將N做有放回的抽樣,然後與P一起,構成子樹的樣本集
  2. BalanceCascade 中下采樣的方式是有監督的,在1的基礎上,用adaboost方法生成分類器H1,用H1去對N中的樣本做預測,如果預測對的話,那麼認爲該樣本是冗餘的,就可以從N中去除;
  3. 上述兩個算法是將下采樣與分類器一併構造;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章