0

5つの重複しない折り目に分割するターゲットデータセットがあります。 各繰り返し(合計反復== 5)では、パラメータ調整を行うために1倍(それをfold_for_tuningと呼ぶ)を使用し、テストには4つのフォールドを使用します。GridSearchCVパラメータで分類が改善されない

これは、私がドメイン適応を行い、チューニングする前に、ソースデータを分類器に適合させ、ターゲットデータの小さなサブセットを使用して調整しているためです)。

私は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) を呼び出す場合、私はMUCH BETTERパフォーマンスを得る:

prediction grid search : 
acc: 0.933313032887 
auc: 0.930058979926 
f1: 0.920623414281 

だから私は混乱しています:グリッド検索で何が起こっていますか? param_gridで渡すパラメータだけを最適化してはいけませんか?もしそうなら、なぜ同じ結果のパラメータをclassifierXGBに設定しても、パフォーマンスは向上しませんか?

+0

「反復」とは何ですか?それは明確ではない – MMF

+0

あなたは 'gsearch.fit'に従って何をするかを含めて[MWE](http://stackoverflow.com/help/mcve)を表示できますか? – ncfirth

答えて

0

gsearch.predict(...)となり、最善の分類子が予測されます。

私はClassifierXGBの背景に何が起こっているかわからないんだけど、あなたは新しいclassifierXGBを作成する場合:

classifierXGB = ClassifierXGB(**gsearch.best_params_)` 

その後、コールclassifierXGB.predict(4_unseen_folds)あなたはgsearch.predict(4_unseen_folds)に似たものが表示されるはずです。

実際に期待したことができない場合は、classifierXGBに変更を加えることが考えられます。 ClassifierXGBの新しいインスタンスを作成すると役立ちます。あなたのclassifierXGBにパラメータを設定したら

0

は、あなたはグリッド検索は「右」のパラメータを見つけ

もの

を予測するためにそれを使用し、それを全体の列データの、 、その後に合わせて を必要としますあなたは効率的に学習するためにそれらを分類器に渡しましたが、モデルの実際の木/重みを与えていませんでした。まだ空のシェルです。

関連する問題