Pourquoi ne pas former le modèle final sur l'ensemble des données après avoir effectué les données de test de la base de réglage de l'hyperparamètre et les données de validation de la base de sélection du modèle?

9

Par données entières, je veux dire train + test + validation

Une fois que j'ai corrigé mon hyperparamètre à l'aide des données de validation et choisi le modèle à l'aide des données de test, ne vaudra-t-il pas mieux avoir un modèle formé sur l'ensemble des données afin que les paramètres soient mieux formés plutôt que d'avoir le modèle formé uniquement données de train

Apoorva Abhishekh
la source
2
Vous ne devez JAMAIS corriger vos hyperparamètres à l'aide de vos données de test. Vous venez de gâcher toute votre expérience en supprimant votre groupe de contrôle aveugle (jeu de test).
JahKnows
@JahKnows Après avoir réglé les paramètres hyper pour un modèle, je ne comprends pas le mal, sauf que je ne saurai pas à quel point il se généralise sur un autre ensemble de données. Comment ai-je gâché mon expérience? est-ce que je manque quelque chose?
Apoorva Abhishekh

Réponses:

8

La question est sous une mauvaise hypothèse. Beaucoup de gens font ce que vous dites qu'ils "ne peuvent pas" faire.

En fait, l' implémentation de la recherche de grille dans le package sklearn largement déployé fait exactement cela. À moins refit=Falsequ'il ne recycle le modèle final en utilisant la totalité des données.

Je pense que pour certains hyperparamètres, cela pourrait ne pas être très souhaitable, car ils sont relatifs au volume de données. Par exemple, considérez la min_samples_leaftactique de pré-élagage pour un arbre de décision . Si vous avez plus de données, la pré-élagage peut ne pas fonctionner comme vous le souhaitez.

Mais encore une fois, la plupart des gens se recyclent en fait en utilisant toutes les données après la validation croisée, afin de se retrouver avec le meilleur modèle possible.

Addendum: @NeilSlater dit ci-dessous que certaines personnes effectuent un hold-up sur le CV. En d'autres termes, ils ont une division de test de train et effectuent ensuite la sélection de modèle sur la formation. Selon lui, ils se réentraînent en utilisant le groupe de formation d'origine divisé, mais pas le groupe de test. L'ensemble de test est ensuite utilisé pour effectuer une estimation finale du modèle. Personnellement, je vois trois défauts à ce sujet: (a) cela ne résout pas le problème que j'ai mentionné avec certains hyperparamètres dépendant du volume de formation puisque vous vous ré-entraînez de toute façon, (b) lors du test de nombreux modèles, je préfère plus sophistiqué des méthodes telles que la validation croisée imbriquée pour qu'aucune donnée ne soit gaspillée, et (c) la rétention est une méthode affreuse pour déduire comment un modèle généralisera lorsque vous aurez peu de données.

Ricardo Cruz
la source
La fonctionnalité concerne la réutilisation de la validation croisée, il n'est toujours pas conseillé de réutiliser les données de test, car vous n'avez que des hypothèses de validation croisée et aucune mesure des performances. Tout paramètre de bogue ou de problème (tel que l'exemple que vous donnez) pourrait autrement aggraver le modèle de manière indétectable.
Neil Slater
@NeilSlater Je ne comprends pas ce que vous avez dit ici: "La fonctionnalité concerne la réutilisation de la validation croisée"
Ricardo Cruz
"fonctionnalité" -> l' refitoption de la fonction GridSearchCV. Il ne réajuste pas pour inclure les données de test retenues (il n'a même pas la possibilité de voir ces données).
Neil Slater
@NeilSlater, vous pouvez facilement vérifier le code par vous-même si vous ne me croyez pas (ici) . Si refit = True, alors "ajustez le meilleur estimateur en utilisant l'ensemble de données".
Ricardo Cruz
1
@NeilSlater, ce n'est pas mon expérience, mais j'ai ajouté votre expérience à mon commentaire afin que d'autres puissent en bénéficier. Je vous remercie.
Ricardo Cruz
1

Oui, vous pouvez.

Comme les données de test sont censées provenir d'une distribution similaire pour former les données, vous ne casserez pas votre modèle. Si vous avez correctement formé le modèle, vous ne remarquerez aucun changement significatif (sauf une meilleure métrique de précision sur les données de test / validation précédentes).

Mais il est rarement vrai que les données de test proviennent précisément de la même distribution que les données de train, donc dans un scénario d'application réel, vous pouvez obtenir une meilleure généralisation de votre modèle.

