これらは2つの異なる目的で使用されます。
StandardScaler
各特徴列f:,iをf′:,i=f:,i−mean(f:,i)std(f:,i).
Normalizer
各変更のサンプル xn=(fn,1,...,fn,d)に x′n=xnsize(xn),
size(xn)のため
l1
ノルムがある∥xn∥1=|fn,1|+...+|fn,d|、
l2
ノルムは∥xn∥2=f2n,1+...+f2n,d−−−−−−−−−−−√、
max
ノルムがある∥xn∥∞=max{|fn,1|,...,|fn,d|}。
コントラストを示すために、データセットを検討{1,2,3,4,5}一次元(各データポイントは一つの特徴を有している)であり、
塗布した後StandardScaler
、データセットになる{−1.41,−0.71,0.,0.71,1.41}。
任意のタイプのを適用した後Normalizer
、データセットは{1.,1.,1.,1.,1.}になります。これは、唯一の機能がそれ自体で分割されるためです。そうNormalizer
この場合は役に立ちません。フィーチャーに異なる単位がある場合、たとえば、(height,age,income)も役に立ちません。
この回答で述べたように、Normalizer
大きな値による数値の不安定性を回避するために、トレーニング中にパラメータベクトルなどの反復プロセスでベクトルのサイズを制御するのに最も役立ちます。