SVMを使用して変数(属性)の重要度を取得する方法は?
SVMを使用して変数(属性)の重要度を取得する方法は?
回答:
重みベクトルでl-1ペナルティを使用すると、無関係な属性に対応する重みが自動的にゼロに設定されるため、自動フィーチャ選択が行われます。このペーパーを参照してください。各ゼロ以外の重みの(絶対)大きさは、対応する属性の重要性についての考えを与えることができます。
また、SVMから派生した基準を使用して属性の選択をガイドするこのペーパーを参照してください。
イザベル・ギヨン、アンドレElisseeff、「変数および機能の選択に入門」、JMLR、3(3月):1157年から1182年、2003年http://jmlr.csail.mit.edu/papers/v3/guyon03a.html
読む価値が十分にあり、アプローチと問題の概要を説明します。私が追加することの1つは、機能選択が必ずしも予測パフォーマンスを改善するわけではなく、簡単に悪化させる可能性があることです(機能選択基準を簡単にオーバーフィットするため)。(特に線形の)SVMの利点の1つは、多数の機能でうまく機能することです(正則化パラメーターを適切に調整することを提供する)ので、予測のみに関心がある場合、多くの場合、必要はありません。
Rを使用する場合、変数の重要度はrminerパッケージのImportanceメソッドで計算できます。これは私のサンプルコードです。
library(rminer)
M <- fit(y~., data=train, model="svm", kpar=list(sigma=0.10), C=2)
svm.imp <- Importance(M, data=train)
詳細については、次のリンクhttps://cran.r-project.org/web/packages/rminer/rminer.pdfを参照してください