サポートベクターマシンの機能選択


9

私の質問は3つあります

「カーネル化された」サポートベクターマシンのコンテキストでは

  1. 変数/機能の選択は望ましいですか-特にパラメーターCを正規化して過剰適合を防止しているため、SVMにカーネルを導入する背後にある主な動機は問題の次元数を増やすことです。
  2. 最初の質問への回答が「いいえ」の場合、次に、どの条件で回答を変更すればよいのですか?
  3. Pythonのscikit-learnライブラリにSVMの機能削減をもたらすために試された良い方法はありますか?私はSelectFprメソッドを試して、さまざまな方法の経験を持つ人を探しています。

1
最初に最初の機能が非常に高品質にならない限り、機能の選択は常に役立ちます。Sklearnは、さまざまな機能選択ライブラリ(scikit-learn.org/stable/modules/feature_selection.html)を多数提供しています。私は自分自身でRFEを行うのが好きではありません。
デビッド

1
あなたはあなたのコンテキストに言及しませんでした-それがビジネスコンテキストにある場合、モデルに残るすべての機能はあるレベルでのメンテナンスを必要とすることに注意してください-より多くの変数がある場合、文字通りコストがかかるという意味で、たとえば、より多くのデータ収集作業、DBA時間、プログラミング時間を必要とします。この考慮事項は、Kaggleコンプなどの場合には当てはまりません。データセットで使用可能な機能をさらに200使用すると、パフォーマンスが0.01%向上します。
Robert de Graaf

回答:


3

個人的には、機能の選択を2つに分けるのが好きです。

  • 教師なし機能の選択
  • 監視機能の選択

監視されていない機能の選択とは、クラスタリングやPCAのようなもので、最も冗長な機能の範囲を選択する(または冗長性の少ない機能を作成する)ものです。監視付き特徴選択は、Lassoのようなもので、最も予測力のある特徴を選択します。

個人的には、通常、監視機能選択と呼ばれるものを好みます。したがって、線形回帰を使用する場合は、投げ縄に基づいて機能を選択します。同様の方法が、ニューラルネットワークにスパース性を誘導するために存在します。

しかし、確かに、私はカーネルを使用するメソッドでそれをどのように行うのかわかりません。そのため、私が監視なし機能選択と呼んでいるものを使用する方がよいでしょう。

編集:あなたはまた、正規化について尋ねました。正則化が役立つのは、有限のサンプルを扱うため、トレーニングとテストの分布が常に多少異なり、モデルが過剰にならないようにするためです。私はそれが機能を選択することを避ける必要性を取り除くと確信していません(本当にあなたが多すぎる場合)。機能を選択する(または機能の小さなサブセットを作成する)ことで、機能をより堅牢にし、モデルが誤った相関関係から学習するのを防ぐことができると思います。したがって、正則化は役立ちますが、完全な代替手段であるかどうかはわかりません。しかし、私はこれについて十分に考えていませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.