機能のスケーリング
1. 概要
機械学習アルゴリズムは、スケールや単位を考慮せずに、入力を数値としてのみ見なします。
別の方法でプログラムしない限り、彼らは規模を理解しません。 彼らは、より大きな値がより大きな重みを与えられるべきであると想定します。
この仮定の問題を回避するために、機能スケーリングを使用できます。
2. 機能スケーリングとは何ですか?
機能のスケーリングには、2つの主要な方法の1つである正規化または標準化による値の変更が含まれます。 正規化は入力値を受け取り、それらを0と1の間にあるように変更します。 標準化メソッドは、値が0を中心とし、標準偏差が1になるように値を変更します。
これらの方法には多くのバリエーションがあり、以下で説明します。
3. 機能スケーリングを使用する必要があるのはなぜですか?
上記のように、機械学習アルゴリズムは、値が大きいほど重要性が高いと想定する場合があります。
たとえば、車のデータについて考えてみましょう。 エンジンの変位は数百の範囲である可能性があります。 ガロンあたりのマイル数の値は通常100未満です。
機械学習アルゴリズムは、エンジンの排気量が私たちの問題でより重要であると考えるかもしれません。 その場合、モデルをトレーニングするときに、エンジンの排気量がより決定的な役割を果たす可能性があります。
値をスケーリングするもう1つの理由は、モデルが収束する速度に関係している可能性があります。 ニューラルネットワーク最急降下法モデルは、機能スケーリングを使用しない場合よりもはるかに高速に収束します。
4. 機能スケーリングはいつ使用する必要がありますか?
経験則として、ポイント間の距離を計算するアルゴリズムを使用する場合は、常にフィーチャスケーリングを使用する必要があります。
主成分分析(PCA)は、数値をスケーリングするときに役立つアルゴリズムの代表的な例です。 値がスケーリングされていない場合、PCAアルゴリズムは、小さい値の変更が大きい値の変更よりもはるかに重要であると判断する場合があります。
機能スケーリングの恩恵を受けることができる他のアルゴリズムは次のとおりです。
- サポートベクターマシン(SVM)
- K最近傍
- ロジスティック回帰
- K-Meansクラスタリング
たとえば、RブートライブラリとSVMアルゴリズムで尿データセットを使用できます。
svmfit.poly.noscale = svm(r ~ ., data = urine, kernel = "polynomial", cost = 7, scale = FALSE)
そして、それを実行すると、次の出力が表示されます。
WARNING: reaching max number of iterations
さらに、アルゴリズムはサンプルを分離するのに苦労しています。
機能スケーリングを追加すると、出力とアルゴリズムの計算が改善されます。
svmfit.poly.scale = svm(r ~ ., data = urine, kernel = "polynomial", cost = 7, scale = TRUE)
今回は警告メッセージはなく、アルゴリズムは次のような描写を確認し始めます。
すべての値を機能スケーリングする必要はありません。 たとえば、順序値は、機能スケーリングの恩恵を受けません。 しかし、連続値はそうです。 連続値は、共分散行列に影響を与えることなく変更できます。
すべての場合にスケーリングは必要ありません。 ツリーベースのアルゴリズムでデータを使用する場合、スケーリングに利点はありません。
時間とリソースが許せば、生データ、標準化されたデータ、正規化されたデータを使用して機械学習モデルを試して、値をスケーリングすることにメリットがあるかどうかを確認できます。
それでは、機能のスケーリングを実現する方法を見ていきましょう。
5. 機能スケーリングの実行
いくつかの方法を使用して、機能のスケーリングを実行できます。 ほとんどは、次の2つの原則のいずれかに基づいています。
- すべてが0から1の間にあるように値を変更します
- 0を中心とするように値を変更する
使用される主な方法は次のとおりです。
- 最小-最大
- 標準化
これらのバリエーションは次のとおりです。
- 最大腹筋
- 屈強
- 分位トランスフォーマー
- パワートランス
- 単位ベクトル
5.1. 最小-最大
Min-Maxスケーラー、つまり正規化では、指定された範囲内に収まるように値を変換します。 このスケーラーは、標準偏差が小さく、分布がガウス分布でない場合に使用するのに適しています。 このスケーラーは外れ値に敏感です。
最小-最大スケーリングに通常使用される式は次のとおりです。
5.2. 標準化
標準化、またはZスコアの正規化は、データが正規分布していることを前提としています。 0を中心とし、標準偏差が1になるようにスケーリングします。 これは、平均値を引くことによって達成されます。
ここで(平均)は次のとおりです。
および(標準偏差)は次のとおりです。
標準化では、データがガウス分布に従うことを前提としています。 データが正規分布していない場合、これは適切な選択ではありません。
5.3. 最大腹筋
Max Absスケーラーは、の最大絶対値が1.0になるように値をスケーリングおよび変換します。 データをシフトしたり中央に配置したりしないため、スパース性が損なわれることはありません。
このスケーラーは、すべての値が正の場合、外れ値に敏感です。
5.4. 屈強
ロバストスケーラーは中央値を削除し、データを四分位範囲内(第1四分位(25%)と第3四分位(75%))にスケーリングします。 このスケーラーは、パーセンタイルに基づいているため、いくつかの大きな限界外れ値の影響を受けません。
5.5. 分位トランスフォーマー
このスケーラー(ランクスケーラーとも呼ばれます)は、逆正規変換を採用しています。 は、正規分布に従うように値を変換します。 この変換は、最も頻繁な値を分散させる傾向があります。 また、限界外れ値の影響を軽減します。
5.6. パワートランス
Power Transformerスケーラーは、データをよりガウスに変換します。 このアルゴリズムは、データの変動性に問題がある場合や、正規性が必要な状況で役立ちます。
5.7. 単位ベクトル
Unit Vector Transformerは、ベクトル全体を単位長と見なします。 Min-Max Scalingと同様に、このアルゴリズムは0から1の間の値を生成します。 このアルゴリズムは、色が0から255の間でなければならない画像値などの境界を処理するときに非常に役立ちます。
6. 結論
データ変換は、機械学習の前処理にとって重要なステップです。 通常の範囲内に収まるようにデータを変更することで、結果を改善し、多くの場合、処理を高速化できます。
増え続ける機械学習の記事のリストからこれらをチェックしてください。