使用具有多个类的 RandomizedSearchCV 进行 XGBoost 超参数调整

Posted

技术标签:

【中文标题】使用具有多个类的 RandomizedSearchCV 进行 XGBoost 超参数调整【英文标题】:XGBoost hyperparameter tunning with RandomizedSearchCV with multiple classes 【发布时间】:2021-02-15 17:42:42 【问题描述】:

我正在为我的模型进行超参数调整,我的代码是这样的:

para_tunning = 
        'learning_rate': [0.01,0.05,0.1],
        'min_child_weight': [1, 5, 10],
        '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': [3, 4, 5, 6, 7, 8, 9, 10],
        "n_estimators": [100, 200, 300, 400, 500],
        "objective": "multi:softmax",
        "aplha":[0,2,4,6,8]
        

clf_rndcv = RandomizedSearchCV(clf, 
                         param_distributions = para_tunning,
                         cv = 5,  
                         n_iter = 5,
                         scoring = 'accuracy', 
                         error_score = 0, 
                         verbose = 3, 
                         n_jobs = -1,
                         random_state = 42)
clf_rndcv.fit(X_train, y_train)

它显示Fitting 5 folds for each of 5 candidates, totalling 25 fits,我想它只是从 para_tunning 字典中随机选择 5 并进行 5 折 cv?如果我想测试所有参数,是否切换到 gridsearchcv?对调音有什么建议吗?我正在做一个多类分类器,有 100 个类,每个类 500 个样本:总共 50000 个。谢谢!

【问题讨论】:

【参考方案1】:

是的,如果你想搜索 ALL 超参数,你必须使用GridSearchCVGridSearch 搜索超参数的所有可能组合(根据您的情况,它可能非常大)。

供您参考,XGBoost 有自己的超参数调整。 XGBoost CV

【讨论】:

以上是关于使用具有多个类的 RandomizedSearchCV 进行 XGBoost 超参数调整的主要内容,如果未能解决你的问题,请参考以下文章

使用一个具有多个类的 Xib

具有多个类的 Scrapy 抓取 div?

在 C++ 中使用具有相同类的多个模板

使用具有多个类的 RandomizedSearchCV 进行 XGBoost 超参数调整

如何创建一个具有多个 ViewController 可以使用的关联视图类的 Nib

如何获取具有多个 css 类的 html 元素