Comment choisir un classifieur après validation croisée?


13

Lorsque nous effectuons une validation croisée k, devons-nous simplement utiliser le classificateur qui a la plus haute précision de test? Quelle est généralement la meilleure approche pour obtenir un classifieur à partir d'une validation croisée?


Je pense que cette question dépend beaucoup de la métrique utilisée pour déterminer la "meilleure approche". Beaucoup de gens utilisent la précision, mais en fonction de l'ensemble de données, d'autres mesures peuvent être utilisées, comme une moyenne harmonique comme F1-Score. Le choix métrique peut donc être tout aussi important.
Nathan McCoy

@NathanMcCoy bien en supposant que nous choisissons la précision, nous choisirions le classificateur avec la plus haute précision de test?
Armon Safai

Sûr! J'essaie juste de mentionner quelque chose d'autre à penser :)
Nathan McCoy

Réponses:


15

Vous effectuez une validation croisée lorsque vous souhaitez effectuer l'une des deux opérations suivantes:

  • Sélection du modèle
  • Estimation d'erreur d'un modèle

La sélection des modèles peut se présenter dans différents scénarios:

  • Sélection d'un algorithme par rapport à d'autres pour un problème / ensemble de données particulier
  • Sélection d'hyper-paramètres d'un algorithme particulier pour un problème / ensemble de données particulier

(veuillez noter que si vous sélectionnez à la fois un algorithme - mieux vaut l'appeler modèle - et que vous effectuez également une recherche d'hyper-paramètres, vous devez effectuer la validation croisée imbriquée. Nested-CV est-il vraiment nécessaire? )

La validation croisée garantit dans une certaine mesure que l'estimation de l'erreur est la plus proche possible en tant qu'erreur de généralisation pour ce modèle (bien que cela soit très difficile à estimer). Lorsque vous observez l'erreur moyenne parmi les plis, vous pouvez avoir une bonne projection de l'erreur attendue pour un modèle basé sur l'ensemble de données complet. Il est également important d'observer la variance de la prédiction, c'est-à-dire combien l'erreur varie d'un pli à l'autre. Si la variation est trop élevée (valeurs considérablement différentes), le modèle aura tendance à être instable. L'amorçage est l'autre méthode fournissant une bonne approximation dans ce sens. Je suggère de lire attentivement la section 7 sur le livre "Elements of Statistical Learning", disponible gratuitement sur: ELS-Standford

Comme cela a été mentionné précédemment, vous ne devez pas prendre le modèle construit dans aucun des plis. Au lieu de cela, vous devez reconstruire le modèle avec l'ensemble de données complet (celui qui a été divisé en plis). Si vous avez un ensemble de tests séparé, vous pouvez l'utiliser pour essayer ce modèle final, obtenant une erreur similaire (et doit sûrement plus élevée) que celle obtenue par CV. Vous devez cependant vous fier à l'erreur estimée donnée par la procédure CV.

Après avoir effectué un CV avec différents modèles (combinaison d'algorithmes, etc.), nous avons choisi celui qui fonctionnait le mieux en ce qui concerne l'erreur et sa variance entre les plis. Vous devrez reconstruire le modèle avec l'ensemble de données complet. Voici une confusion courante: nous nous référons communément à la sélection du modèle, pensant que le modèle est le modèle prêt à prédire construit sur des données, mais dans ce cas, il fait référence à la combinaison d'algorithme + de procédures de pré-traitement que vous appliquez. Donc, pour obtenir le modèle réel dont vous avez besoin pour faire des prédictions / classification, vous devez le construire en utilisant la combinaison gagnante sur l'ensemble de données.

La dernière chose à noter est que si vous appliquez tout type de prétraitement qui utilise les informations de classe (sélection de fonctionnalités, réduction de dimensionnalité LDA, etc.), cela doit être effectué dans chaque pli, et pas auparavant sur les données. Il s'agit d'un aspect critique. Devrait faire la même chose si vous appliquez des méthodes de prétraitement qui impliquent des informations directes sur les données (PCA, normalisation, standardisation, etc.). Vous pouvez cependant appliquer un prétraitement qui ne dépend pas des données (supprimer une variable après avis d'expert, mais cela est assez évident). Cette vidéo peut vous aider dans cette direction: CV dans le bon et le mauvais sens

Voici une dernière belle explication sur le sujet: CV et sélection du modèle


Je vois, avez-vous vraiment besoin d'avoir des données de test distinctes ou pouvez-vous simplement former votre classificateur sur 100% de toutes les données que vous avez depuis que nous avons déjà effectué une validation croisée et obtenu l'erreur de test approximative pour le modèle?
Armon Safai

+1 pour "a choisi celui qui a obtenu les meilleurs résultats en ce qui concerne l'erreur et sa variance entre les plis ". Tout le monde semble ignorer la variance entre les plis lors de la sélection des modèles.
stmax

Pourquoi devrais-je me soucier de l'erreur de test si seule l'erreur CV est ce qui m'importe? J'ai demandé parce que vous avez écrit "vraiment sur l'erreur estimée donnée par la procédure CV".
HelloWorld

Une autre question. Que se passe-t-il si le meilleur modèle de CV n'est pas le meilleur modèle lorsqu'il est construit pour l'ensemble de données entier?
HelloWorld

1
Vous construisez le modèle sur 100% des données, c'est-à-dire sur 100% des données utilisées pour la validation croisée. Si vous avez précédemment divisé les données originales sur 80% -20% pour la formation et les tests supplémentaires, vous effectuez un CV sur 80%, sélectionnez le modèle et réentraînez au total 80%. Avoir un ensemble de tests dans ce cas (20%) vous permet simplement de voir comment se comporte les nouvelles données invisibles (vous pouvez les considérer comme des données devenues disponibles à l'avenir), mais l'estimation de l'erreur que vous utilisez est celle de CV . Espérons que cela produira une erreur similaire avec de nouvelles données si c'est un bon modèle (que 20%, ou en fait de nouvelles données). @ArmonSafai
Javierfdr

8

Non. Vous ne sélectionnez aucun des classificateurs k créés lors de la validation croisée k-fold. Tout d'abord, l'objectif de la validation croisée n'est pas de proposer un modèle prédictif, mais d'évaluer la précision avec laquelle un modèle prédictif fonctionnera dans la pratique. Deuxièmement, pour les besoins de l'argument, disons que vous deviez utiliser la validation croisée k-fold avec k = 10 pour trouver lequel des trois algorithmes de classification différents serait le plus approprié pour résoudre un problème de classification donné. Dans ce cas, les données sont divisées au hasard en k parties de taille égale. Une des pièces est réservée aux tests et les autres pièces k-1 seront utilisées pour la formation. Le processus de validation croisée est répété k (fois) de sorte que, à chaque itération, une partie différente est utilisée pour les tests. Après avoir exécuté la validation croisée, vous examinez les résultats de chaque pli et vous vous demandez quel algorithme de classification (pas l'un des modèles formés!) Est le plus approprié. Vous ne voulez pas choisir l'algorithme qui a la précision de test la plus élevée sur l'une des 10 itérations, car peut-être est-il arrivé au hasard que les données de test sur cette itération particulière contenaient des exemples très simples, qui conduisent ensuite à une précision de test élevée. Ce que vous voulez faire, c'est choisir l'algorithme qui a produit la meilleure précision ce qui conduit ensuite à une grande précision de test. Ce que vous voulez faire, c'est choisir l'algorithme qui a produit la meilleure précision ce qui conduit ensuite à une grande précision de test. Ce que vous voulez faire, c'est choisir l'algorithme qui a produit la meilleure précisionmoyenne sur tous les k plis . Maintenant que vous avez choisi l'algorithme, vous pouvez le former à l'aide de toutes vos données d'entraînement et commencer à faire des prédictions dans la nature.

