2

multiclass.roc 関数 ('pROC' パッケージ) を使用して、predict.gbm ('gbm' パッケージ) からの出力をフォーマットして利用する方法を理解するのに苦労しています。

多項 gbm を使用して検証データセットを予測しました。その出力は、各因子レベルに属する各データポイントの確率のようです。(間違っていたら訂正してください)

preds2 <- predict.gbm(density.tc5.lr005, ProxFiltered, n.trees=best.iter, type="response")

> head(as.data.frame(preds2))
      1.2534     2.2534     3.2534      4.2534       5.2534
1 0.62977743 0.25756095 0.09044278 0.021497259 7.215793e-04
2 0.16992912 0.24545691 0.45540153 0.094520208 3.469224e-02
3 0.02633356 0.06540245 0.89897614 0.009223098 6.474949e-05

因子レベルは 1 ~ 5 です。

multiclass.roc を使用して Hand and Till (2001) で定義されているマルチクラス AUC を計算しようとしていますが、必要な単一ベクトルで予測値を提供する方法がわかりません。

必要に応じて例を作成することもできますが、これは一部の人にとっては日常的なことであり、手順の初心者として何かが欠けていると思います。

4

2 に答える 2

2

応答変数をそのまま渡し、最も可能性の高い候補を予測変数として使用します。

multiclass.roc(ProxFiltered$response_variable, apply(preds2, 1, function(row) which.max(row)))
于 2014-03-20T18:52:07.280 に答える
0

別の方法は、カスタム スコアリング関数を定義することです。たとえば、2 つのクラスの確率の比率を定義し、自分で平均化を行います。

names(preds2) <- 1:5
aucs <- combn(1:5, 2, function(X) {
    auc(roc(ProxFiltered$response_variable, preds2[[X[1]]] / preds2[[X[2]]], levels = X))
})
mean(aucs)

さらに別の (より良い) オプションは、質問を非バイナリの質問に変換することです。つまり、最良の予測 (または重み付けされた最良の予測) は真のクラスと相関していますか?

于 2014-03-20T20:01:24.310 に答える