🙂
機械学習前処理:スケーリングについて
スケーリングとは、機械学習でデータセットの特徴量の範囲を統一する処理のことです。異なるスケールの特徴量が混在していると、モデルの性能に影響を与える可能性があります。
スケーリングについて、分かりやすく簡単にまとめておきますね。
スケーリングが重要な機械学習のモデル
ニューラルネットワークや、線形回帰や、SVMを使う場合は、スケーリングは大事です。
決定木ベースのモデル(ランダムフォレスト、LightGBM、XGBoostなど)は、スケールの違いによる影響が少ないとされますが、特徴量によっては、スケーリングを行ったほうが良い結果が得られます。
主なスケーリング手法
StandardScaler、MinMaxScaler、RobustScalerがあります。
StandardScaler
-特徴: 平均を0、標準偏差を1にスケーリング。
-メリット: 外れ値以外のデータに対して効果的。
-デメリット: 外れ値に影響されやすい。
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
処理前
48.220714
処理後
-0.759715
MinMaxScaler
-特徴: 0から1の範囲にスケーリング(または他の指定範囲)。
-メリット: 全ての値を正の範囲に保つ。
-デメリット: 外れ値に非常に敏感。
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data)
処理前
48.220714
処理後
0.234239
RobustScaler
-特徴: 中央値と四分位数を使用してスケーリング。
-メリット: 外れ値に強い。
-デメリット: データの分布によっては効果が限定的。
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
scaled_data = scaler.fit_transform(data)
処理前
48.220714
処理後
-0.091777
スケーリングの方法の使い分け
通常は、StandardScalerが良いかと思います。マイナスにしたくない場合は、MinMaxScalerが良さそうです。外れ値があり、その影響を減らしたい場合は、RobustScalerを試してみましょう。
Discussion