首页 > 解决方案 > RandomizedSearchCV & XGBoost + 提前停止

问题描述

我正在尝试使用“AUCPR”作为早期停止使用 Sklearn 的 RandomSearchCV 和 Xgboost 的评估标准,但我无法指定maximize=True早期停止拟合参数。相反,eval_metric 会最小化 AUCPR。

我已经提到过这个问题: GridSearchCV - XGBoost - Early Stopping

但似乎早期停止仅适用于最小化目标?当 AUCPR 是最低的不是正确的优化时,考虑早期停止中的最佳迭代。

    xgb = XGBClassifier()


    params = {
    'min_child_weight': [0.1, 1, 5, 10, 50],
    'gamma': [0.5, 1, 1.5, 2, 5],
    'subsample': [0.6, 0.8, 1.0],
    'colsample_bytree': [0.6, 0.8, 1.0],
    'max_depth': [5, 10, 25, 50],
    'learning_rate': [0.0001, 0.001, 0.1, 1],
    'n_estimators': [50, 100, 250, 500],
    'reg_alpha': [0.0001, 0.001, 0.1, 1],
    'reg_lambda': [0.0001, 0.001, 0.1, 1]
    }

    fit_params={"early_stopping_rounds":5,
                "eval_metric" : "aucpr", 
                "eval_set" : [[X_val, y_val]]
               }

        random_search = RandomizedSearchCV(xgb, 
                                           cv=folds,
                                           param_distributions=params, 
                                           n_iter=param_comb, 
                                           scoring=make_scorer(auc_precision_recall_curve, needs_proba=True), 
                                           n_jobs=10,
                                           verbose=10, 
                                           random_state=1001,
                                          )

random_search.fit(X_train, y_train, **fit_params)

标签: pythonscikit-learnxgboost

解决方案


似乎 AUCPR 最大化不适用于 sklearn

https://github.com/dmlc/xgboost/issues/3712


推荐阅读