バイナリ分類の変数選択手順


29

学習セットの観測値よりも多くの変数/機能がある場合、バイナリ分類に適した変数/機能の選択は何ですか?ここでの目的は、分類エラーを最適に削減する機能選択手順を説明することです。

一貫性の表記法修正できます:場合、をグループからの観測値の学習セットとします。したがって、は学習セットのサイズです。私たちは、セット多くの特徴(特徴空間の次元をIE)であることを。ましょ表すの座標番目の。i{0,1}{x1i,,xnii}in0+n1=npx[i]ixRp

詳細を提供できない場合は、完全な参考文献を提供してください。

編集(継続的に更新):以下の回答で提案されている手順

これはコミュニティWikiであるため、より多くの議論と更新があります。

ある意味で、変数の順序付けは許可するが変数の選択は許可しない手順を提供します(機能の数の選択方法については非常にわかりにくいので、クロス検証を使用すると思いますか?)この方向の答えは?これはあなたが変数の数を選択する方法についての情報を追加するために、回答writterするコミュニティ必要はありませんされてウィキとして(?私はここで、この方向での質問opennedているの数を選択することが非常に高い次元でのクロス検証を(非常に高次元の分類で使用される変数)


それは質問ですか、それともプールですか?後者の場合、コミュニティwikiである必要があります。最初の場合、達成したいことの詳細を教えてください。たとえば、それはすべてに関連する、または最小限の最適な選択ですか?いくらですか?分類の問題はどのくらい難しいですか?

プール...多くは、1000個以上の特徴と100個未満の観測を意味します。
ロビンジラール

回答:


18

非常に一般的なアプローチは、ペナルティ付きロジスティック回帰で、対数尤度と、L1ノルム(「投げ縄」)、L2ノルム(「リッジ」)、2つの組み合わせで構成されるペナルティ項の合計を最大化します。 (「弾性」)、または変数のグループに関連するペナルティ(「グループラッソ」)。このアプローチにはいくつかの利点があります。

  1. 強力な理論的特性があります。たとえば、Candes&Planによるこの論文を参照して、圧縮センシングとの密接な関係を確認してください
  2. フリードマン・ハスティ・ティブシラーニによる統計学習の要素(オンラインで入手可能)など、アクセス可能な展示があります。
  3. モデルに適合するソフトウェアがすぐに利用できます。Rにはglmnetパッケージがあり、これは非常に高速で、かなり大きなデータセットでうまく機能します。Pythonにはscikit-learnがあり、これにはL1およびL2ペナルティ付きロジスティック回帰が含まれます。
  4. 画像認識、信号処理、生体認証、および金融の多くの応用論文に示されているように、実際には非常にうまく機能します。

10

いくつかの理由から、Leo BreimanとAdele CutleerによるRandom Forestsを少し好みます。

  • カテゴリおよび連続予測子、および不均衡なクラスサンプルサイズに対処できます。
  • アンサンブル/埋め込み方法として、交差検証が埋め込まれ、一般化誤差を推定できます。
  • チューニングパラメーター(ツリーの成長のために選択された変数の%、構築されたツリーの数)に比較的影響を受けません。
  • 変数の重要性の元の測定値を提供し、変数間の複雑な相互作用を明らかにすることができます(ただし、読みにくい結果につながる可能性があります)。

一部の著者は、ペナルティSVMまたはグラジエントブースティングマシンと同様に機能すると主張しました(後者については、たとえばCutler et al。、2009を参照)。

そのアプリケーションまたは利点の完全なカバーはトピックから外れているかもしれませんので、私はHastieらの統計的学習要素を提案します。(15章)およびSayes et al。(2007)さらなる読み物。

最後になりましたが、RにはrandomForestパッケージを使用した素晴らしい実装があります。他のRパッケージも拡張または使用します(例:partyおよびcaret)

参照:

カトラー、A。、カトラー、DR、スティーブンス、JR(2009)。Tree-Based Methods、in High-Dimensional Data Analysis in Cancer Research、Li、X. and Xu、R.(eds。)、pp。83-101、Springer。

Saeys、Y.、Inza、I。、およびLarrañaga、P.(2007)。バイオインフォマティクスの特徴選択技術のレビュー。バイオインフォマティクス23(19):2507-2517。


7

メトロポリススキャン/ MCMC

  • いくつかの特徴をランダムに選択して開始し、それらでのみ分類器をトレーニングしてエラーを取得します。
  • このワーキングセットをランダムに変更します。ある機能を削除するか、別の機能をランダムに追加するか、一部の機能を現在使用されていない機能に置き換えます。
  • 新しい分類器をトレーニングし、そのエラーを取得します。dE新しいセットのエラーから前のセットのエラーを引いたものを差に格納します。
  • 確率でmin(1;exp(-beta*dE))この変更を受け入れるか、そうでなければ拒否して、別のランダムな変更を試してください。
  • それを長時間繰り返し、最終的にグローバルで最小のエラーを達成したワーキングセットを返します。

betaパラメータを賢く制御することで拡張できます。より簡単な方法はbeta、時間の経過とともに増加(物理的アナロジーで温度を下げる)するときにシミュレーテッドアニーリングを使用して、変動を減らし、アルゴリズムを最小に近づけることです。難しいのは、レプリカ交換を使用することです。


5

汎化のパフォーマンスのみに関心がある場合は、機能の選択を行わず、代わりに正則化(リッジ回帰など)を使用することをお勧めします。機械学習コミュニティでは、機能の選択に関していくつかの未解決の課題があり、機能の選択ではなく正則化に依存する方法は、一般的には少なくとも良くなります。


3

貪欲な前方選択。

この方法の手順は次のとおりです。

  • トレインと検証セットがあることを確認してください
  • 次を繰り返します
    • まだ選択されていない単一の機能と、以前に選択したすべての機能を使用して、分類器を個別にトレーニングします。
    • 結果が改善する場合は、最高のパフォーマンス機能を追加するか、手順を停止します

分類器をどのように「トレーニング」しますか?おそらくこれはトレーニングセットで行われます。サポートベクターマシン(SVM)の場合、トレーニング中に試すパラメーターがいくつかあります。検証(テスト)セットに対してそれぞれテストされていますか?または、k-fold cross validationを使用していますか?検証(テスト)セットを使用してパフォーマンスをチェックする回数-これはおそらく正確です。面倒なことに申し訳ありませんが、これは定義が不十分な回答であり、過剰適合のリスクがあります。
チラコレオ

@Thylacoleoこれは非常に粗雑な基本的で貪欲な方法です。多くの場合、検証セットを実行中に同じに保ちますが、好きなものは何でも構いません。
ピータースミット

2

後方排除。

フルセットから開始し、残りのフィーチャに対して分類器を繰り返しトレーニングし、最小の重要度を持つフィーチャを削除し、分類器エラーが急速に増加する/許容できないほど高くなると停止します。

重要度は、各機能を繰り返し削除し、エラーの増加を確認するか、分類子が生成する場合は分類子から調整することで取得できます(ランダムフォレストの場合など)。


2
しかし、質問は、観測よりも多くの変数があると言います。そのため、フルセットから始めることはできません。
ロブハインドマン

どうしたの?

2
観測値よりも多くの変数を持つモデルを近似することはできません。パラメーター推定には十分な自由度がありません。
ロブハインドマン

1
FisherのFの計算では、としてFを計算する(n - k - p) / (k - 1) * ...n観測数、k(ここでは2)クラスの数とp変数の数。n - 2 - p < 0いつn < p + 2(ここの場合)につながるF < 0。それは問題になりませんか?
マチュー14

3
正規化された回帰または完全ベイジアン回帰を使用すると、予測子の完全なセットを使用して独自のソリューションを取得できます。他のMLテクニックでも同じことが言えます。
Scortchi-モニカの復職
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.