gpt4 book ai didi

python - 使用 XGBoost 进行超参数网格搜索 - 评分函数与评估指标

转载 作者:行者123 更新时间:2023-12-05 06:28:38 27 4
gpt4 key购买 nike

处理不平衡数据集问题(7% 对 93%),我想使用 grid search cross-validation 找出我的 xgboost 模型的最佳结构| . 注意:我正在使用分层 k 折交叉验证来确保每个折都具有正确比例的少数类别。

我的情况如下,我注意到 GridSearchCV 有一个名为“scoring”的参数,我可以向其传递多个 sklearn.metrics如图here.但是,xgboost 也有一个名为“eval_metric”的参数,我对两者有点困惑。如果有区别,你能解释一下吗?指定它的正确位置在哪里?

我将附上一些代码来说明它:

params_grid = {
'n_estimators': [100, 300],
'learning_rate': [0.01, 0.1, 0.3],
'colsample_bytree': [0.3, 0.5],
}

params_fixed = {
'objective':'binary:logistic',
'silent':1,
'eval_metric':'auc'
}


n_folds = 5
skf = StratifiedKFold(n_splits=n_folds,random_state=seed,shuffle=True)

# create xgboost classifier
xgb = XGBClassifier(**params_fixed, seed=seed)

grid_search = GridSearchCV(estimator=xgb, param_grid=params_grid,
cv=skf.split(X_train, y_train), scoring='balanced_accuracy')

此外,对于我的情况,您会推荐使用哪个函数?它可以来自 skearn.metrics 甚至是自定义的,但我还不知道如何编写它。请注意,我的问题是召回率和精度之间的权衡问题,但召回率对我来说是最重要的,因为我想在 99% 的情况下检测少数类。

最佳答案

将我的评论变成答案,没有任何绕过,一切仍然有效,但它没有意义。每个算法都会最大化您告诉它的指标,因此在您的示例中,xgboost 将构建树以最大化 auc,并且网格搜索将找到使准确性最大化的超参数。这显然没有意义。

因此,您应该将两个指标设置为相同,无论是 AUC、召回率还是您认为适合您的问题的任何指标;对于不平衡的数据集,AUC 是一个不错的选择,或者您可以选择对召回率更平衡的 F 分数。

关于python - 使用 XGBoost 进行超参数网格搜索 - 评分函数与评估指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54213722/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com