記事のディレクトリ
✌オーバーサンプリングとアンダーサンプリング
1.✌サンプリング入門
分類問題では、正と負の例の数に大きな違いがあり、この状況はカテゴリの不均衡と呼ばれます。
この問題を解決するには、2つの方法があります。正の例の数が多く、負の例の数が非常に少ないとします。
1.肯定的な例の数を減らし、データのバランスを取り、さらに分類すると、この状況は「アンダーサンプリング」になります。
2.反例の数を増やしてデータのバランスを取り、分類します。これは「オーバーサンプリング」と呼ばれます。
2.✌オーバーサンプリング
2.1ランダムサンプリング:
少数のサンプルを追加し、サンプルの数がサンプルの大部分と等しくなるまで、元の少数のサンプルからランダムにサンプルを選択します
2.2 SMOTEサンプリング:
合成戦略は、各マイノリティサンプルaの最近傍からサンプルbをランダムに選択し、次にaとbの間の線上の点を新しく合成されたマイノリティサンプルとしてランダムに選択することです。
3.✌アンダーサンプリング
オーバーサンプリングとは反対に、あまりにも多くのサンプルを破棄します
4.✌コードデモ
1.1✌データを作成する
x=np.array([[1,2],[3,5],[3,5],[2,4],[5,9],[8,7],[13,5],[1,32],[1,8],[5,3]])
y=np.array([0,0,0,0,0,1,1,1,1,1])
from collections import Counter
Counter(y)
1.2✌ランダムサンプリング
from imblearn.over_sampling import RandomOverSampler
ros=RandomOverSampler(random_state=0)
x_over,y_over=ros.fit_resample(x,y)
Counter(y_over)
1.3✌SMOTEサンプリング
from imblearn.over_sampling import SMOTE
smote=SMOTE(random_state=0)
x_smote,y_smote=smote.fit_resample(x,y)
y_smote
1.4✌アンダーサンプリング
from imblearn.under_sampling import RandomUnderSampler
rus=RandomUnderSampler(random_state=0)
x_under,y_under=rus.fit_resample(x,y)
y_under