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

如何在Amazon SageMaker的XGBoost训练任务中添加多评估指标?

在Amazon SageMaker XGBoost中配置多个评估指标

场景1:使用SageMaker预构建XGBoost Estimator

SageMaker的XGBoost容器通过命令行接口传递超参数,因此多个评估指标需以空格分隔的字符串形式传入,而非Python列表。示例代码:

from sagemaker.xgboost import XGBoost

# 初始化XGBoost Estimator
xgb_estimator = XGBoost(
    entry_point="your_train_script.py",
    role="your_sagemaker_role_arn",
    instance_count=1,
    instance_type="ml.m5.xlarge",
    framework_version="1.7-1",
    hyperparameters={
        "eval_metric": "mae merror",  # 多个指标用空格分隔
        "objective": "binary:logistic",  # 根据任务类型调整
        "num_round": 100,
        # 其他超参数...
    }
)

# 启动训练任务
xgb_estimator.fit({"train": "s3://your-train-data-path", "validation": "s3://your-val-data-path"})

场景2:自定义训练脚本中调用原生XGBoost

如果在训练脚本内直接使用xgb.train(),按照XGBoost官方要求,直接传入字符串列表即可(旧版本可能需要元组列表,新版本已支持字符串列表)。示例代码:

import xgboost as xgb
import os

# 加载训练和验证数据(SageMaker会将数据下载到指定路径)
train_data_path = os.environ["SM_CHANNEL_TRAIN"]
val_data_path = os.environ["SM_CHANNEL_VALIDATION"]

dtrain = xgb.DMatrix(f"{train_data_path}/train.csv?format=csv&label_column=0")
dval = xgb.DMatrix(f"{val_data_path}/val.csv?format=csv&label_column=0")

# 定义训练参数
params = {
    "objective": "binary:logistic",
    "eval_metric": ["mae", "merror"],  # 直接传入字符串列表
    "num_round": 100
}

# 启动训练,指定评估数据集
evals = [(dtrain, "train"), (dval, "validation")]
model = xgb.train(params, dtrain, evals=evals, verbose_eval=10)

# 保存模型到SageMaker指定路径
model.save_model(os.environ["SM_MODEL_DIR"] + "/xgboost-model")

关键注意点

  • 评估指标需与任务类型匹配(比如merror适用于分类任务,mae适用于回归任务,避免混用不兼容指标)。
  • 建议使用1.5-1及以上的XGBoost稳定版本,语法兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:00:53