gbm 包中的 ROC 分数

Posted

技术标签:

【中文标题】gbm 包中的 ROC 分数【英文标题】:ROC score in gbm package 【发布时间】:2014-04-18 22:48:18 【问题描述】:

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

【问题讨论】:

我怀疑您使用的是dismo 包?你有任何输出吗? 我正在使用gbm。我得到所有其他输出都很好(即偏差、训练数据相关性、CV 相关性、CV SE 等)。它只是我没有得到的 ROC。 gbm 中没有名为gbm.step 的函数,因此您可能得到的唯一输出是Error: could not find function "gbm.step"。请发布你得到的输出。 我跑了:testing.tc5.lr01 &lt;- gbm.step(data=TNTPSumAbundVis1, + gbm.x = 3:4, + gbm.y = 2, + family = "gaussian", + tree.complexity = 5, + learning.rate = 0.01, + bag.fraction = 0.5),这是输出:GBM STEP - 2.9 版平均总偏差 = 0.815 平均残余偏差 = 0.499 估计 cv 偏差 = 0.637; se = 0.093 训练数据相关性 = 0.641 cv 相关性 = 0.46; se = 0.085 经过时间 - 0.05 分钟 我很抱歉这种格式的评论。仅作记录,我使用这篇论文 [onlinelibrary.wiley.com/doi/10.1111/j.1365-2656.2008.01390.x/… 作为参考。 【参考方案1】:

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

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

【讨论】:

那一定是高斯家族。因为我关注的论文具有伯努利分布类型。其次,我不知道 gbm 是与 dismo 一起构建的,因为我从未使用过 dismo。我正在努力,如果我能解决,我会发布答案。【参考方案2】:

我通过深入研究代码并关注线程找到了答案:

训练数据 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 已经计算出您想要的值,并显示给您,但它们隐藏在模型对象列表中。

【讨论】:

以上是关于gbm 包中的 ROC 分数的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用caret包对GBM模型参数调优(自定义调优的评估指标,例如ROC指标):抽取预测标签及类概率抽样ROC的指标并绘制密度图

使用gbm.plot(dismo)和partial(pdp)时,部分依赖图的差异,为什么?

R中的多类ROC曲线

R语言使用caret包对GBM模型参数调优SVM模型自定义参数调优RDF模型自定义参数调优(例如,ROC)重采样对多个模型的性能差异进行统计描述可视化多模型在多指标下的性能对比分析

VotingClassifier 中的 roc_auc,scikit-learn (sklearn) 中的 RandomForestClassifier

插入符号分类阈值