データの前処理する時、よく標準化と正規化をどちら使うか困ったりするので、
自分の経験と感想を軽く整理してメモします。
標準化とは?
標準化(Standardization)とは元のデータ集合がどのような分布でも、
「平均値0、標準偏差1」の分布にする変換です。
z_i = \frac{x_i-\bar{x}}{s}
$x_i:$ 元のデータ
$\bar{x}:$ 元のデータの平均
$s:$ 元のデータの標準偏差
正規化とは?
正規化(Normalization)とは元のデータ集合を「0~1」に抑える変換です。
x_i' = \frac{x_i-x_{min}}{x_{max}-x_{min}}
使うシーン
簡単に言うと
1. データの分布を知りたい時は標準化(Standardization)を使います
例えば、クラスのある生徒Chenの英語成績を調査するとします。
満点が100点の中、60点は低いと思うかもしれないですが、
本当は標準化の分布を見ないとわからないですね。
科目 | 名前 | 成績(標準化前) | 成績(標準化後) |
---|---|---|---|
英語 | Bob | 40 | -1.22 |
英語 | James | 53 | -0.08 |
英語 | Kevin | 44 | -0.87 |
英語 | Tanaka | 55 | 0.08 |
英語 | Sato | 72 | 1.56 |
英語 | Chen | 60 | 0.52 |
Chenの成績(標準化後)を見たら、0.51は低くないことがわかります。
データが少ない場合は目で判断しても問題ないですが、多くなると標準化を使った方が楽ですね。
2.特徴量の影響を抑えたい時は正規化(Normalization)を使います
例えば、住宅価格を予測するとします。
部屋数 | 築年数 | 最寄り駅までの距離(m) | 価格(万円) |
---|---|---|---|
1 | 2 | 1000 | 10 |
2 | 5 | 3500 | 7.5 |
2 | 17 | 5000 | 6 |
3 | 15 | 800 | 10.5 |
2 | 12 | 2000 | 9 |
1 | 8 | 3000 | 6.5 |
仮に、住宅価格を予測する計算式(適当)が以下のようなものであれば、
$住宅価格 = 10\times部屋数 + 20\times築年数 + 20\times最寄り駅までの距離 + 5$
この場合、最寄り駅までの距離の影響が他の特徴より大きいから、正確に予測できなくなる可能性があります。
こんな時は、各特徴を正規化して、同じ0~1の範囲に抑えたら解決できます。
(計算を略します、、)
結論
- あるデータの分布の興味ある時、標準化を使います。
- 特徴量の影響を抑える時、正規化を使います。