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

另一种方法是定义一个自定义评分函数 - 例如两个类的概率之间的比率并自己进行平均:

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 回答