ランダムフォレストモデルからの予測を説明する方法はありますか?


11

(RのrandomForestパッケージを使用した)ランダムフォレストに基づく予測分類モデルがあるとします。エンドユーザーが予測を生成するアイテムを指定できるように設定し、分類の可能性を出力します。これまでのところ、問題ありません。

しかし、変数の重要度のグラフのようなものを出力できることは有用/クールですが、トレーニングセットではなく、予測される特定のアイテムに対してです。何かのようなもの:

アイテムXは犬であると予測されます(73%の確率)。
理由:
脚= 4
呼吸=悪い
毛皮=短い
食べ物=厄介な

あなたはポイントを取得します。訓練されたランダムフォレストからこの情報を抽出する標準的な、または少なくとも正当な方法はありますか?もしそうなら、randomForestパッケージに対してこれを行うコードを誰かが持っていますか?


多少複雑です... Legs変数が決定パスの一部であった回数を数えることを想像できます。しかし、大多数の回答を予測した木、またはそのすべてに対して、それを実行しますか?または違いは?
Harlan、

そして、すべてのm予測子を1つずつ変更し、フォレストがどのように異なる予測を行うかを確認することは、かなり高価に思えます。より良い方法があるはずです。
Harlan

私の最初の考えは、あなたが何をしたいのか、トレーニングデータの重要な変数とどう違うのか疑問に思いましたか?他の値があったとして、脚= 4対脚= 2または脚= 0での予測の感度はどうでしたか。randomforestパッケージの部分的なプロット関数を見ましたか?
B_Miner

変数の重要度は通常、トレーニングセット全体(または想定される人口など)を条件として定義されます。しかし、私が欲しいのは、単一の予測された項目の変数の重要性です。森が非常に偏った決定木で構成されているケースを想像してみてください。テストインスタンス1は1つまたは非常に少ない決定ノードで説明できますが、テストインスタンス2は非常に大きな決定ノードのセットで説明できます。私は、ランク付けされた一連の決定のように、人間が解釈できる非常に単純なバージョンを求めています。その上位5つを提供できます。単一の決定木については、それらを読み上げます。
Harlan、

回答:


3

最初のアイデアは、変数の重要度からノックアウト戦略を模倣し、各属性を混合することでオブジェクト分類のフォレストの信頼性がどのように低下​​するかをテストすることです(OOBおよびいくつかの繰り返しで明らかに)。これにはある程度のコーディングが必要ですが、確かに実現可能です。

しかし、それは単に悪い考えだと思います-結果はおそらく地獄のように変化します(オブジェクトに対する平均化の影響を安定化しない場合)、ノイズが多い(それほど自信のないオブジェクトの場合、ナンセンスな属性が大きな影響を与える可能性があります)解釈します(2つ以上の属性協調ルールは、おそらく各寄与属性のランダムな影響をもたらします)。

否定的な答えを残すのではなく、私はむしろ近接行列とそれが明らかにする可能性のあるアーキタイプを見てみます-これははるかに安定していて簡単です。


協調ルール/相関予測子ポイントは優れた批判です。この作業を行うには、事前に削減された変数のセットについてRFをトレーニングするか、RFが予測子のサブセットに焦点を合わせるようなペナルティ戦略を組み込む必要がある場合があります。
Harlan

0

私はライムフレームワークで試してみます。

多くのモデル(ランダムフォレストを含む)で動作します。それはのために使用することができる地元の解釈(単一の予測を説明され、)またはのための世界的な解釈(モデル全体を説明する、です)。

抜粋からの引用

本研究では、予測を中心に解釈可能なモデルを局所的に学習することにより、分類器の予測を解釈可能かつ忠実に説明する新しい説明手法であるLIMEを提案します。また、代表的な個々の予測とその説明を冗長ではない方法で提示し、サブモジュラー最適化問題としてタスクを構成することにより、モデルを説明する方法を提案します。

Rpythonの両方のパッケージがあり、グーグルした場合の多くの例があります。

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