Je ne suis pas sûr de ce que vous voulez faire à l'étape 7a. Si je comprends bien, cela n’a aucun sens pour moi.
Voici comment je comprends votre description: à l’étape 7, vous souhaitez comparer les performances de maintien avec les résultats d’une validation croisée englobant les étapes 4 à 6. (Donc, oui, ce serait une configuration imbriquée).
Les points principaux pour lesquels je ne pense pas que cette comparaison ait beaucoup de sens sont:
Cette comparaison ne permet pas de détecter deux des principales sources de résultats de validation trop optimistes que je rencontre dans la pratique:
fuites de données (dépendance) entre les données d'apprentissage et de test causées par une structure de données hiérarchique (ou clusterisée) et non prises en compte dans le fractionnement. Dans mon domaine, nous avons généralement plusieurs lectures (parfois des milliers) de lectures (= rangées dans la matrice de données) d'un même patient ou d'une réplique biologique d'une expérience. Celles-ci ne sont pas indépendantes, le fractionnement de validation doit donc être effectué au niveau du patient. Cependant, une telle fuite de données se produit. Vous la retrouverez à la fois dans le fractionnement pour l'ensemble de conservation et dans le fractionnement par validation croisée. Les procédures en suspens seraient alors aussi biaisées avec optimisme que la validation croisée.
Le prétraitement des données est effectué sur l’ensemble de la matrice de données, où les calculs ne sont pas indépendants pour chaque ligne, mais plusieurs / toutes les lignes sont utilisées pour calculer les paramètres de prétraitement. Des exemples typiques seraient par exemple une projection PCA avant la classification "réelle".
Encore une fois, cela affecterait à la fois votre attente et la validation croisée externe, de sorte que vous ne pouvez pas le détecter.
Pour les données avec lesquelles je travaille, les deux erreurs peuvent facilement sous-estimer la fraction d'erreurs de classification d'un ordre de grandeur!
Si vous êtes limité à cette fraction comptée de types de performances de test, les comparaisons de modèles nécessitent soit un nombre extrêmement important de tests, soit des différences ridiculement grandes en performances réelles. La comparaison de 2 classificateurs avec des données d’entraînement illimitées peut être un bon début de lecture.
Cependant, comparer la qualité du modèle entre les affirmations de validation croisée interne pour le modèle "optimal" et la validation croisée externe ou la validation différée est logique: si l'écart est élevé, il est douteux que l'optimisation de votre recherche dans la grille fonctionne (vous pourriez avoir écrémé en raison de la variance élevée de la mesure de performance). Cette comparaison est plus facile en ce sens que vous pouvez repérer les problèmes si votre estimation interne est ridiculement bonne par rapport à l’autre - si ce n’est pas le cas, vous n'avez pas à vous soucier de votre optimisation. Mais dans tous les cas, si votre mesure externe (7) de la performance est honnête et correcte, vous avez au moins une estimation utile du modèle obtenu, qu’il soit optimal ou non.
IMHO mesurer la courbe d'apprentissage est encore un problème différent. Je traiterais probablement cela séparément, et je pense que vous devez définir plus clairement ce dont vous avez besoin de la courbe d'apprentissage (avez-vous besoin de la courbe d'apprentissage pour un ensemble de données du problème donné, des données et de la méthode de classification ou de la courbe d'apprentissage pour cet ensemble de données du problème donné, des données et de la méthode de classification), ainsi que pour un ensemble de décisions ultérieures (par exemple, comment gérer la complexité du modèle en fonction de la taille de l'échantillon d'apprentissage? Optimiser à nouveau, utiliser des hyperparamètres fixes, décider fonction permettant de corriger les hyperparamètres en fonction de la taille du jeu d’entraînement?)
(Mes données ont généralement si peu de cas indépendants pour obtenir la mesure de la courbe d'apprentissage suffisamment précise pour pouvoir l'utiliser, mais vous pouvez peut-être faire mieux si vos 1200 lignes sont réellement indépendantes)
update: Qu'est-ce qui ne va pas avec l'exemple scikit-learn?
Tout d’abord, la validation croisée imbriquée ici n’est pas un problème. La validation imbriquée est de la plus haute importance pour l’optimisation pilotée par les données, et la validation croisée est une approche très puissante (en particulier si elle est itérée / répétée).
Ensuite, si quelque chose ne va pas du tout, cela dépend de votre point de vue: tant que vous effectuez une validation imbriquée honnête (en gardant les données de test externes strictement indépendantes), la validation externe est une mesure appropriée des performances du modèle "optimal". Aucun problème avec ça.
Cependant, plusieurs problèmes peuvent survenir avec la recherche sur grille de ces mesures de performance de type proportionnelle pour le réglage hyperparamètre de SVM. En gros, cela signifie que vous ne pouvez (probablement?) Pas compter sur l'optimisation. Néanmoins, tant que votre scission externe a été effectuée correctement, même si le modèle n’est pas le meilleur possible, vous disposez d’une estimation honnête des performances du modèle que vous avez obtenu.
Je vais essayer d'expliquer de manière intuitive pourquoi l'optimisation risque de poser problème:
Sur le plan mathématique et statistique, le problème des proportions est que les proportions mesurées sont soumises à une variance énorme en raison de la taille de l'échantillon de test fini ((qui dépend également de la performance réelle du modèle, ):p^np
Var(p^)=p(1−p)n
Vous avez besoin d'un nombre ridiculement énorme de cas (au moins par rapport au nombre de cas que je peux généralement avoir) afin d'obtenir la précision nécessaire (sens du biais / variance) pour estimer le rappel, la précision (sens du rendement de l'apprentissage automatique). Ceci s'applique bien sûr aussi aux ratios que vous calculez à partir de telles proportions. Consultez les intervalles de confiance pour les proportions binomiales. Ils sont incroyablement grands! Souvent plus importante que la véritable amélioration des performances sur la grille de l'hyperparamètre. Et statistiquement, la recherche sur la grille est un problème de comparaison multiple énorme: plus vous évaluez de points de la grille, plus le risque de trouver une combinaison d'hyperparamètres qui par hasard est très bon pour la fraction train / test que vous évaluez. C'est ce que je veux dire par écrémage.
Intuitivement, considérons un changement hypothétique d'un hyperparamètre, qui entraîne lentement la détérioration du modèle: un cas de test se déplace vers la limite de décision. Les mesures de performance de la proportion «dure» ne détectent pas cela jusqu'à ce que le cas traverse la frontière et soit du mauvais côté. Ensuite, cependant, ils attribuent immédiatement une erreur complète pour un changement infiniment petit de l'hyperparamètre.
Afin de faire de l'optimisation numérique, vous avez besoin que la mesure de performance se comporte bien. Cela signifie que ni la partie saccadée (non continuellement différenciable) de la mesure de performance de type proportionnelle ni le fait que, mis à part ce saut, les modifications en cours ne sont pas détectées ne conviennent pas à l'optimisation.
Les règles de scoring appropriées sont définies de manière particulièrement appropriée pour l'optimisation. Ils ont leur maximum global lorsque les probabilités prédites correspondent aux probabilités réelles d'appartenance de chaque cas à la classe en question.
Pour les SVM, vous avez le problème supplémentaire que non seulement les mesures de performance, mais également le modèle réagissent de cette manière instable: de petits changements de l'hyperparamètre ne changeront rien. Le modèle change uniquement lorsque les hyperparamètres le sont suffisamment pour que certains cas cessent d'être des vecteurs de support ou deviennent des vecteurs de support. Encore une fois, ces modèles sont difficiles à optimiser.
Littérature:
- Brown, L .; Cai, T. & DasGupta, A .: Estimation d'intervalle pour une proportion binomiale, Statistical Science, 16, 101-133 (2001).
- Cawley, GC & Talbot, NLC: Sur-adaptation dans la sélection du modèle et biais de sélection ultérieurs dans l'évaluation de la performance, Journal of Machine Learning Research, 11, 2079-2107 (2010).
Gneiting, T. & Raftery, AE: Règles de notation strictement strictes, prévision et estimation, Journal de l'American Statistical Association, 102, 359-378 (2007). DOI: 10.1198 / 016214506000001437
Brereton, R .: Chimiométrie pour la reconnaissance de formes, Wiley, (2009).
souligne le comportement instable du SVM en fonction des hyperparamètres.
Mise à jour II: Variance d'écrémage
Ce que vous pouvez vous permettre en termes de comparaison de modèles dépend évidemment du nombre de cas indépendants. Faisons une simulation rapide et approximative sur le risque d'écrémage de la variance ici:
scikit.learn
dit qu'ils ont 1797 sont dans les digits
données.
- supposons que 100 modèles soient comparés, par exemple une grille pour 2 paramètres.10×10
- supposons que les deux paramètres (plages) n’affectent pas du tout les modèles,
c'est-à-dire que tous les modèles ont la même performance réelle, disons 97% (performance typique de l' digits
ensemble de données).
Exécutez simulations de "test de ces modèles" avec une taille d'échantillon = 1797 lignes dans le jeu de données104digits
p.true = 0.97 # hypothetical true performance for all models
n.models = 100 # 10 x 10 grid
n.rows = 1797 # rows in scikit digits data
sim.test <- replicate (expr= rbinom (n= nmodels, size= n.rows, prob= p.true),
n = 1e4)
sim.test <- colMaxs (sim.test) # take best model
hist (sim.test / n.rows,
breaks = (round (p.true * n.rows) : n.rows) / n.rows + 1 / 2 / n.rows,
col = "black", main = 'Distribution max. observed performance',
xlab = "max. observed performance", ylab = "n runs")
abline (v = p.outer, col = "red")
Voici la distribution pour la meilleure performance observée:
La ligne rouge marque la véritable performance de tous nos modèles hypothétiques. En moyenne, nous n'observons que les 2/3 du taux d'erreur réel pour le meilleur des 100 modèles comparés (pour la simulation, nous savons qu'ils fonctionnent tous de la même manière, avec des prévisions correctes à 97%).
Cette simulation est évidemment très simplifiée:
- En plus de la variance de la taille de l'échantillon testé, il existe au moins une variance due à l'instabilité du modèle. Nous sous-estimons donc la variance ici.
- Le réglage des paramètres affectant la complexité du modèle couvrira généralement les jeux de paramètres dans lesquels les modèles sont instables et présentent donc une variance élevée.
- Pour les chiffres UCI de l'exemple, la base de données d'origine a env. 11000 chiffres écrits par 44 personnes. Que se passe-t-il si les données sont regroupées en fonction de la personne qui a écrit? (Par exemple, est-il plus facile de reconnaître un 8 écrit par une personne si vous savez comment cette personne écrit, par exemple un 3?) La taille de l'échantillon effectif peut alors être aussi faible que 44.
- Le réglage des hyperparamètres des modèles peut conduire à une corrélation entre les modèles (en fait, cela serait considéré comme se comportant bien du point de vue de l'optimisation numérique). Il est difficile de prédire l’influence de cela (et je suppose que cela est impossible sans prendre en compte le type de classificateur réel).
En général, cependant, le faible nombre de cas de test indépendants et le nombre élevé de modèles comparés augmentent le biais. En outre, l'article de Cawley et Talbot donne un comportement observé empirique.