尺度を揃える必要性

多くの機械学習アルゴリズムでは、特徴量のスケールが異なる場合に性能が悪化する

例えば k 近傍法は未知データと教師データとの距離を利用するため、スケールが大きい特徴量の影響が支配的になる:

Scaled_vs_NotScaled

また、スケールが揃っていないとトレーニングが中々収束しないということが起こり得る。
下図は、目的関数の等高線に対して垂直に重みを更新する勾配降下法の例。

SGD

スケーリング手法

正規化

通常、特徴量を [0, 1] の範囲にスケーリングし直すことを意味する。

\[x_{norm}^{(i)} = \cfrac{x^{(i)} - x_{min}}{x_{max} - x_{min}}\]

特徴:

  • 有界な区間の値が必要な場合に役立つ
  • 問題点として、最大 or 最小に大きく外れた値があった場合に影響を受ける

標準化

平均値が0、標準偏差が1となるように変換する。

\[x_{std}^{(i)} = \cfrac{x^{(i)} - \overline{x}}{\sigma_x}\]
  • \(\overline{x}\): 特徴量の平均値
  • \(\sigma_x\): 特徴量の標準偏差

特徴:

  • 外れ値の悪影響を受けにくくなる
  • 変換後も、外れ値に関する情報(どの程度ほかデータからずれているのか)が保持される
\(x\) \(x_{norm}\) \(x_{std}\)
1.0 0.000000 -1.566699
2.0 0.111111 -1.218544
3.0 0.222222 -0.870388
4.0 0.333333 -0.522233
5.0 0.444444 -0.174078
6.0 0.555556 0.174078
7.0 0.666667 0.522233
8.0 0.777778 0.870388
9.0 0.888889 1.218544
10.0 1.000000 1.566699

Scaling