首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超参数整定XGBClassifier

超参数整定XGBClassifier
EN

Data Science用户
提问于 2019-04-23 05:51:19
回答 2查看 2.9K关注 0票数 3

我正在为一场比赛开发一个高度不平衡的数据集。

训练数据的形状为:(166573,14)

代码语言:javascript
复制
train['outcome'].value_counts()

0    159730 
1      6843

我使用XGBClassifier构建模型,我手动设置的唯一参数是scale_pos_weight : 23.34 (0值计数/1值计数)

在AUC指标下,这个数字大约是82%。

我想,如果我超调所有其他参数,我就能得到很高的精度。

代码语言:javascript
复制
XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
       colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,
       max_depth=3, min_child_weight=1, missing=None, n_estimators=100,
       n_jobs=1, nthread=None, objective='binary:logistic', random_state=0,
       reg_alpha=0, reg_lambda=1, scale_pos_weight=23.4, seed=None,
       silent=True, subsample=1)

我尝试了GridSearchCV,但是在我的本地机器上完成它需要很长时间,我无法得到任何结果。

代码语言:javascript
复制
clf = XGBClassifier()
grid = GridSearchCV(clf,
                    params, n_jobs=-1,
                    scoring="roc_auc",
                    cv=3)

grid.fit(X_train, y_train)
print("Best: %f using %s" % (grid.best_score_, grid.best_params_))

考虑到严重不平衡的数据集,我应该针对哪些其他参数进行调优,以及如何运行它,这样我才能真正地获得一些结果?

EN

回答 2

Data Science用户

发布于 2019-07-18 17:35:24

1)随机搜索如果通常优于网格https://www.analyticsindiamag.com/why-is-random-search-better-than-grid-search-for-machine-learning/,请尝试:

代码语言:javascript
复制
#clf = RandomizedSearchCV(clf ,param_distributions = params, cv=kfold, scoring="accuracy", n_jobs= 10, verbose = 1)

2)对于不平衡的数据集:

  • 重采样:过采样或过采样
  • 创建新的数据点

https://towardsdatascience.com/methods-for-dealing-with-imbalanced-data-5b761be45a18

票数 1
EN

Data Science用户

发布于 2019-04-23 06:42:35

我认为你正在处理两个不同的问题:

  1. 不平衡数据集
  2. XGBoost的超参数优化

有许多处理不平衡数据集的技术,其中之一可能是向您的小类添加更高的权重,或者另一种方法可能是重新分配您的数据,从而给小类提供更多的机会。

对于XGBoost,我建议固定学习速率,使树的早期停止数达到300左右,然后先处理树数和最小子体重,这是最重要的参数。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/49746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档