Cela dépasse le cadre de cette question, mais vous devez également optimiser les hyperparamètres du modèle (le cas échéant) pour tirer le meilleur parti de l'algorithme sélectionné. Les gens effectuent généralement une optimisation hyperparamétrique à l'aide de la validation croisée.


Je pensais que la validation croisée k-fold crée k modèles différents car il existe 10 ensembles différents de données d'entraînement.
Armon Safai

Découvrez ma réponse mise à jour. Je l'ai affiné pour aborder la question plus directement et pour mieux l'expliquer avec un exemple.
tuomastik

Je vois, donc quand vous entraînez enfin votre classificateur, utilisez-vous TOUTES vos données pour former le classificateur après avoir choisi votre algorithme de validation croisée
Armon Safai

Oui, si vous ne souhaitez pas effectuer d'analyse supplémentaire, telle que l'optimisation d'hyperparamètre, qui nécessite une validation croisée imbriquée où la boucle CV interne prend en charge le réglage d'hyperparamètre et la boucle CV externe évalue les performances du modèle sur un ensemble de données indépendant avec une optimisation optimale. hyperparamètres.
tuomastik

1

Supposons donc que vous avez une formation dont vous utilisez 80% comme formation et 20% comme données de validation. Nous pouvons nous entraîner sur les 80% et tester sur les 20% restants, mais il est possible que les 20% que nous avons pris ne soient pas en ressemblance avec les données de test réelles et puissent effectuer de mauvaises dernières. Donc, pour éviter cela, nous pouvons utiliser la validation croisée k-fold.

Alors, disons que vous avez différents modèles et que vous voulez savoir ce qui fonctionne mieux avec votre jeu de données, la validation croisée k-fold fonctionne très bien. Vous pouvez connaître les erreurs de validation sur les performances de k-validation et choisir le meilleur modèle en fonction de cela. C'est généralement le but de la validation croisée k-fold.

En venant à un seul modèle et si vous vérifiez avec la validation croisée k-fold, vous pouvez obtenir une approximation des erreurs de données de test, mais when you are actually training it finally, you can use the complete training data(car on suppose ici que l'ensemble des données fonctionnera mieux qu'une partie de celles-ci Ce n'est peut-être pas le cas parfois, mais c'est l'hypothèse générale.)


Alors, quand nous faisons la validation croisée, nous choisissons simplement le modèle qui a la plus grande précision de test?
Armon Safai

quand vous dites test, vous voulez dire le test du jeu de données de validation non?
Hima Varsha

oui c'est ce que je veux dire
Armon Safai

une fois que nous avons utilisé la validation croisée pour sélectionner le modèle le plus performant (par exemple, vous avez 2 modèles - régression linéaire ou réseau neuronal), nous formons ce modèle (que ce soit la régression linéaire ou le réseau neuronal) sur toutes les données
Hima Varsha

1
@HimaVarsha donc si nous décidons de prendre la moyenne, comment choisirions-nous le "classificateur moyen"?
Armon Safai
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.