どのように機能の重要性をランク付けするのですか?

Neural Network分類器を使用してネットワークを訓練した場合、ターゲット変数を予測するためにどの機能が最も重要かをどのように知ることができますか?私はどのようにフィーチャーの中で(重要度の高い値から低いものへ)「フィーチャーランキング」を作成するかを意味します。私は決定木/ AdaBoostに関するいくつかの文献を見てきましたが、私は通常、分類目的のためにニューラルネットワークに興味があります。より明確にするために、図に例を示します。

screenshot

2

2 答え

3つ目の問題が言及されていないため、sevo提案のfirsソリューションは実現可能ではありません。最初のレイヤーは入力の最初の表現を学習し、後のレイヤーで使用されます。たとえ$ x_1 $の絶対重みが非常に大きくても、後のレイヤーがこれらのニューロンに接続された小さな重みを持つ場合、重要性は低下します。これはまさにニューラルネットワークが解釈するのが難しいと考えられる理由です。答えの残りは便利です、私はちょうどこれを追加したいと思います。

1
追加された

複数の可能性があります。

明らかなのは、入力ニューロンごとに入力層から第1の隠れ層までのすべての接続の重みを合計することです。結合重みの総和が最も高いニューロンが最も重要である。これにはいくつかの問題があります。

  • ウェイトは負の値になる可能性があるため、ウェイトは絶対値を使用する必要があります。
  • 重みは入力変数のスケールに依存します。たとえば、平均を引いて入力の標準偏差で割ることによって入力を正規化する必要があります(z正規化)。

もう1つの可能性は、フィーチャを選択的に除去し、ネットワークを再トレーニングし、どのフィーチャがモデル精度を最大に低下させたかを観察することである。これらは潜在的に最も重要な機能です。

このアプローチの問題点は、ネットワークのアーキテクチャを変更し、再学習し、元のネットワークに入るフィーチャの関連性を報告しないということです。

You can find an elaborate discussion on the problem here ftp://ftp.sas.com/pub/neural/importance.html

いくつかの問題を修正するために複雑な関数を使用するGarsonのような、複数の他のアプローチがあります。これらのいくつかは、Rの NeuralNetTools パッケージに実装されています。

1
追加された
はい、これは入力データセットのすべての列を正規化する必要があります。
追加された 著者 PsiX,
いずれも列は平均値が0に、標準偏差が1になるように列が正規化されます。値は企業間の間隔に制限されません。
追加された 著者 PsiX,
これは大丈夫ですか?( mathworks.com/help/stats/ zscore.html )?
追加された 著者 Case Msee,
しかし、このZスコアは[-1,1]の範囲ではなく[0,1]の値を正規化します
追加された 著者 Case Msee,