python - 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)
解决方案
似乎 AUCPR 最大化不适用于 sklearn
推荐阅读
- dart - 是否可以使用 .where() 来“断言”一个类型?
- node.js - 如何以json字符串作为值解析json
- python - 使用 Python 进行 FFT
- visual-studio - 如何在 Visual Studio 中选择下一个重复选择?
- minizinc - Minizinc 目标函数用于计划中的差距
- cadence-workflow - 工作流事件的重新排序
- birt - 无法使用 javascript 设置 Birt 图表的 SeriesIdentifier
- node.js - 不生成招摇文档 - Node JS + swaggerJSDoc
- javascript - Firestore orderBy Timestamp DESC
- reactjs - 带分页的材料 Ui 表排序