You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XGBoost二分类预测分数解读与多模型ROC曲线绘制问询

问题解答

1. 预测分数的类别解读

  • 在XGBoost二分类任务中,predict(model, as.matrix(test_set[,-1]), type = 'prob')返回的是样本属于正类的概率值。
  • 正类的定义由训练时的设置决定:
    • 若训练标签为0/1的二分类形式,默认正类为1;
    • 可通过模型参数确认:原生XGBoost模型查看model$params$objective(如binary:logistic对应正类为1);若用caret等框架包装,查看model$levels,第二个元素通常为正类。
  • 以分数0.460950464010239为例:若正类是1,该分数代表样本属于class 1的概率为46%,属于class 0的概率为54%,因此样本更可能属于class 0。

2. 绘制多模型ROC曲线(含AUC标注)

使用pROC包实现,步骤如下:

前提准备

  • 确保测试数据框包含真实标签列(假设列名为true_labels,取值为0/1);
  • 安装并加载依赖包:
install.packages("pROC")
library(pROC)

完整代码示例

# 假设数据框名为pred_df,真实标签列为true_labels
# 提取所有模型的预测列
model_cols <- c("model_meta", "model_x2", "model3", "model4")

# 存储各模型的ROC对象
roc_list <- list()

# 循环计算每个模型的ROC与AUC
for (col in model_cols) {
  roc_obj <- roc(pred_df$true_labels, pred_df[[col]])
  roc_list[[col]] <- roc_obj
}

# 绘制基础ROC曲线
plot(roc_list[[1]], col = "red", main = "多模型ROC曲线", 
     xlab = "假阳性率(FPR)", ylab = "真阳性率(TPR)", lwd = 2)

# 叠加其他模型的曲线
colors <- c("blue", "green", "purple")
for (i in 2:length(roc_list)) {
  plot(roc_list[[i]], col = colors[i-1], add = TRUE, lwd = 2)
}

# 生成带AUC的图例文本
legend_text <- sapply(names(roc_list), function(x) {
  paste0(x, " (AUC = ", round(roc_list[[x]]$auc, 2), ")")
})

# 添加图例
legend("bottomright", legend = legend_text, 
       col = c("red", "blue", "green", "purple"), lwd = 2)

代码说明

  • roc()函数完成ROC曲线数据与AUC值的计算;
  • plot(..., add=TRUE)实现多曲线在同一画布的叠加;
  • 通过round(roc_obj$auc, 2)格式化AUC值,让图例更简洁直观。

内容的提问来源于stack exchange,提问作者Kev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:47:34