为什么在 XGBoost(多类模型)中调整超参数后我的准确率得分下降?

问题描述 投票:0回答:1

我正在尝试调整我构建的多类模型,但每次更改超参数时,我的准确率得分都会显着下降。我正在使用 RandomizedSearchCV 和 best_params_ 来确定我需要更改哪些参数。在这种特定情况下,best_params_ 建议学习率为 0.29,同时将准确度分数从 0.6238 降低到 0.6192。我用来调整参数的代码如下:

xgb = XGBClassifier(booster='gbtree', objective='multi:softmax', random_state=42, eval_metric="auc", 
                    num_class=num_of_classes, tree_method='gpu_hist', importance_type='gain')

xgb.fit(X_train,y_train)

params={
    "colsample_bytree":[1],
    "gamma":[0],
    "learning_rate":[0.3,0.29], 
    "max_delta_step":[0], 
    "max_depth":[6],
    "min_child_weight":[1],
    "n_jobs":[12],
    "subsample":[1]
    }

clf=RandomizedSearchCV(xgb,param_distributions=params,n_iter=1000,scoring='accuracy',cv=10,verbose=3)
clf.fit(X,Y)

这是测量精度的代码:

val = clf.predict(X_test)

lb = preprocessing.LabelBinarizer()
lb.fit(y_test)

y_test_lb = lb.transform(y_test)
val_lb = lb.transform(val)

accuracy_score(y_test_lb, val_lb)
python machine-learning jupyter-notebook xgboost
1个回答
0
投票

测试精度的波动不一定是问题。由于最佳超参数是根据最佳 CV 分数推荐的,因此它并不总是对应于最佳测试集准确性。在您的示例中,差异很小。

但是,您提供的代码似乎存在多个问题:

  • 您的测试集似乎已泄漏到训练过程中。
  • 您正在使用 1000 次迭代,但超参数只有 2 种可能的组合。这只是一个例子吗?
© www.soinside.com 2019 - 2024. All rights reserved.