web-dev-qa-db-fra.com

Validation croisée à Weka

J'ai toujours pensé, d'après ce que j'ai lu, que la validation croisée est effectuée comme ceci:

Dans la validation croisée k fois, l'échantillon d'origine est divisé de façon aléatoire en k sous-échantillons. Parmi les k sous-échantillons, un seul sous-échantillon est conservé comme données de validation pour tester le modèle, et les k-1 sous-échantillons restants sont utilisés comme données d'apprentissage. Le processus de validation croisée est ensuite répété k fois (les plis), chacun des k sous-échantillons étant utilisé exactement une fois comme données de validation. Les k résultats des plis peuvent ensuite être moyennés (ou autrement combinés) pour produire une estimation unique

Donc, k modèles sont construits et le dernier est la moyenne de ceux-ci. Dans le guide Weka, il est écrit que chaque modèle est toujours construit en utilisant TOUS les ensembles de données. Alors, comment fonctionne la validation croisée dans Weka? Le modèle est-il construit à partir de toutes les données et la "validation croisée" signifie que k plis sont créés, puis chaque pli est évalué dessus et le résultat final est simplement le résultat moyen des plis?

26
Titus Pullo

Alors, voici à nouveau le scénario: vous avez 100 données étiquetées

tiliser l'ensemble de formation

  • weka prendra 100 données étiquetées
  • il appliquera un algorithme pour construire un classificateur à partir de ces 100 données
  • il applique à nouveau ce classificateur sur ces 100 données
  • il vous fournit les performances du classificateur (appliqué aux 100 mêmes données à partir desquelles il a été développé)

tilisez 10 CV

  • Weka prend 100 données étiquetées

  • il produit 10 ensembles de taille égale. Chaque ensemble est divisé en deux groupes: 90 données étiquetées sont utilisées pour la formation et 10 données étiquetées sont utilisées pour les tests.

  • il produit un classificateur avec un algorithme à partir de 90 données étiquetées et l'applique sur les 10 données de test pour l'ensemble 1.

  • Il fait la même chose pour les ensembles 2 à 10 et produit 9 classificateurs supplémentaires

  • il fait la moyenne des performances des 10 classificateurs produits à partir de 10 ensembles de taille égale (90 formations et 10 tests)

Faites-moi savoir si cela répond à votre question.

50
Rushdi Shams

J'aurais répondu dans un commentaire mais ma réputation ne me permet toujours pas:

En plus de la réponse acceptée de Rushdi, je tiens à souligner que les modèles créés pour les jeux de plis de validation croisée sont tous rejetés après que les mesures de performance ont été effectuées et moyennées.

Le modèle résultant est toujours basé sur l'ensemble d'entraînement complet, quelles que soient vos options de test. Étant donné que MTA demandait une mise à jour du lien cité, la voici: https://web.archive.org/web/20170519110106/http://list.waikato.ac.nz/pipermail/wekalist/ 2009-décembre/046633.html / . C'est une réponse de l'un des responsables de la WEKA, soulignant exactement ce que j'ai écrit.

9
Hein Blöd

Je pense que je l'ai compris. Prends pour exemple) weka.classifiers.rules.OneR -x 10 -d outmodel.xxx. Cela fait deux choses:

  1. Il crée un modèle basé sur l'ensemble de données complet. Il s'agit du modèle écrit dans outmodel.xxx. Ce modèle est pas utilisé dans le cadre de la validation croisée.
  2. Ensuite la validation croisée est exécutée. la validation croisée consiste à créer (dans ce cas) 10 nouveaux modèles avec la formation et les tests sur des segments des données comme cela a été décrit. La clé est que les modèles utilisés dans la validation croisée sont temporaires et ne sont utilisés que pour générer des statistiques. Ils ne sont pas équivalents ou utilisés pour le modèle donné à l'utilisateur.
5
cwins

Weka suit la validation croisée k-fold conventionnelle que vous avez mentionnée ici. Vous avez l'ensemble de données complet, puis le divisez en k ns d'ensembles égaux (k1, k2, ..., k10 par exemple pour un CV 10 fois) sans chevauchements. Ensuite, lors de la première manche, prenez k1 à k9 comme ensemble d'entraînement et développez un modèle. Utilisez ce modèle sur k10 pour obtenir les performances. Vient ensuite k1 à k8 et k10 comme ensemble d'entraînement. Développez un modèle à partir d'eux et appliquez-le à k9 pour obtenir les performances. De cette façon, utilisez tous les plis où chaque pli au plus 1 fois est utilisé comme ensemble de test.

Ensuite, Weka fait la moyenne des performances et la présente dans le volet de sortie.

1
Rushdi Shams

une fois que nous avons effectué la validation croisée 10 en divisant les données en 10 segments et en créant un arbre de décision et en l'évaluant, Weka exécute l'algorithme une onzième fois sur l'ensemble de données. Cela produira alors un classificateur que nous pourrions déployer en pratique. Nous utilisons la validation croisée 10 fois afin d'obtenir un résultat d'évaluation et une estimation de l'erreur, puis nous effectuons une dernière fois la classification pour obtenir un classificateur réel à utiliser dans la pratique. Pendant la kième validation croisée, nous aurons un arbre de décision différent mais le dernier est créé sur des ensembles de données entiers. CV est utilisé pour voir si nous avons un problème de sur-ajustement ou de grande variance.

0
Mahaveer Jain