【问题标题】:Using Custom Metric for Score Method in XGBoost在 XGBoost 中为 Score 方法使用自定义指标
【发布时间】:2021-07-18 05:26:00
【问题描述】:

我正在使用 xgboost 解决数据集不平衡的分类问题。我计划使用 f1-score 或 roc-auc 的某种组合作为我判断模型的主要标准。

目前score 方法返回的默认值是准确度,但我真的希望返回一个特定的评估指标。我这样做的主要动机是我假设模型中的feature_importances_ 属性是由影响score 方法的因素确定的,并且影响预测准确性的列很可能与影响 roc-auc 的列不同。现在我正在将值传递给eval_metric,但它似乎没有什么不同。

这里是一些示例代码:

from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.metrics import roc_auc_score

data = load_breast_cancer()
X = data['data']
y = data['target']

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, test_size=0.2, stratify=y)

mod.fit(X_train, y_train)

此时,mod.score(X_test, y_test) 将返回一个 ~ 0.96 的值,而 roc_auc_score 将返回 ~ 0.99。

我希望以下 sn-p:

mod.fit(X_train, y_train, eval_metric='auc')

然后将允许 mod.score(X_test, y_test) 返回 roc_auc_score 值,但它仍然返回预测准确性,而不是 roc_auc

这个练习的目的是估计不同列对结果的影响,所以如果我可以使用 f1 或 roc_auc 返回 feature_importances_ 作为影响的衡量标准,这将是一个巨大的好处,但我似乎没有现在走在正确的道路上。

谢谢。

【问题讨论】:

    标签: python scikit-learn xgboost


    【解决方案1】:

    您的问题分为两部分,要使用eval_metric,您需要提供数据以使用eval_set = 进行评估:

    mod = XGBClassifier()
    mod.fit(X_train, y_train,eval_set=[(X_test,y_test)],eval_metric="auc")
    

    您可以使用 evals_result() 检查 auc,它会为每次迭代提供 auc:

    mod.evals_result()
    
    {'validation_0': OrderedDict([('auc',
                   [0.965939,
                    0.9833,
                    0.984788,
                    [...]
                    0.991402,
                    0.991071,
                    0.991402,
                    0.991733])])}
    

    重要性分数是根据 see help page 中使用该功能的所有拆分的平均增益计算的。根据您的问题,我想您需要 mdoel 来最大化 auc,就像在交叉验证中一样,但是您不能将 auc 作为 xgboost 中的目标。梯度提升方法需要一个可微的损失函数。

    对于不平衡的数据集,可以尝试调整参数scale_pos_weight,调整正负权重的平衡。这在xgboost website

    中进行了讨论

    【讨论】:

      猜你喜欢
      • 2022-08-23
      • 2016-09-23
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 2020-08-22
      • 2019-05-01
      相关资源
      最近更新 更多