【发布时间】:2017-04-20 05:18:08
【问题描述】:
我有一个目标数据集,我将其分为 5 个不重叠的折叠。
在每次迭代(总迭代次数 == 5)中,我使用 1 次(我们称之为 fold_for_tuning)进行参数调整,并使用 4 次进行测试。
这样做的原因是我想做域适应,在调优之前,我将源数据拟合到分类器,并且我正在使用目标数据的一小部分进行调优)。
我调用 GridSearchCV 并匹配 fold_for_tuning,还传递了一堆我想要调整的参数:
param_test1 = {
'max_depth': [5, 7],
'min_child_weight': [0.5, 1, 2],
'gamma': [0.1, 1],
'subsample': [0.6, 0.7],
'colsample_bytree': [0.6, 0.7],
'reg_alpha': [0.01, 0.1]
}
gsearch = GridSearchCV(estimator=classifierXGB,
param_grid=param_test1,
scoring='accuracy',
n_jobs=4, iid=False, cv=2)
gsearch.fit(fold_for_tuning_data, fold_for_tuning_labels)
每次迭代后,我得到gsearch.best_params_,并将它们设置为classifierXGB(因为据我了解,它们应该提供更好的预测)。
然后,当我打电话
test_y_predicted = classifierXGB.predict(4_unseen_folds)
我没有得到改善:
prediction before tuning:
acc: 0.690658872245
auc: 0.700764301397
f1: 0.679211922203
prediction after tuning:
acc: 0.691382460414
auc: 0.701595887248
f1: 0.680132554837
但如果我打电话 gsearch.predict(4_unseen_folds)
我的表现要好得多:
prediction grid search :
acc: 0.933313032887
auc: 0.930058979926
f1: 0.920623414281
所以我很困惑:网格搜索内部发生了什么?不应该只优化我传入param_grid的参数吗?如果是这样,那么为什么在classifierXGB 中设置相同的参数并不能带来更好的性能?
【问题讨论】:
-
你叫什么
iteration?不清楚 -
你能显示MWE,包括你在
gsearch.fit之后做了什么吗?
标签: machine-learning scikit-learn cross-validation xgboost grid-search