機械学習における特徴量スケーリング:Min-MaxスケーリングとStandardスケーリング
機械学習モデルの性能は、入力される特徴量のスケールに大きく影響されます。特に、距離ベースのアルゴリズム(k-NN、SVM、K-Meansなど)や勾配降下法を用いるアルゴリズム(線形回帰、ロジスティック回帰、ニューラルネットワークなど)では、特徴量間のスケールの違いが学習の収束速度やモデルの精度に悪影響を与えることがあります。この問題を解決するために、特徴量のスケールを一定の範囲に揃える「特徴量スケーリング」が不可欠な前処理手法となります。ここでは、代表的なスケーリング手法であるMin-MaxスケーリングとStandardスケーリングについて、その原理、利点、欠点、そして適用場面などを詳細に解説します。
Min-Maxスケーリング (正規化)
Min-Maxスケーリングは、各特徴量を指定された範囲、通常は[0, 1]または[-1, 1]の間に線形変換する手法です。この変換により、元の特徴量の最小値は新しい範囲の最小値に、最大値は新しい範囲の最大値にマッピングされます。
原理
Min-Maxスケーリングの計算式は以下の通りです。
X_scaled = (X – X_min) / (X_max – X_min)
ここで、
- X は元の特徴量の値
- X_min はその特徴量の最小値
- X_max はその特徴量の最大値
- X_scaled はスケーリング後の特徴量の値
この式によって、元の特徴量が持つ値の範囲が[0, 1]の範囲に収まります。例えば、ある特徴量の最小値が10、最大値が100である場合、値55は以下のようにスケーリングされます。
X_scaled = (55 – 10) / (100 – 10) = 45 / 90 = 0.5
このように、元の特徴量の値がその範囲の中央付近であれば、スケーリング後も中央付近の値になります。
利点
- 解釈が容易: スケーリング後の値が[0, 1]の範囲に収まるため、直感的に理解しやすいです。
- 特定のアルゴリズムとの相性: 画像処理におけるピクセル値の正規化([0, 1]や[0, 255])など、特定の応用分野で標準的な手法となっています。
- すべての特徴量が一定の範囲に収まる: アルゴリズムによっては、特徴量が一定の範囲内に収まっていることが前提となる場合があります。
欠点
- 外れ値の影響を受けやすい: 特徴量の中に極端に大きい値や小さい値(外れ値)が存在すると、その外れ値によって特徴量の最小値または最大値が大きく歪められ、他の多くのデータ点が非常に狭い範囲に押し込められてしまう可能性があります。これにより、データの相対的な関係性が失われることがあります。
- 分布の形状を保持しない: 元のデータの分布の形状(例えば、正規分布のような形状)を保持するわけではありません。
適用場面
- ニューラルネットワーク: 特に活性化関数にシグモイド関数など、出力範囲が限定されている場合、Min-Maxスケーリングは有効です。
- 画像処理: 画像のピクセル値は通常0から255の範囲にあるため、これを0から1の範囲に正規化してモデルに入力することが一般的です。
- 特徴量の値が既知の範囲内にある場合: 例えば、テストスコアやパーセンテージなど、理論的に取りうる値の範囲が決まっている場合に適用しやすいです。
Standardスケーリング (標準化)
Standardスケーリングは、各特徴量の平均を0、標準偏差を1に変換する手法です。これにより、データは標準正規分布(平均0、分散1)に近い形に変換されます。
原理
Standardスケーリングの計算式は以下の通りです。
X_scaled = (X – μ) / σ
ここで、
- X は元の特徴量の値
- μ (ミュー) はその特徴量の平均値
- σ (シグマ) はその特徴量の標準偏差
- X_scaled はスケーリング後の特徴量の値
この変換により、元の特徴量の分布が平均0、標準偏差1の分布に近づきます。例えば、ある特徴量の平均が50、標準偏差が10である場合、値65は以下のようにスケーリングされます。
X_scaled = (65 – 50) / 10 = 15 / 10 = 1.5
この場合、値65は平均から1.5標準偏差分離れていることを意味します。
利点
- 外れ値の影響を受けにくい: Min-Maxスケーリングとは異なり、平均と標準偏差を用いるため、外れ値が存在してもその影響が比較的小さく抑えられます。
- 多くのアルゴリズムで有効: 勾配降下法を用いるアルゴリズムや距離ベースのアルゴリズムなど、多くの機械学習アルゴリズムで良好な性能を発揮します。
- データの分布を正規分布に近づける: 元のデータが正規分布に近い場合、Standardスケーリングすることで、より標準正規分布に近くなります。
欠点
- 値の範囲が限定されない: スケーリング後の値は、理論的には -∞ から +∞ の範囲を取り得ます。そのため、Min-Maxスケーリングのように[0, 1]といった明確な範囲に収まるわけではありません。
- 解釈がやや難しい場合がある: スケーリング後の値が「平均から何標準偏差離れているか」を示すため、Min-Maxスケーリングほど直感的な理解は難しくないかもしれませんが、用途によっては注意が必要です。
適用場面
- 線形モデル (線形回帰、ロジスティック回帰): 係数の解釈性は多少損なわれますが、学習の収束を速める効果があります。
- サポートベクターマシン (SVM): カーネルトリックを用いる場合、特徴量のスケールが重要になるため、Standardスケーリングが有効です。
- 主成分分析 (PCA): PCAは分散を最大化する次元削減手法であり、特徴量のスケールが異なると、スケールの大きい特徴量ほど寄与が大きくなってしまうため、Standardスケーリングが不可欠です。
- k-近傍法 (k-NN): 距離計算を行うため、特徴量のスケールを揃えることが重要です。
- クラスタリング (k-Meansなど): 同様に、距離計算に依存するため、スケーリングが有効です。
その他のスケーリング手法
上記二つが最も一般的ですが、状況に応じて他のスケーリング手法も検討されます。
Robust Scaler
Robust Scalerは、平均ではなく中央値(Median)と四分位範囲(Interquartile Range, IQR)を使用します。
X_scaled = (X – Median) / IQR
IQR = Q3 – Q1 (Q3は第3四分位数、Q1は第1四分位数)
* 利点: 平均や標準偏差よりも外れ値に対して頑健(Robust)であるため、データに外れ値が多く含まれる場合に特に有効です。
* 欠点: Min-MaxスケーリングやStandardスケーリングほど広く使われているわけではありません。
MaxAbsScaler
MaxAbsScalerは、各特徴量の絶対値の最大値で割ることで、特徴量を[-1, 1]の範囲にスケーリングします。
X_scaled = X / |X_max|
* 利点: データがすでに0を中心に分布している(スパースなデータなど)場合に有用です。元のデータが正の値のみで構成されていても、スケーリング後は正の値のみになります。
* 欠点: 外れ値の影響はMin-Maxスケーリングと同様に受ける可能性があります。
スケーリング手法の選択
どのスケーリング手法を選択すべきかは、以下の要因によって決まります。
- 使用するアルゴリズム: 距離ベースや勾配降下法を用いるアルゴリズムでは、スケーリングが有効です。
- データの特性: 外れ値の有無、データの分布形状などを考慮します。
- 目的: モデルの解釈性、学習速度、精度などを総合的に判断します。
一般的には、まずStandardスケーリングを試すのが良い出発点となります。データに多くの外れ値が含まれる場合は、Robust Scalerを検討します。Min-Maxスケーリングは、値の範囲が[0, 1]に収まることが必須な場合や、特定のアルゴリズム(例:一部のニューラルネットワーク)との相性を考慮する場合に有効です。
注意点
* 学習データとテストデータ: スケーリングを行う際には、訓練データで計算したパラメータ(最小値、最大値、平均、標準偏差など)をそのままテストデータに適用することが非常に重要です。テストデータで別途計算してしまうと、データリークが発生し、モデルの評価が不正確になります。通常、`fit_transform()`を訓練データに、`transform()`をテストデータに適用します。
* 特徴量エンジニアリングとの組み合わせ: スケーリングは、特徴量エンジニアリング(新しい特徴量の作成や既存の特徴量の変換)の一環として行われます。
まとめ
機械学習における特徴量スケーリングは、モデルの性能を向上させるための重要な前処理ステップです。Min-MaxスケーリングとStandardスケーリングは、それぞれ異なる原理と特性を持ち、適用するアルゴリズムやデータの特性に応じて適切な手法を選択することが重要です。外れ値への頑健性、値の範囲、そしてアルゴリズムとの相性を理解し、適切にスケーリングを適用することで、より精度の高い、そして安定した機械学習モデルを構築することが可能となります。
