各Scaler の使用場面
Scaling とは
Scaling とは、データセット内の各特徴量のスケール(重み)を等しくする前処理操作の事。
学習モデルに生データを突っ込むと、特徴量の重み付けの段階で、各特徴量のスケール差が影響してしまう場合がある。本来、特徴量スケールの差と各特徴量の重要度に相関は無いので、この影響は取り除かれたい。
各特徴量のスケールを等しくすることで、そのスケール差が生む
"特徴量重要度" への影響を取り除いてくれるのが "Scaling" である。
Scalingのメリットとデメリット
大前提として、Scaling の持つメリットとデメリットは、扱うデータセットの性質に依存することを念頭に置きたい。
メリット:スケールを考慮せずに複数の学習モデルを試せる。
学習モデルの中には各特徴量スケールの違いに非常に敏感なモデルもある(カーネル法を用いたSVMなど)。これらのモデルに対するスケールの影響を考慮しないで済むため、分析の手間を省くことが出来る。
デメリット:スケーリングによる分析結果への影響を理解する必要がある。
データ分析では、データセットと使用する分析モデル(スケーラ・学習モデル)それぞれに個性がある。扱うデータセットと合わないモデルを使用すると無駄な解釈が必要となり、分析結果の説明が複雑となる恐れがある。後程、具体的な例を示す。
以下、スケーリングが不要な例
・特徴量スケールが同じ
・特徴量スケールの差に依存しないモデル(決定木)をもちいる場合
Standard Scaler (標準化)
平均0, 分散1とするスケーリング
外れ値に敏感
当たり障りないスケーリングの為、最も一般的。但し、外れ値に対する処置も無いため、その点のみきちんと考慮する必要がある。
"Scalingとは" の項で説明した「分析結果の説明が複雑となる」例を示す。
例えば、外れ値が異常に大きいデータセットを分析するケースを考える。ここにStandard Scalerを適用してしまうと、一つの特徴量における外れ値が、特徴量全体に影響してしまう。この状態で得られた学習モデルによる分析結果を説明する際、Scaling による外れ値の影響もクリアしなければならない。
以上よりデータ分析を行う際は、
・Scaler の個性を予め知る
・データセットの特徴を知る
・Scaler が効果的に用いれるような前処理をデータセットに施す
という手順が必要となる。
Min Max Scaler (正規化)
最小値0, 最大値1とするスケーリング
全ての値が正となる
解釈性が高い
外れ値に敏感
Min Max Scalerの最大のメリットは、解釈性の高さ、一定の範囲に必ず収まることであろう。0~1の範囲にスケーリングされることで、人間が直観的にその模様を理解できる。
また、出力値を0~1する場合のニューラルネットワークモデルにも有用である。(これは実務を行わないと具体的に分からないが、、、)
以上の理由で、Standard Scaler ではなく Min Max Scaler を採択する場合がある。
Robust Scaler
中央値0, 四分位範囲1とするスケーリング
外れ値を除外する
全データを用いないことによるデータセット縮小
各スケーリング手法共通の弱点である "外れ値" に強いScaling手法。
待っていました!(笑)
但し、四分位範囲はデータセット全体の25%~75%を指す。つまり、スケーリング後のデータセットは生データの50%しか用いられない。データセットの大きさが十分か、四分位範囲外のデータに重要な情報(局所的なクラスタなど)が残存していないか考慮する項目が複数ある。その為、データセットとの相性を見て適切に使用するための能力が、比較的求められる。
Normalizer
ベクトルの角度は維持したまま、大きさを1とするスケーリング
ベクトルの大きさによる特徴量重要度の評価ができない
具体的な使用ケースは分からない。実際に使うときが来たら改めて勉強してみようと思う。
まとめ
Scaling は各特徴量のスケール差を無くし、それらの重要度を適切に評価するための手法
データセットと Scaler それぞれの個性を把握する必要がある。
一般的には Standard Scaler
解釈性を上げたい、出力値を0~1に調整したい場合は Min Max Scaler
外れ値を取り除きたい場合は Robust Scaler (データセットが十分大きく、四分位範囲外で局所的な情報が見当たらない場合)
参考文献
AndreasC. Muller, Sarah Guido, Hidemoto Nakata, Pythonで始める機械学習, O'REULLY, 2020