Normalization, Standardization, Scaling

使い分けがわからない。
日本語だと「正規化」とか「標準化」とか「正則化」書いてあって、
あまり厳密に区別していないように見える。
「Normalization Standardization Scaling」で検索すると、
多くの人が混同しているようで、
「違いがわかりません!」というページがたくさん出てくる。
ぜんぶ英語だけど。
で、自分なりにまとめてみた。
間違ってたら教えて偉い人。

・Normalization
各ベクトルのL2ノルムが1になるように収める。
L1ノルムを指定することもあるらしい。
(ノルム norm を使うから normalization なの?)
「正則化」と訳してあることが多い。
L2ノルムとは各特徴量の二乗の和。
L1ノルムは二乗しない絶対値の和。
ちなL0ノルムもあって、値が0でない特徴量の和、らしい。
どんな説明を読んでも、なんかぴんと来ない(笑

・Standardization
各ベクトルの平均0、標準偏差1にする。
これは各ベクトルなのか、
全ベクトルの特定の feature ごとなのか、
どっちもアリなのかは不明。
ちなみに R e1071 パッケージ svm の scale オプションは、
TRUE にすると、全ベクトルの各特徴量を串刺しで
ゼロ平均+分散1の変換をするので、
厳密には standardization なのだろうと思う。
(標準偏差を見るから、standardization なのかも)

・Scaling
値を特定の範囲([0,1]とか?[-1,1]とか?)に収める。
これも、各ベクトルなのか、
全ベクトルなのか、
全ベクトルの特定のrowなのか、
全部アリなのかは不明。
normalization も standardization も含めて scaling と言ったり、
別扱いしているページもあったり、
色々でよくわからない。


参考(主なもの):
http://scikit-learn.org/stable/modules/preprocessing.html
http://blog.pengyifan.com/scale-standardize-and-normalize-data/
http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html

×××

機械学習とかパタン認識とかの説明を読むと、
どうも日本語よりも英語のほうがわかりそうな気がする
(多分に気のせいだと思うんだが)。
日本語に訳して、難しい感じになっちゃったり、
視認性が下がったりして読みづらくなっているのかなぁ。
例えば、クラス分類とクラスタリングを混同する人が多いのも、
classification / clustering と書くと、
全然違うから混同しないのではと思ったり。
[PR]
by xiaoxia | 2014-07-01 18:42 | コンピュータ関係 | Comments(0)

ダメ女プログラマ&主婦&腐女子&バイオリン弾き


by 小霞