このページは、特徴量の スケール(単位や値の範囲)が列ごとにバラバラなときに行う、代表的な前処理を短く整理するノートです。
(ライブラリ名は例として scikit-learn の用語を出しますが、思想は一般です。)
なぜ必要か
特徴によって値の範囲が大きく違うと、距離やマージンを使う手法では 大きいスケールの列だけが支配的になりやすいです。
例:一方の特徴が 0〜1、もう一方が 0〜100000 のような組み合わせ。
標準化(Standardization, z-score)
各特徴について、だいたい 平均0・分散1 になるように線形変換します。
[ z = \frac{x - \mu}{\sigma} ]
- (\mu):その特徴の平均
- (\sigma):標準偏差(0に近いときは別処理が必要なことがある)
正規化(Min-Max scaling)
各特徴を 固定範囲(典型は ([0,1]))に線形縮小します。
[ x_{\text{scaled}} = \frac{x - x_{\min}}{x_{\max} - x_{\min}} ]
どちらを使うか(目安)
- 標準化:外れ値の影響をある程度残しつつ、スケールを揃えたいとき
- Min-Max:厳密に範囲を決めたいとき(外れ値があると範囲が引き伸ばされやすい)
アルゴリズムごとの最適解は一つではないので、検証で比較するのが現実的です。