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

XGBoost交叉验证train-merror与test-merror全为0的原因及解决方法

问题原因
  • 核心错误:构造输入特征矩阵时直接使用了as.matrix(data),而原始data包含待预测的标签列w,相当于把标签本身作为特征输入给模型。XGBoost可直接通过该特征完美拟合标签,因此训练和测试的分类错误率均为0。
  • 非核心的参数不规范问题:当前是二分类任务,却使用了多分类的参数组合num_class=2+objective = "multi:softmax",该问题不会直接导致本次现象,但不符合任务适配要求。
解决方法
  1. 首先拆分特征和标签,禁止将标签列放入输入特征:
# 提取所有特征列,排除标签w
feature_mat <- as.matrix(data[, !colnames(data) %in% "w"])
# 单独提取标签列
label <- data$w
  1. 调整为二分类适配的参数配置,替换原有多分类参数:
xgb.cv(
  data = feature_mat,
  label = label,
  nrounds = 20,
  nfold = 5,
  eval_metric = "error", # 二分类错误率指标,替代多分类的merror
  lambda = 1,
  objective = "binary:logistic" # 二分类目标函数,无需额外设置num_class
)
  1. 可选优化:如果调整后指标依然不符合预期,可进一步检查标签分布是否均衡、缺失值处理逻辑是否匹配业务需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:04