見出し画像

各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


いいなと思ったら応援しよう!