【问题标题】:How to set SageMaker xgboost's eval_metric to f1?如何将 SageMaker xgboost 的 eval_metric 设置为 f1?
【发布时间】:2021-10-17 01:22:38
【问题描述】:

我尝试使用 SageMaker 的 AutoPilot 来解决二进制分类问题,我发现它使用 f1 作为评估指标。但是当我尝试编写一些代码而不进行这样的调整时:

xgb.set_hyperparameters(max_depth=5,
                        eta=0.2,
                        gamma=4,
                        min_child_weight=6,
                        subsample=0.8,
                        objective='binary:logistic',
                        eval_metric='f1',
                        num_round=100)

这会产生以下错误:

[2021-10-17:00:02:19:ERROR] 客户错误:指标“f1”不是 支持的。参数“eval_metric”应该是其中之一 选项:'rmse'、'mae'、'logloss'、'error'、'merror'、'mlogloss'、 “auc”、“ndcg”、“地图”、“泊松-nloglik”、“伽马-nloglik”、 '伽马偏差','tweedie-nloglik'。

既然自动驾驶能够计算 F1,我觉得它在某种方式的超参数设置中得到了支持?我是不是误会了?

我们将不胜感激。

【问题讨论】:

  • 将 validation:f1 与验证通道一起使用。 docs.aws.amazon.com/sagemaker/latest/dg/xgboost-tuning.html
  • 谢谢。我实际上阅读了同一篇文章并尝试了 eval_metric="validation:f1" 但我得到了同样的错误。当您说“验证通道”时,这是什么意思?
  • 我相信您可以在单个训练作业中设置 eval_metric="error",但可以在超参数调整作业中设置验证:f1

标签: xgboost amazon-sagemaker xgbclassifier


【解决方案1】:

您可以通过在初始化 Estimator 对象时将指标名称和正则表达式列表指定为 metric_definitions 参数来定义要发送到 CloudWatch 的指标。在这里看到它:Documentation

import sagemaker
from sagemaker.estimator import Estimator

estimator = Estimator(
    image_uri="your-own-image-uri",
    role=sagemaker.get_execution_role(), 
    sagemaker_session=sagemaker.Session(),
    instance_count=1,
    instance_type='ml.c4.xlarge',
    metric_definitions=[
       {'Name': 'train:error', 'Regex': 'Train_error=(.*?);'},
       {'Name': 'validation:error', 'Regex': 'Valid_error=(.*?);'}
    ]
)

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 2018-08-19
    • 2020-10-02
    • 2017-03-02
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 2019-01-09
    • 2021-12-16
    相关资源
    最近更新 更多