web-dev-qa-db-ja.com

なぜ機能スケーリングなのか?

SVM(サポートベクターマシン)の問題のスケーリングにより、パフォーマンスが本当に向上することがわかりました...この説明を読みました。

「スケーリングの主な利点は、大きな数値範囲の属性が小さな数値範囲の属性を支配することを避けることです。」

残念ながら、これは私を助けませんでした...誰かが私にもっと良い説明を提供できますか?前もって感謝します!

36
Kevin

SVMのスケーリング機能の背後にある本当の理由は、この分類子アフィン変換不変ではないという事実です。つまり、1つの機能に1000を掛けると、SVMが提供するソリューションは完全に異なります。基本的な最適化手法とはほとんど関係ありません(これらのスケールの問題の影響を受けますが、グローバルな最適化に収束するはずです)。

例について考えてみましょう。性別と身長でエンコードされた男性と女性がいます(2つの機能)。このようなデータを使用した非常に単純なケースを想定してみましょう。

0->男性1->女性

╔═════╦════════╗
║ sex ║ height ║
╠═════╬════════╣
║  1  ║  150   ║
╠═════╬════════╣
║  1  ║  160   ║
╠═════╬════════╣
║  1  ║  170   ║
╠═════╬════════╣
║  0  ║  180   ║
╠═════╬════════╣
║  0  ║  190   ║
╠═════╬════════╣
║  0  ║  200   ║
╚═════╩════════╝

そしてばかげたことをしましょう。それを訓練して人の性別を予測し、f(x、y)= xを学習しようとしています(2番目のパラメーターは無視します)。

このようなデータの場合、最大のマージン分類子は高さ「175」付近で平面を水平に「カット」するため、新しいサンプル「0 178」(身長178cmの女性)を取得すると、彼女は「男です。

ただし、すべてを[0,1]に縮小すると、次のようになります

╔═════╦════════╗
║ sex ║ height ║
╠═════╬════════╣
║  1  ║  0.0   ║
╠═════╬════════╣
║  1  ║  0.2   ║
╠═════╬════════╣
║  1  ║  0.4   ║
╠═════╬════════╣
║  0  ║  0.6   ║
╠═════╬════════╣
║  0  ║  0.8   ║
╠═════╬════════╣
║  0  ║  1.0   ║
╚═════╩════════╝

そして今、最大のマージン分類器は平面をほぼ垂直に「カット」し(予想どおり)、新しいサンプル「0 178」が与えられ、これも「0 0.56」前後にスケーリングされます(正しい!)。

したがって、一般的には、スケーリングにより、一部の機能がbigであるという理由だけで、それらを主な予測子として使用することにつながりません。

46
lejlot

機能スケーリングは、(SVMだけでなく)最適化問題に適用される一般的なトリックです。 SVMの最適化問題を解決する下線アルゴリズムは、勾配下降です。 Andrew Ngは、コースラのビデオで素晴らしい説明をしています こちら

ここで中心的なアイデアを説明します(Andrewのスライドを借ります)。パラメーターが2つしかなく、パラメーターの1つが比較的広い範囲の値を取ることができるとします。コスト関数の輪郭は、非常に背が高く細い楕円形のように見えます(以下の青い楕円形を参照)。グラデーション(グラデーションのパスは赤で描画されます)に時間がかかり、前後に行き来して最適なソリューションを見つけることができます。
enter image description here

代わりに、フィーチャをスケーリングした場合、コスト関数の輪郭は円のように見える場合があります。その後、勾配ははるかに直線的な経路をたどり、最適なポイントをはるかに速く達成できます。 enter image description here

58
greeness

別の観点からの個人的な考え。
1。なぜ機能スケーリングの影響?
機械学習アルゴリズムの適用には、「ガベージイン、ガベージアウト」という言葉があります。機能をよりリアルに反映するほど、アルゴリズムの精度が上がります。これは、機械学習アルゴリズムが機能間の関係をどのように扱うかに適用されます。人間の脳とは異なり、たとえば機械学習アルゴリズムが分類を行う場合、すべての機能は同じ座標系で表現および計算され、ある意味で、先験的な仮定を確立します機能間(実際にはデータ自体の反映ではありません)。また、ほとんどのアルゴリズムの性質は、機能間の最適な重量割合を見つけてデータを適合させることです。そのため、これらのアルゴリズムの入力がスケーリングされていないフィーチャである場合、大規模なデータは重みにより大きな影響を及ぼします。実際には、データそのものを反映したものではありません。
2。なぜ通常は機能のスケーリングが精度を向上させるのですか?
ハイパーパラメーター(またはハイパーハイパーパラメーター)の選択(たとえば、階層型ディリクレプロセス、hLDA)についての教師なし機械学習アルゴリズムの一般的な慣行は、データについて個人的な主観的な仮定を追加しないことです。最善の方法は、それらが出現する平等確率を持っていると仮定することです。ここにも当てはまると思います。機能のスケーリングは、すべての機能が重みに影響を与える平等の機会を持っていると仮定しようとするだけで、データについて知っている情報/知識を実際に反映します。一般的に、精度も向上します。

ところで、アフィン変換の不変式と収束の高速化については、stats.stackexchange.comに興味のあるリンクがあります here です。

2
weiheng

各入力値をほぼ同じ範囲にすることで、勾配降下を高速化できます。これは、θが小さな範囲では急速に下降し、大きな範囲ではゆっくり下降するため、変数が非常に不均一な場合に、非効率的に最適値まで振動するためです。これはAndrews NG coursera course。

そのため、データの標準化などを行うことが行われます。特定の観察結果が一般的か例外的かを知りたい場合があります。平均から削除される標準偏差の数でスコアを表現します。この数値は、アズスコアと呼ばれるものです。元のスコアをZスコアに再コーディングする場合、変数を「標準化」すると言います。

2
iali87

はい、正規化が存在しない場合、輪郭は細いため正規化されます。

  1. 値は範囲内にある
  2. 計算の数が少なくなるため、シータの計算が高速化されます
1
Nitish Kumar

コースラのAndrew Ngコースから学んだことから、データがより広く分散している場合、つまり標準偏差が大きい場合は比較的時間がかかることを意味するため、フィーチャスケーリングはより適切な勾配を実現するのに役立ちますフィーチャスケーリングを介してデータをスケーリングする場合の状況と比較して、適切な勾配を計算する

1
Dude

スケーリングのアイデアは、すべての変数を同じスケールに標準化することにより特定の変数の過剰計算を削除することですできるだけ早く収束します。

1
Sree11