3

我在使用 gbm 包计算 ROC 分数 (AUC) 时遇到问题。我正在使用增强的回归树。我正在运行的脚本是:

testing.tc5.lr005 <- gbm.step(data=ModelData, 
gbm.x = 3:4,
gbm.y = 2,
family = "gaussian",
tree.complexity = 5,
learning.rate = 0.005,
bag.fraction = 0.5)

它应该产生“训练数据 ROC 分数”和“交叉验证 ROC 分数”以及其他相关参数。我没有得到 ROC 分数。我打电话names(testing.tc5.lr005)。如果我调用它会列出cv.roc.matrix但会产生以下内容testing.tc5.lr005$cv.roc.matrix

[1] 0 0 0 0 0 0 0 0 0 0

roc(TestData$TN,predTN)我尝试通过(TestData~用于预测的数据,即观察值;predTN~预测值)来计算 ROC AUC 。结果是[1]NA. 我不知道我做错了什么,尽管模型的其余部分似乎在合理的测试和 CV 相关性和 SE 值方面做得很好。任何关于我错在哪里或替代的指示将不胜感激!谢谢

4

2 回答 2

1

首先,我认为您将 gbm 包与 dismo 包一起使用。正如 Calimo 所说,gbm.step 在 dismo 之外不存在。

我无法回答您关于如何计算 ROC 的问题(我不是专家——我有同样的问题,这就是我来到这里的原因),但我可以告诉您 dismo 不会计算它。我查看了 dismo 包中的代码,似乎它们不允许对高斯族进行 ROC 计算。

于 2014-03-24T17:38:38.170 回答
0

我通过永远挖掘代码并关注线程找到了答案:

训练数据 AUC = self.roc = $training.stats$discrimination = $self.statistics$discrimination

Cv AUC 分数 = cv.roc = cv.stats$discrimination.mean = $cv.statistics$discrimination.mean

Se = cv.roc.se = cv.stats$discrimination.se = $cv.statistics$discrimination.se

用法:模型对象名称+最后一段代码,例如

myobject$self.statistics$discrimination

编辑:gbm.step 已经计算出您想要的值,并向您显示它们,但它们被隐藏在模型对象列表中。

于 2015-10-18T13:37:20.993 回答