Dans cet article, nous explorerons ces deux facteurs en détail. Nous allons d`abord étudier ce que la validation croisée est, pourquoi il est nécessaire, et comment l`exécuter via la bibliothèque Scikit-Learn de Python. Nous allons ensuite passer à l`algorithme de recherche de grille et voir comment il peut être utilisé pour sélectionner automatiquement les meilleurs paramètres pour un algorithme. Pour aider à construire la grille de paramètres, les utilisateurs peuvent utiliser l`utilitaire ParamGridBuilder. Par défaut, les ensembles de paramètres de la grille de paramètres sont évalués en série. L`évaluation des paramètres peut être effectuée en parallèle en définissant le parallélisme avec une valeur de 2 ou plus (une valeur de 1 sera de série) avant d`exécuter la sélection de modèle avec CrossValidator ou TrainValidationSplit. La valeur du parallélisme doit être choisie avec précaution pour maximiser le parallélisme sans dépasser les ressources de cluster, et les valeurs plus grandes peuvent ne pas toujours conduire à des performances améliorées. En règle générale, une valeur allant jusqu`à 10 devrait suffire pour la plupart des clusters. CrossValidator commence par diviser le jeu de données en un ensemble de plis qui sont utilisés en tant que jeux de données de test et de formation distincts. Par exemple, avec $k = $3 plis, CrossValidator générera 3 paires de jeux de données (formation, test), chacune d`entre elles utilisant 2/3 pour la formation et 1/3 pour les tests. Pour évaluer un ParamMap particulier, CrossValidator calcule la métrique d`évaluation moyenne pour les 3 modèles produits en ajustant l`estimateur sur les 3 paires de jeux de données (formation, test) différentes.
Lors de l`utilisation de GridSearchCV pour régler certains paramètres pour la régression par exemple, je m`attendrais à ce que les scores s`agrandisse pour un plus grand nombre de plis, car de plus en plus de données sont incluses dans la formation. Cependant, j`ai observé le comportement opposé. Quelqu`un pourrait-il m`expliquer, si cela devrait être prévu? Je ne pense pas que quelqu`un a vraiment répondu à la première question. Par “validation croisée imbriquée” je pense qu`il voulait dire le combiner avec GridSearch. Généralement GridSearch a CV intégré et prend un paramètre sur le nombre de plis que nous souhaitons tester. Combinant ces deux je pense que c`est une bonne pratique, mais le modèle de GridSearch et CrossValidation n`est pas votre modèle final. Vous devez choisir les meilleurs paramètres et former un nouveau modèle avec toutes vos données éventuellement, ou même faire une CrossValidation ici aussi sur les données invisibles et puis si le modèle est vraiment que bon vous le former sur toutes vos données. C`est votre modèle final.
Par conséquent, au lieu de sélectionner aléatoirement les valeurs des paramètres, une meilleure approche consisterait à développer un algorithme qui trouve automatiquement les meilleurs paramètres pour un modèle particulier. Grid Search est un algorithme de ce type. Une fois que la classe GridSearchCV est initialisée, la dernière étape consiste à appeler la méthode d`ajustement de la classe et à lui passer l`instruction et le jeu de tests, comme illustré dans le code suivant: deux boucles de validation croisée sont exécutées en parallèle: une par l`estimateur GridSearchCV pour définir gamma et l`autre par cross_val_score pour mesurer la performance de prédiction de l`estimateur. Les résultats obtenus sont des estimations non biaisées du score de prédiction sur les nouvelles données. L`estimateur réajusté est mis à disposition à l`attribut best_estimator_ et permet l`utilisation de prédire directement sur cette instance GridSearchCV. Par défaut, le GridSearchCV utilise une validation croisée de 3 fois. Cependant, s`il détecte qu`un classificateur est passé, plutôt qu`un régresseur, il utilise un 3-Fold stratifié. La valeur par défaut changera en une validation croisée de 5 fois dans la version 0,22. J`ai des problèmes de compréhension de l`effet du paramètre CV dans GridSearchCV. Je suis toujours sur Python 2,7 avec sklearn 0,18 Scikit-Learn fournit des outils automatisés pour ce faire dans le module de recherche de grille.