1

皆さん、こんにちは。ご協力ありがとうございます。私はRに少し慣れていないので、これが些細な質問または不適切な質問である場合は申し訳ありません。

TL;DR: RandomForestSRC に組み込まれたランダム フォレスト モデルを使用して因子変数の変数重要度 (VIM) を決定しようとしていますが、これはそのパッケージの組み込み機能ではありません。LIME と DALEX の両方のパッケージを使用すると、同じエラーが発生します: cannot coerce class 'c("rfsrc, "predict", "class")' to a data.frame. このエラーを解決するための支援、または別のアプローチをいただければ幸いです。

RandomForestSRC パッケージを使用して、R で構築したランダム フォレスト モデルがあります。モデルはうまく機能しているようです。トレーニングとテストはうまくいき、必要な予測出力が得られ、結果は期待どおりに見えます。残念ながら、要件の 1 つは、連続変数と因子変数の両方について、モデルがどのように結論に達したか (たとえば、出力の一部として変数の重要度も含める必要がある) を示すことができる必要があるということです。

これは RandomForestSRC パッケージに組み込まれている機能ではないようです。そのため、LIME と DALEX の両方のパッケージを調べました。どちらも既存の RF モデルから VIM を分離できるはずです。残念ながら、どちらも RFSRC パッケージをネイティブでサポートしていません。つまり、このビネットで推奨されているように、予測関数を自分で組み込む必要がありました: https://uc-r.github.io/dalex

model_type.rfsrc <- function (x, ...) {
    return ('classification')
}

predict_model.rfsrc <- function (x, newdata, type, ...) {
    as.data.frame(predict(x, newdata, ...)
}

残念ながら、モデルの VIM セクションを (LIME と DALEX の両方で) 実行すると、予測された出力と、その出力を作成したモデルの両方を渡すように求められます。そうすると、上記のpredict_model関数でエラーが発生します。

error in as.data.frame.default(predict(model, (newdata))):
cannot coerce class 'c("rfsrc, "predict", "class")' to a data.frame

そして、... もちろん、それはできません。モデル自体をデータ フレームに変換しようとしています。残念ながら、R がそのエラーを表示する理由は理解できたと思いますが、それは私が自分で理解できた範囲です。

さらに、私が RandomForestSRC パッケージを使用している理由は 2 つあります。因子変数の数に制限がないことと、不均衡なデータを処理できることです。私は医療データを扱っているので、これらの両方が必要です (たとえば、1 つのデータ変数にエンコードできる医療コードは最大 100,000 種類あり、「これを持っていない人」の比率は-状態」対「この状態を持っている人」は、しばしば100対1です)。ただし、これらの問題を処理し、VIM 機能が組み込まれている (または DALEX / LIME と統合されている) 代替パッケージの提案があれば、それも素晴らしいでしょう。

お世話になりました皆様、誠にありがとうございました!

4

0 に答える 0