web-dev-qa-db-ja.com

データ標準化vs正規化vsロバストスケーラー

私はデータの前処理に取り組んでおり、データ標準化vs正規化vsロバストスケーラーの利点を実際に比較したいと思います。

理論的には、ガイドラインは次のとおりです。

利点:

  1. Standardization:分布が0を中心とし、標準偏差が1になるようにフィーチャをスケーリングします。
  2. Normalization:範囲を縮小して、範囲が0から1(負の値がある場合は-1から1)になるようにします。
  3. ロバストスケーラー:正規化に似ていますが、代わりに四分位範囲を使用するため、外れ値に対してロバストです。

欠点:

  1. 標準化:データが正常に分布していない場合(つまり、ガウス分布がない場合)は良好ではありません。
  2. 正規化:外れ値(つまり、極値)の影響を強く受けます。
  3. Robust Scaler:中央値を考慮せず、バルクデータがある部分にのみ焦点を当てます。

私は20個のランダムな数値入力を作成し、上記の方法を試しました(赤い色の数値は外れ値を表します):

Methods Comparison


-indeed-正規化が外れ値によって悪影響を受け、新しい値間の変更スケールが小さくなったことに気付きました(すべての値がほぼ同じ-6小数点以下の桁数-0.000000x)でも、元の入力に顕著な違いがあります!


私の質問は:

  1. 標準化も極端な値によっても悪影響を受けると言っていいでしょうか?そうでない場合、提供された結果によれば、なぜですか?
  2. Robust Scalerがどのようにデータを改善したのか、本当にわかりませんextreme結果のデータセットの値?単純な完全な解釈はありますか?

P.S

ニューラルネットワーク用にデータセットを準備したいシナリオを想像していて、消失する勾配問題が心配です。それにもかかわらず、私の質問はまだ一般的です。

6
Mike

標準化も極端な値によっても悪影響を受けると言っていいでしょうか?

確かにあなたはそうです。 scikit-learn docs 自体は、このような場合に明確に警告します。

ただし、データに外れ値が含まれている場合、 StandardScaler は誤解を招くことがよくあります。このような場合は、外れ値に対してロバストなスケーラーを使用することをお勧めします。

多かれ少なかれ、同じことがMinMaxScalerにも当てはまります。

Robust Scalerがどのようにデータを改善したのか、実際にはわかりませんextreme values結果のデータセット内ですか?単純な完全な解釈はありますか?

ロバストは免疫、またはinvulnerableを意味せず、スケーリングの目的は外れ値や極端な値を「削除」しない-これは独自の方法論を使用する個別のタスクです。これは、再び 関連するscikit-learn docs で明確に述べられています。

RobustScaler

[...]外れ値自体が変換されたデータにまだ存在していることに注意してください。別個の外れ値のクリッピングが望ましい場合は、非線形変換が必要です(以下を参照)。

ここで、「以下を参照」は QuantileTransformer および quantile_transform

10
desertnaut

スケーリングが外れ値を処理し、制限されたスケールに置くという意味で、これらは堅牢ではありません。つまり、極端な値は表示されません。

次のようなオプションを検討できます。

  • スケーリング前のシリーズ/配列のクリッピング(たとえば、5パーセンタイルと95パーセンタイルの間)
  • クリッピングが理想的でない場合は、平方根や対数などの変換を行う
  • 明らかに、「is clipped」/「logarithmic clipped amount」という列を追加すると、情報の損失が減ります。
0
nupam