我很难理解如何使用multiclass.roc函数(' pROC' packagage)格式化和利用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,不确定为什么是小数加法
我正在尝试使用multilass.roc来计算由Hand and Till(2001)定义的多级AUC,但我不确定如何在其所需的单个向量中提供预测值。
如果有必要的话,我可以尝试编写一个例子,虽然我认为这对某些人来说是常规的,但是作为一个新手,我错过了一些东西。
答案 0 :(得分:2)
按原样传入响应变量,并使用最可能的预测变量候选者:
multiclass.roc(ProxFiltered$response_variable, apply(preds2, 1, function(row) which.max(row)))
答案 1 :(得分: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)
另一个(更好的)选择是将您的问题转换为非二元问题,即与真实类相关的最佳预测(或某些加权最佳预测)?