我最近正在尝试优化模型,但由于某种原因,每当我尝试运行优化时,最终模型得分都比以前差,所以我相信我做错了什么。
为了优化我的模型,我定义了参数网格,然后拟合训练数据,然后根据结果再次使用 nre 参数运行,例如-
#ROUND 1
param_grid={
'max_depth': [3,4,5],
'learning_rate':[0.1,0.01,0.05],
'gamma': [0,0.25,1.0],
'reg_lambda':[0,1.0,10.0],
'scale_pos_weight':[1,3,5]
}
grid_search = GridSearchCV(estimator = clf_xgb, param_grid = param_grid,
cv = 3, n_jobs = -1, verbose = 2)
grid_search.fit(X_train,y_train)
grid_search.best_params_
>>>.....
(现在基于更改参数的结果......)
在这一步之后,我选择了最好的超参数并运行模型;
clf_xgb=xgb.XGBClassifier(seed=42,
objective='binary:logistic',
gamma=0,
learn_rate=0.7,
max_depth=6,
reg_lambda=0.8,
scale_pos_weight=1,
subsample=0.9,
cilsample_bytree=0.5)
clf_xgb.fit(X_train,
y_train,
verbose=True,
early_stopping_rounds=10,
eval_metric='aucpr',
eval_set=[(X_test,y_test)])
问题是当我检查模型分数时
clf_xgb.score(X_test,y_test)
我的分数总是比优化前的分数低,这让我怀疑我在这个过程中遗漏了一些东西/基本原则。
是否有可能在运行优化后我的分数不会变得更好(甚至更糟?)?我的错误在哪里?是否有其他参数可以影响或改进我的模型?