Il'ya Zhenin
la source
1
Le problème avec l'inclusion des données de test selon cette suggestion, c'est que vous n'avez maintenant aucune mesure de la façon dont le modèle se généralise. Oui, vous pourriez vous attendre à ce qu'il se généralise mieux. Cependant, vous ne savez pas , car vous avez supprimé votre capacité à le mesurer. Je suggère d'ajouter cette mise en garde et d'expliquer pourquoi parfois cela est toujours correct (par exemple, lors de la réception de nouvelles données, vous pourriez être en mesure de traiter cela comme un nouvel ensemble de tests et de construire une nouvelle mesure au fil du temps, tout en profitant, espérons-le, du meilleur modèle. - c'est un risque cependant)
Neil Slater
@NeilSlater: Je comprends que j'ai supprimé ma capacité de mesurer la qualité de sa généralisation sur un autre ensemble de données. Mais si j'ai à la fois test et holdout, même après un réglage hyper paramétrique, je peux à nouveau entraîner mon modèle sur train + test, je serai toujours laissé avec holdout pour vérifier si mon modèle se généralise. Je sais que c'est différent de ce que j'ai demandé. Mais je veux juste connaître votre point de vue.
Apoorva Abhishekh
1
@ApoorvaAbhishekh: Si vous aviez encore un autre ensemble de données à exclure, alors oui, vous pouvez l'utiliser comme nouveau jeu de test par rapport au nouveau modèle formé sur new_train = {ancien train, ancien cv, ancien test}. Ensuite, vous obtiendrez une mesure de généralisation. Bien que vous deviez faire attention à ne pas trop l'utiliser - s'il s'avère qu'il y a un problème avec le nouvel ensemble combiné (par exemple, un arrêt précoce doit changer en raison de plus de données), vous ne pouvez pas également l'utiliser comme nouvel ensemble de cv. . . sauf si vous avez encore un autre jeu de réserves en réserve. . .
Neil Slater du
@NeilSlater En théorie, vous avez besoin d'un nouvel ensemble de données pour connaître les performances. Dans la pratique, vous pouvez être sûr que votre modèle fonctionne bien, car vous l'avez travaillé longtemps et vous savez à quoi vous attendre. Mais généralement, vous disposez également d'autres données pour vérifier les performances d'un modèle, par exemple, en vision par ordinateur - des données sans étiquette. Ce n'est pas juste, mais ça marche aussi. Bien sûr, c'est un cas extrême, mais je veux dire que cela pourrait fonctionner. Moi-même, j'ai toujours un ensemble de test que je ne mélange pas à la formation.
Il'ya Zhenin
1

La réponse à cette question dépend de l'algorithme de formation (technologie) que vous utilisez. Par exemple, j'ai vu certaines approches dans la classification d'ensemble où des ensembles de formation et de validation (mais pas de test) sont combinés à la fin. Il est très important de savoir que même la validation est principalement utilisée pour décider des hyperparamètres. Certains de ces hyperparamètres peuvent être fonction des données utilisées pour la formation. Par exemple, dans la validation DNN, nous savions quand s'arrêter, car le sur-ajustement peut se produire à la suite du réglage continu des paramètres (poids) du réseau, nous avons besoin d'un moyen de savoir quand s'arrêter. Sans l'ensemble de validation, vous marcherez aveuglément dans le processus de formation. En revanche, si vous utilisez exactement le même nombre d'itérations que spécifié précédemment, il y a une forte probabilité que vous ne gagniez pas à partir de ces échantillons supplémentaires. Le kit de test ne doit pas être touché du tout, comme indiqué ci-dessus sans le kit de test, vous n'aurez aucune méthode pour évaluer votre modèle. C'est du jeu, vous NE POUVEZ PAS livrer de modèle ou de solution sans l'estimation de sa précision sur la véritable distribution des données (qui est représentée par les données de test).

Bashar Haddad
la source
Je voulais dire après la formation sur les données du train, le réglage des paramètres hyper sur les données de validation et le choix de la base du modèle les données de test, Puis-je former ma base du modèle l'ensemble des données. Ou, puis-je combiner les données de formation et les données de validation après avoir terminé le réglage hyperparamétrique et estimer la précision à l'aide des données de test. Toutes mes excuses pour l'avoir mal écrit. Je l'ai corrigé maintenant.
Apoorva Abhishekh