私はデータの前処理に取り組んでおり、データ標準化vs正規化vsロバストスケーラーの利点を実際に比較したいと思います。
理論的には、ガイドラインは次のとおりです。
利点:
欠点:
私は20個のランダムな数値入力を作成し、上記の方法を試しました(赤い色の数値は外れ値を表します):
-indeed-正規化が外れ値によって悪影響を受け、新しい値間の変更スケールが小さくなったことに気付きました(すべての値がほぼ同じ-6小数点以下の桁数-0.000000x
)でも、元の入力に顕著な違いがあります!
P.S
ニューラルネットワーク用にデータセットを準備したいシナリオを想像していて、消失する勾配問題が心配です。それにもかかわらず、私の質問はまだ一般的です。
標準化も極端な値によっても悪影響を受けると言っていいでしょうか?
確かにあなたはそうです。 scikit-learn docs 自体は、このような場合に明確に警告します。
ただし、データに外れ値が含まれている場合、
StandardScaler
は誤解を招くことがよくあります。このような場合は、外れ値に対してロバストなスケーラーを使用することをお勧めします。
多かれ少なかれ、同じことがMinMaxScaler
にも当てはまります。
Robust Scalerがどのようにデータを改善したのか、実際にはわかりませんextreme values結果のデータセット内ですか?単純な完全な解釈はありますか?
ロバストは免疫、またはinvulnerableを意味せず、スケーリングの目的は外れ値や極端な値を「削除」しない-これは独自の方法論を使用する個別のタスクです。これは、再び 関連するscikit-learn docs で明確に述べられています。
RobustScaler
[...]外れ値自体が変換されたデータにまだ存在していることに注意してください。別個の外れ値のクリッピングが望ましい場合は、非線形変換が必要です(以下を参照)。
ここで、「以下を参照」は QuantileTransformer
および quantile_transform
。
スケーリングが外れ値を処理し、制限されたスケールに置くという意味で、これらは堅牢ではありません。つまり、極端な値は表示されません。
次のようなオプションを検討できます。