相互検証のパフォーマンスは、独立したデータセットの実際のパフォーマンスを予測するための正確な指標になりますか?
この質問は、相互検証の背後にある理論に関連していると思います。ここに私の経験的発見を示し、そこで交差検証の理論に関連する質問を書きました。 2つのモデルM1とM2があります。同じデータセットを使用してそれらをトレーニングし、同じデータセットを使用して交差検証を実行して、各モデルの最適なパラメーターを見つけます。最終的に、最適パラメーターの下でのM1は、10倍の交差検証スコアの点で、最適パラメーターの下でのM2よりもパフォーマンスが良いことがわかりました。次に、予測子とラベルの両方を含む別の独立したテストデータセットがあり、このテストデータセットがトレーニングデータセットの同じ分布から生成された場合、これらの2つの十分に調整されたモデルをその新しいテストデータセットに適用する前に、主張したり、新しいテストデータセットよりもM1の方がM2よりもパフォーマンスが優れていることを期待できますか? 私はカグルタイタニックの例を演奏していました。2つのxgboostモデルがあり、M1は十分にチューニングされており、M1はトレーニングデータセットに対して10倍の交差検証を実行するという点であまりチューニングされていません。しかし、両方を送信すると、調整が不十分なモデルの方が実際にテストデータセットのスコアが優れていることがわかりました。それはどうでしょうか?そして、それが真実である場合、データを異なるモデルに適合させ、モデルパラメータを調整するときに何を探す必要がありますか? これが私の具体的な提出結果です:ランダムグリッド検索を行いました params_fixed = {'silent': 1,'base_score': 0.5,'reg_lambda': 1, 'max_delta_step': 0,'scale_pos_weight':1,'nthread': 4, 'objective': 'binary:logistic'} params_grid = {'max_depth': list(np.arange(1,10)), 'gamma': [0,0.05,0.1,0.3, 0.5,0.7,0.9], 'n_estimators':[1,2,5,7,10,15,19,25,30,50], 'learning_rate': [0.01,0.03,0.05,0.1,0.3,0.5,0.7,0.9,1], 'subsample': [0.5,0.7,0.9], 'colsample_bytree': [0.5,0.7,0.9], 'min_child_weight': [1,2,3,5], 'reg_alpha': [1e-5, 1e-2, 0.1, 0.5,1,10] } rs_grid = RandomizedSearchCV( estimator=XGBClassifier(**params_fixed, seed=seed), param_distributions=params_grid, n_iter=5000, cv=10, scoring='accuracy', random_state=seed ) 変数を変更するたびにn_iter。まず、を設定しますn_iter=10。これにより、これらのハイパーパラメーターの値のセットが得られます。このベクトルをと呼び、cvスコア(精度率)が0.83389の場合、を使用してモデルをトレーニングし、独立したテストで予測を生成しますデータセット、およびKaggleに送信すると、テストデータセット0.79426で真の精度が生成されますα 1α1α1\alpha_1α1α1\alpha_1 …