ブラックボックス非線形モデルの予測に対するさまざまな入力の重要性をどのように視覚化できますか?


9

私の組織で行われる予測の助けとして、インタラクティブな予測ツール(Python)を構築しています。今日まで、予測プロセスは主に人間主導で行われており、予測者は自然なニューラルネットワークのデータを同化し、学習した腸の感覚を使用して予測を行います。長期的な予測の検証と予測モデリングの調査から、私はあなたが期待するかもしれないものを見つけました。異なる予測者は異なるバイアスを示し、一部の予測子の効果は誇張されているようであり、他の重要な予測子は無視されているようであり、概して予測パフォーマンスは比較的単純な経験的モデルと比較して平凡です。

予測は引き続き手動で行われますが、私は予測者の相対的な影響のより良い定量化を予測者に提供するための有用なツールを構築しようとしています。見過ごされがちな季節の影響などの重要な影響もあり、ユーザーに強調したいと思います。私は、いくつかの「経験豊富な」予測者(その多くは統計に関する正式な知識がほとんどない)からのモデリングプロセスについてある程度の反発と懐疑論を期待しているため、コミュニケーションは少なくとも同じくらい重要であり、予測精度の測定可能な改善を達成します。

私が開発しているモデルには強力な自動回帰コンポーネントがあり、イベントによって大幅に変更されることがあります。このイベントは、非イベント時に、ゼロに近い一部の予測子で測定値として表示されます。これは、予測者が使用するメンタルモデルと一致しています。重要な部分は、どの「イベント」測定が予測を特定の予測の自己回帰値から遠ざけるのに最も影響を与えるかを実証できることです。この方法でプロセスをイメージします。予測者はその最良の推測値を導き出し、モデルは別の値を提案し、予測者はその理由を尋ねます。モデルは、「ここを参照してください。この予測子のこの値は夏の予測値を増加させます。冬だった場合、それは別の方向に移動します。他にもこれらの測定値があることを知っています。

ここで、モデルが単純な線形回帰であると想像してください。値にモデルの係数を掛けて単純な棒グラフとして表示することにより、イベントベースの予測子の相対的な「効果」を表示することを想像できます。異なる予測子からのすべてのバーは、AR値からの合計偏差になり、これは、この例では、強い影響力を持つものを簡潔かつ明確に示しています。

問題は、予測されているプロセスが予測子に高度な非線形性を表示することです。少なくとも、ブラックボックス非線形機械学習アルゴリズム(ランダムフォレストとGBM)は、GLMの場合よりもはるかに成功しています。このデータセット。理想的には、ユーザーエクスペリエンスを変更せずに「内部」で機能するモデルをシームレスに変更できるようにしたいので、アルゴリズム固有のアプローチを使用せずにさまざまな測定の重要性を簡単な方法で示す一般的な方法が必要です。現在のアプローチでは、1つの予測子を除くすべての値をゼロに設定して効果を準線形化し、予測偏差を記録してからすべての予測子について繰り返し、上記の棒グラフに結果を表示します。強い非線形性が存在する場合、これはうまく機能しない可能性があります。


1
結局何になったのですか?また、「1つの予測子を除いてすべての値をゼロに設定する」-すべての0の周りではなく、現在の最良の値の周りの勾配が必要ではありませんか?
denis 2013年

回答:


4

予測に対する予測子の影響を評価する1つの方法は、予測子に関する出力の勾配を推定することです。これは、有限差分によって各予測子に関して非線形予測関数の偏導関数を推定することによって行うことができます。

理想的には、実際に観察されたテスト入力でこれを実行します。たとえば、過去2日間のすべてのテスト入力における推定勾配の絶対値を平均化できます。この平均勾配の大きさを使用して、予測子の重要性をソートできます。(zスコアリングなどの方法で適切な単位を使用するには、勾配推定に注意する必要があります。)これらの推定勾配は、比較分析のために季節ごとに保存できます。

デビッド・ベーレンスらによる「個々の分類決定を説明する方法」を参照してください。al。このアイデアの詳細については、JMLRを参照してください。このペーパーでは分類を扱いますが、回帰にも簡単に一般化できます。


それは素晴らしいです!私が持っているこの問題や他の場所で役立つ非常に役立つリファレンス。
ボグダノヴィスト

2

Pythonでscikit-learnモジュールを試しましたか?

あなたはそのrandomForestClassifierの機能のために "computer_importance"することができます


1
最初に、機能の重要度を計算することは役立つかもしれないとも思いましたが、特定のインスタンスの予測値を説明する場合、結局それは比較的貧弱なアプローチです。機能の重要性は、人間の専門家にあいまいなヒントのみを提供します。
steffen 2013

余談ですが、OPはモデルに依存しないアプローチを求めました...
steffen

変数の重要度の測定の問題は、特定のケースで実際に何が重要であったかを伝えるのではなく、データセット全体に平均的に適用されることです。
ボグダノヴィスト

実際、これはモデルに依存しないアプローチだと思います。ランダムフォレスト以外の分類器に実際に適用する可能性があります。ブライマンのウェブサイトには、1つのケースの変数の重要度を計算する方法についての微妙な意見があります。stat.berkeley.edu/~breiman/RandomForests/cc_home.htm#varimp(最後の文)これはまだ十分に研究されていないか、少なくとも十分にテストされていないと思います。変数の重要度の平均値は、必ずしも望んでいるとは限りません。たとえば、開業医が1つのケースについて決定を下せるようにしたいときではありません。これは本当に興味深いトピックです。
Simone

ブライマンがロジスティック回帰についてもこの方法について少し議論している興味深い論文があります:「統計モデリング:二つの文化」。いい読み。私が最も気に入っている文は、「変数の重要度の定義は予測に基づいています。変数を削除すると、予測の精度に深刻な影響を与える場合、変数は重要であると考えられます。」このステートメントは、使用する可能性のあるすべての分類子に適用されます。
Simone
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.