Vidéo: CROSS-VALIDATION SKLEARN PYTHON (Techniques expliquées en Français) 2024
La validation d'une hypothèse d'apprentissage automatique permet une optimisation plus poussée de l'algorithme choisi. L'algorithme fournit la plupart des performances prédictives sur vos données, étant donné sa capacité à détecter des signaux à partir de données et à s'adapter à la forme fonctionnelle réelle de la fonction prédictive sans surapprentissage et générant beaucoup de variance des estimations. Tous les algorithmes d'apprentissage automatique ne conviennent pas forcément à vos données, et aucun algorithme ne peut convenir à tous les problèmes. C'est à vous de trouver le bon pour un problème spécifique.
Une deuxième source de performance prédictive est la donnée elle-même lorsqu'elle est transformée et sélectionnée de manière appropriée pour améliorer les capacités d'apprentissage de l'algorithme choisi.
La dernière source de performance découle de la mise au point des hyper-paramètres de l'algorithme, qui sont les paramètres que vous décidez avant l'apprentissage et qui ne sont pas appris des données. Leur rôle est de définir a priori une hypothèse, alors que d'autres paramètres la spécifient a posteriori, après interaction de l'algorithme avec les données et, en utilisant un processus d'optimisation, trouve certaines valeurs de paramètres travailler mieux pour obtenir de bonnes prédictions.
Tous les algorithmes d'apprentissage automatique ne nécessitent pas beaucoup d'optimisation des hyper paramètres, mais certains des plus complexes le font, et bien que de tels algorithmes fonctionnent encore hors de la boîte, tirer les bons leviers peut faire une grande différence dans l'exactitude des prédictions. Même lorsque les hyper-paramètres ne sont pas appris à partir des données, vous devez considérer les données sur lesquelles vous travaillez pour déterminer les hyper-paramètres, et vous devez faire le choix basé sur la validation croisée et l'évaluation soigneuse des possibilités.
Les algorithmes complexes d'apprentissage automatique, les plus exposés à la variance des estimations, présentent de nombreux choix exprimés dans un grand nombre de paramètres. Les bidouiller avec eux les fait s'adapter plus ou moins aux données qu'ils apprennent. Parfois, trop de twittling hyper-paramètre peut même rendre l'algorithme détecter de faux signaux à partir des données. Cela fait des hyper-paramètres eux-mêmes une source de variance non détectée si vous commencez à les manipuler trop en fonction d'une référence fixe comme un ensemble de tests ou un schéma de validation croisée répété.
R et Python offrent des fonctionnalités de découpage qui découpent votre matrice d'entrée en parties de train, de test et de validation. En particulier, pour les procédures de test plus complexes, telles que la validation croisée ou l'amorçage, le package Scikit-learn offre un module complet et R un package spécialisé, offrant des fonctions de fractionnement, de prétraitement et de test des données.Ce paquet est appelé caret.
Les combinaisons possibles de valeurs que les hyper-paramètres peuvent former déterminent où rechercher les optimisations. Comme décrit lors de la discussion sur la descente de gradient, un espace d'optimisation peut contenir des combinaisons de valeurs qui fonctionnent mieux ou moins bien. Même après avoir trouvé une bonne combinaison, vous n'êtes pas assuré que c'est la meilleure option. (C'est le problème de rester coincé dans les minima locaux en minimisant l'erreur.)
Comme moyen pratique de résoudre ce problème, la meilleure façon de vérifier les hyper-paramètres pour un algorithme appliqué à des données spécifiques est de les tester tous validation croisée, et de choisir la meilleure combinaison. Cette approche simple, appelée grid-search, offre des avantages indiscutables en vous permettant d'échantillonner la gamme des valeurs possibles à entrer systématiquement dans l'algorithme et de repérer quand le minimum général se produit.
D'un autre côté, la recherche de grille présente également de sérieux inconvénients car elle nécessite beaucoup de calculs (vous pouvez facilement effectuer cette tâche en parallèle sur des ordinateurs multicœurs modernes) et prend beaucoup de temps. De plus, des tests systématiques et intensifs augmentent la possibilité d'erreurs, car certains résultats de validation bons mais faux peuvent être causés par le bruit présent dans l'ensemble de données.
Certaines alternatives à la recherche de grille sont disponibles. Au lieu de tout tester, vous pouvez essayer d'explorer l'espace des valeurs possibles d'hyper-paramètres guidées par des techniques d'optimisation non linéaires lourdes et mathématiquement complexes (comme la méthode Nelder-Mead), en utilisant une approche bayésienne (où le nombre de tests est minimisé). avantage des résultats précédents) ou en utilisant la recherche aléatoire.
Étonnamment, la recherche aléatoire fonctionne incroyablement bien, est simple à comprendre et ne se fonde pas uniquement sur la chance aveugle, bien qu'elle puisse sembler au premier abord l'être. En fait, le point principal de la technique est que si vous choisissez suffisamment de tests aléatoires, vous avez réellement assez de possibilités pour repérer les bons paramètres sans gaspiller d'énergie en testant des combinaisons légèrement différentes de combinaisons similaires.
La représentation graphique ci-dessous explique pourquoi la recherche aléatoire fonctionne correctement. Une exploration systématique, bien qu'utile, tend à tester chaque combinaison, ce qui se transforme en gaspillage d'énergie si certains paramètres n'influencent pas le résultat. Une recherche aléatoire teste en fait moins de combinaisons mais plus dans la gamme de chaque hyper-paramètre, une stratégie qui s'avère gagnante si, comme cela arrive souvent, certains paramètres sont plus importants que d'autres.
Comparaison de la recherche de grille à la recherche aléatoire.Pour que la recherche aléatoire fonctionne bien, vous devez effectuer de 15 à 60 tests maximum. Il est logique de recourir à la recherche aléatoire si une recherche de grille nécessite un plus grand nombre d'expériences.