機械学習の前処理"スケール変換"まとめ

概要

機械学習の前処理"スケール変換"についてまとめました。

 

以下を参考にしました。

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

 

 3.3 前処理とスケール変換

 

スケール変換とは

すべての特徴量を、ほぼ同じスケール(目盛り)に変換すること。

なぜ必要か

データの特徴量(説明変数)が複数ある場合、それらのスケールが異なると、スケールが大きい特徴量が強く効いてしまうため。

例えば、住宅価格を決める特徴量として、周辺の犯罪率(0.0 ~ 1.0)と、築年数(0~100年)がある場合、2つの特徴量を同列に扱うと、築年数の方がスケールが大きいため、強く効いてしまう。

スケール変換の例

以下に4つのスケール変換を示す。

変換方法は、⇒の右側に記載。

  1. StandardScale(標準化)⇒ 平均=0、分散=1
  2. MinMaxScaler(正規化) ⇒ 最小値=0、最大値=1
  3. RobustScaler(頑健化?) ⇒ 中央値=0、四方位数=1
  4. Normalizer(これも正規化?) ⇒ 特徴量ベクトルユークリッド長=1

サンプルコード

sklearnのload_breast_cancerデータを用いて、SVCに対して、

  • 前処理なし
  • MinMaxScaler
  • StandardScaler

の3種類で計算しています。

結果としては、MinMaxScaler > StandardScaler > 前処理なし

の順番で精度が良かったです。前処理なしが圧倒的に精度が低く、何らかの前処理はやった方が良さそうですね!

 

gist5b075a3f1f3f2ae70864905160bbbdc4