7

私はいくつかの SVM 実装で遊んでいて、疑問に思っています - 特徴値を正規化して 1 つの範囲に収める最良の方法は何ですか? (0 から 1 まで)

次の範囲の値を持つ 3 つの機能があるとします。

  1. 3 - 5。

  2. 0.02 - 0.05

  3. 10-15。

これらの値をすべて [0,1] の範囲に変換するにはどうすればよいですか?

トレーニング中に遭遇する特徴番号 1 の最大値が 5 で、モデルをさらに大きなデータセットで使用し始めた後、7 という高い値に出くわした場合はどうなりますか? すると、換算範囲では1を超えてしまいます...

トレーニング中に値を正規化して、トレーニング中にモデルが「見た」最高値 (または最低値) を超える「野生の値」の可能性を考慮するにはどうすればよいですか? モデルはそれにどのように反応し、それが起こったときに適切に機能させるにはどうすればよいでしょうか?

4

2 に答える 2

8

Tim が提供する単位長法へのスケーリングに加えて、標準化は機械学習分野で最もよく使用されます。テスト データが届いたら、トレーニング サンプルの平均値と標準偏差を使用してこのスケーリングを行う方が理にかなっていることに注意してください。非常に大量のトレーニング データがある場合は、それらが正規分布に従うと想定しても問題ないため、新しいテスト データが範囲外になる可能性はそれほど高くありません。詳細については、この投稿を参照してください。

于 2013-12-11T00:50:46.920 に答える
7

ベクトルを単位ベクトルに変換して正規化します。これにより、マグニチュードではなく、特徴の相対値で SVM がトレーニングされます。正規化アルゴリズムは、任意の値を持つベクトルで機能します。

単位ベクトルに変換するには、各値をベクトルの長さで割ります。たとえば、 のベクトルの[4 0.02 12]長さは 12.6491 です。正規化されたベクトルは[4/12.6491 0.02/12.6491 12/12.6491]=[0.316 0.0016 0.949]です。

「実際に」そのベクトルに遭遇した場合[400 2 1200]、上記と同じ単位ベクトルに正規化されます。フィーチャの大きさは正規化によって「キャンセル」され、0 と 1 の間の相対値が残ります。

于 2013-12-10T22:48:04.113 に答える