2013-12-10 13 views
7

私はいくつかのSVM実装で遊んでいましたが、1つの範囲に収まるようにフィーチャ値を正規化する最良の方法は何ですか? - 5.SVMのフィーチャ値を正規化

  • 0.02から0.05

  • 10-15

    1. 3:

      (1から0から)のは、私がの範囲の値を持つ3つの機能を持っているとしましょう。

    どのようにこれらの値を[0,1]の範囲に変換しますか?

    What私が遭遇するフィーチャナンバー1の最高値が5で、もっと大きなデータセットで私のモデルを使い始めると、私は7という高い値につまずくでしょうか?変換後の範囲では、1 ...

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

  • 答えて

    7

    ベクトルを単位ベクトルに変換して正規化します。これは、大きさではなく、フィーチャの相対値でSVMを訓練する。正規化アルゴリズムは、任意の値を持つベクトルに対して機能します。

    単位ベクトルに変換するには、divide each value by the length of the vectorです。例えば、[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の間の相対値が残されます。

    +0

    ありがとうございます。これは非常に役に立ちました。 – user3010273

    +1

    これで問題が解決した場合は、[回答を受け入れてください](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)長い間、助けが必要です。 – Tim

    +0

    あなたの機能を拡大するには少なくとももう一つの方法があります - これらの[方法]を見てください(http://en.wikipedia.org/wiki/Feature_scaling#Methods) – arturomp

    7

    Timによって提供される単位長メソッドにスケーリングする以外にも、standardizationが機械学習のフィールドで最もよく使用されます。テストデータが来たら、トレーニングサンプルの平均値と標準偏差を使用してこのスケーリングを行う方が理にかなっています。非常に大量のトレーニングデータがある場合、正規分布に従うと想定するのは安全です。そのため、新しいテストデータが範囲外である可能性はそれほど高くありません。詳細はpostを参照してください。

    関連する問題