概要
scikit-learn を使った特徴量のスケーリング方法について解説します。
データ行列
サンプル数を m、特徴量の次元数を n としたとき、データセットは (m,n) の2次元配列で表されます。
データ行列
特徴量のスケーリングは、特徴量の特徴ごと (列ごと) に行います。
StandardScaler
sklearn.preprocessing.StandardScaler は特徴の平均を0、分散を1となるように変換します。この変換を標準化といいます。
データセットを x1,x2,⋯,xm∈Rn としたとき、スケーリング後の値 x’ij は
x’ijμjσj=σjxij–μj=N1i=0∑mxij∵平均=N1i=0∑m(xij–μj)2∵標準偏差
feature: 0, mean: -0.00, std: 1.00
feature: 1, mean: -0.00, std: 1.00
特徴ごとに平均が0、分散が1となっていることが確認できます。
MinMaxScaler
sklearn.preprocessing.MinMaxScaler は各特徴の値の範囲が [0,1] となるように変換します。この変換を正規化といいます。
データセットを x1,x2,⋯,xm∈Rn としたとき、スケーリング後の値 x’ij は
x’ij=jmaxxij–jminxijxij–jminxij
feature: 0, min: 0.00, max: 1.00
feature: 1, min: 0.00, max: 1.00
特徴ごとに最小値が0、最大値が1となっていることが確認できます。
MaxAbsScaler
sklearn.preprocessing.MaxAbsScaler は各特徴の最大値が1となるように変換します。
データセットを x1,x2,⋯,xm∈Rn としたとき、スケーリング後の値 x’ij は
x’ij=∣jmaxxij∣xij
feature: 0,max: 1.00
feature: 1,max: 1.00
特徴ごとに最大値の絶対値が1となっていることが確認できます。
RobustScaler
sklearn.preprocessing.RobustScaler は各特徴の第1分位点 Q1 と第3分位点 Q3 の範囲 [Q1,Q3] が1になるように変換します。
データセットを x1,x2,⋯,xm∈Rn としたとき、スケーリング後の値 x’ij は
x’ij=Q3(j)–Q1(j)xij–Q1(j)
- Q1(j): 特徴 j の第1分位点
- Q3(j): 特徴 j の第3分位点
コメント