Validation croisée dans Weka

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

Dans K-fold cross-validation, l'échantillon d'origine est aléatoire partitionné en k sous-échantillons. Des k sous-échantillons, un seul sous-échantillon est conservé comme données de validation pour tester le modèle, et les sous - échantillons k-1 restants sont utilisés comme données d'entraînement. Le le processus de validation croisée est ensuite répété k fois (les plis), avec chacun des k sous-échantillons utilisés exactement une fois l' les données de validation. Le k les résultats des plis peuvent alors être moyennés (ou autrement combinés) pour produire une estimation unique

Donc, les modèles k sont construits et le dernier est la moyenne de ceux-ci. Dans le guide Weka 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 pli est créé, puis chaque pli est évalué et les résultats de sortie finaux sont simplement la moyenne résultat de plis?

26
demandé sur Mr_and_Mrs_D 2012-05-03 22:57:20

4 réponses

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

Utiliser le jeu d'entraînement

  • 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 la performance de la Classificateur (appliqué aux mêmes 100 données à partir desquelles il était développé)

Utiliser 10 fois le 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 2 à 10 et produit plus de 9 classificateurs

  • Il fait la moyenne des performances des classificateurs 10 produits à partir de 10 jeux de taille égale (90 entraînements et 10 tests)

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

47
répondu Rushdi Shams 2012-05-12 19:44:24

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

En plus de la réponse acceptée de Rushdi, je tiens à souligner que les modèles créés pour les ensembles de pli 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. Puisque M-T-A demandait une mise à jour du lien cité, ici il est: http://list.waikato.ac.nz/pipermail/wekalist/2009-December/046633.html . c'est une réponse de L'un des responsables de WEKA, soulignant exactement ce que j'ai écrit.

8
répondu Hein Blöd 2014-01-17 12:28:56

Je pense que j'ai compris. Prenez (par 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. C'est le modèle qui est écrit à outmodel.xxx. Ce modèle est pas utilisé dans le cadre de la validation croisée.
  2. alors la validation croisée est exécutée. la validation croisée implique la création (dans ce cas) de 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 temporaire et utilisé uniquement pour générer des statistiques. Ils ne sont pas équivalents, ou utilisés pour le modèle qui est donné à l'utilisateur.
5
répondu cwins 2012-09-21 22:38:12

Weka suit la validation conventionnelle de la Croix k-fold que vous avez mentionnée ici. Vous avez l'ensemble de données complet, puis divisez-le en K nos d'ensembles égaux (k1, k2, ... , k10 par exemple pour 10 fois CV) sans chevauchements. Ensuite, lors de la première course, 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 la performance. De cette façon, utilisez tous les plis où chaque pli à plus 1 temps est utilisé comme test ensemble.

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

1
répondu Rushdi Shams 2012-05-04 00:02:03