機械学習の前処理"スケール変換"まとめ
概要
機械学習の前処理"スケール変換"についてまとめました。
以下を参考にしました。
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
- 作者: Andreas C. Muller,Sarah Guido,中田秀基
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/05/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
3.3 前処理とスケール変換
スケール変換とは
すべての特徴量を、ほぼ同じスケール(目盛り)に変換すること。
なぜ必要か
データの特徴量(説明変数)が複数ある場合、それらのスケールが異なると、スケールが大きい特徴量が強く効いてしまうため。
例えば、住宅価格を決める特徴量として、周辺の犯罪率(0.0 ~ 1.0)と、築年数(0~100年)がある場合、2つの特徴量を同列に扱うと、築年数の方がスケールが大きいため、強く効いてしまう。
スケール変換の例
以下に4つのスケール変換を示す。
変換方法は、⇒の右側に記載。
- StandardScale(標準化)⇒ 平均=0、分散=1
- MinMaxScaler(正規化) ⇒ 最小値=0、最大値=1
- RobustScaler(頑健化?) ⇒ 中央値=0、四方位数=1
- Normalizer(これも正規化?) ⇒ 特徴量ベクトルユークリッド長=1
サンプルコード
sklearnのload_breast_cancerデータを用いて、SVCに対して、
- 前処理なし
- MinMaxScaler
- StandardScaler
の3種類で計算しています。
結果としては、MinMaxScaler > StandardScaler > 前処理なし
の順番で精度が良かったです。前処理なしが圧倒的に精度が低く、何らかの前処理はやった方が良さそうですね!