0

ROC 曲線の作成方法を理解するのに苦労しており、モデルを正しく作成していない可能性があるという結論に達しました。クラス属性「y_n」が 0 または 1 のデータセットでランダムフォレスト モデルを実行しています。予測目的でデータセットを bank_training と bank_testing に分割しました。私が行う手順は次のとおりです。

bankrf <- randomForest(y_n~., data=bank_training, mtry=4, ntree=2,
                  keep.forest=TRUE, importance=TRUE)
bankrf.pred <- predict(bankrf, bank_testing, type='response',
                  predict.all=TRUE, norm.votes=TRUE)

私が今までしてきたことは正しいですか?作成される bankrf.pred オブジェクトは、集合体と個人という名前の 2 つのクラスを持つリスト オブジェクトです。この2つのクラス名がどこから出てきたのかわかりませんか? さらに、実行すると:

summary(bankrf.pred)
           Length Class  Mode     
aggregate  22606  factor numeric  
individual 45212  -none- character

このまとめはどういう意味ですか?データセット (トレーニングとテスト) の長さはそれぞれ 22605 と 22606 です。誰かが私に何が起こっているのか説明できれば、私はとても感謝しています. これには何か問題があると思います。

ROCR で ROC 曲線を設計しようとすると、次のコードを使用します。

library(ROCR)
pred <- prediction(bank_testing$y_n, bankrf.pred$c(0,1))

Error in is.data.frame(labels) : attempt to apply non-function

ROC曲線を作成しようとする方法が間違っているだけですか、それともrandomForestで最初からですか?

4

2 に答える 2

1

使用しようとしている関数のドキュメントには、2 つの主要な引数に関する次の説明が含まれています。

予測 予測 を含むベクトル、行列、リスト、またはデータ フレーム。

真のクラスラベル を含むベクトル、行列、リスト、またはデータ フレーム。'predictions' と同じ次元でなければなりません。

現在、変数y_npredictions引数に渡していますが、私には引数にナンセンスのように見えlabelsます。

予測は、ランダム フォレスト モデルの出力に格納されます。に記載され?predict.randomForestているように、これは 2 つのコンポーネントを持つリストになります。aggregateには、フォレスト全体の予測値individualが含まれますが、個々のツリーの予測値が含まれます。

したがって、おそらく次のようなことをしたいと思うでしょう:

predictions(bankrf.pred$aggregate, bank_testing$y_n)

それがどのように機能するか見てください。予測値がpredictions引数に渡され、「ラベル」または真の値が引数に渡されますlabels

于 2012-07-16T17:54:23.863 に答える
0

単に予測されたクラスを取得したい場合は、predict.all=TRUE引数を削除する必要があります。predictを使用predict.all=TRUEすることで、フォレストからの予測ではなく、すべてのツリーの予測を保持するよう関数に指示しています。

于 2015-05-12T00:03:51.333 に答える