2012-05-03 14 views
24

ich immer von gedacht habe, was ich gelesen, dass Kreuzvalidierung wie folgt durchgeführt:Kreuzvalidierung in Weka

In k-fache Kreuzvalidierung, ist die ursprüngliche Probe zufällig in k Teilproben aufgeteilt. Von den k Teilproben wird eine einzige Teilstichprobe als Validierungsdaten zum Testen des Modells beibehalten, und die verbleibenden k - 1 Teilproben werden als Trainingsdaten verwendet. Der Kreuzvalidierungsprozess wird dann k mal wiederholt (die Falten), wobei jede der k Teilproben genau einmal als Validierungsdaten verwendet wird. Die k ergibt sich aus den Faltungen können dann gemittelt werden (oder anderweitig kombinierte)

eine einzige Schätzung

So k Modelle gebaut werden und die letzte ist die durchschnittliche derer herzustellen. In Weka wird geschrieben, dass jedes Modell immer mit ALLEN Datensätzen erstellt wird. Wie funktioniert die Kreuzvalidierung in Weka? Wird das Modell aus allen Daten erstellt und bedeutet die "Kreuzvalidierung", dass k falte erstellt wird, dann wird jede Falte auf ihr ausgewertet und das endgültige Ausgabeergebnis ist einfach das gemittelte Ergebnis aus Falten?

Antwort

44

So, hier ist das Szenario noch einmal: Sie 100 markierten Daten

verwenden Trainingssatz

  • weka nehmen 100 markierten Daten
  • es einen Algorithmus anwenden wird einen Klassifikator bauen aus diesen 100 Daten
  • gilt es, dass Klassifikator wieder auf diese 100 Daten
  • es gilt bietet Ihnen die Leistung des Sichter (auf die gleichen 100-Daten angewendet, von dem es war entwickelt)

Verwendung 10-fach CV

  • Weka nimmt 100 markierten Daten

  • es produziert 10 gleich große Sätze. Jeder Satz ist in zwei Gruppen unterteilt: 90 markierte Daten werden für das Training verwendet und 10 markierte Daten werden zum Testen verwendet.

  • Es erzeugt einen Klassifikator mit einem Algorithmus aus 90 beschrifteten Daten und wendet diesen auf die 10 Testdaten für Gruppe 1 an.

  • Es tut dasselbe für Set 2 bis 10 und produziert 9 weitere Klassifikatoren

  • es mittelt die Leistung der 10 Klassifizierer 10 gleich große (90 Ausbildung und 10 Tests) hergestellt setzt

Lassen Sie mich wissen, ob das Ihre Frage beantwortet.

+1

Ich habe 2 Fragen: 1) Wenn es wie du sagtest, warum in Weka Guide geschrieben wird, dass in jedem Fall (Trainingssatz und Lebenslauf) das Modell immer aus allen Daten aufgebaut wird? Wie Sie in CV geschrieben haben, ist das endgültige Modell ein Durchschnitt von anderen 10 Modellen, richtig?2) Wenn "Das Modell, das Sie an diesem Punkt erhalten, der Durchschnitt aller 10 Modelle ist", wie ist es möglich, dass ich das Trainingssatz und den Lebenslauf als Validierung benutze, habe ich dieselben Modelle? (Hoffe, diese Fragen erscheinen nicht zu albern!) –

+0

1. Dies bedeutet für jede Falte vollen Datensatz berücksichtigt. Es gibt einige Variationen dieser Standard-CV, bei denen ein Teil der Datensätze für einen separaten Test ausgegeben wird. 2. Was genau meinst du mit "gleiche Modelle bekommen"? –

+0

Für "gleiche Modelle" meine ich, dass in der Ausgabe habe ich genau den gleichen Baum –

1

Weka folgt der konventionellen k-fachen Kreuzvalidierung, die Sie hier erwähnt haben. Sie haben den vollständigen Datensatz und teilen ihn dann in k nos mit gleichen Mengen (k1, k2, ..., k10 zum Beispiel für den 10-fachen CV) ohne Überlappungen. Dann nimm beim ersten Lauf k1 bis k9 als Trainingssatz und entwickle ein Modell. Verwenden Sie dieses Modell auf K10, um die Leistung zu erhalten. Als nächstes kommen k1 bis k8 und k10 als Trainingssatz. Entwickeln Sie ein Modell von ihnen und wenden Sie es auf k9 an, um die Leistung zu erhalten. Verwenden Sie auf diese Weise alle Falten, bei denen jede Faltung höchstens einmal als Testmenge verwendet wird.

Dann Weka mittelt die Leistungen und präsentiert das auf dem Ausgabefenster.

+2

Ok, aber auf diese Weise wie ist das endgültige Modell gebaut? Ist ein Durchschnitt der 10 Modelle auf CV aufgebaut? Wenn ja, was bedeutet: wird immer mit ALLEN Datensätzen aufgebaut? –

+0

Wenn Sie im Weka-Explorer auf der Registerkarte Klassifizieren die 10-fache Kreuzvalidierung auswählen, ist das Modell dasjenige, das Sie mit 10 9-1-Splits erhalten. Sie werden nicht 10 einzelne Modelle, sondern 1 einzelnes Modell haben. Und ja, Sie bekommen das von Weka (nicht besonders Weka, es gilt für die allgemeine 10-fache CV-Theorie), da es den gesamten Datensatz durchläuft. –

+0

Es tut mir leid, aber ich kann überhaupt nicht verstehen ... Also, was ist der Unterschied zwischen wählen "Use Training Set" und "Cross Validation" in Bezug auf wie das Modell? Das endgültige Modell ist das gleiche! –

5

Ich denke, ich habe es herausgefunden. Nehmen Sie zum Beispiel weka.classifiers.rules.OneR -x 10 -d outmodel.xxx. Dies macht zwei Dinge:

  1. Es erstellt ein Modell auf der Grundlage der vollständigen Datenmenge. Dies ist das Modell, das in outmodel.xxx geschrieben wird. Dieses Modell ist nicht im Rahmen der Kreuzvalidierung verwendet.
  2. Dann wird Kreuzvalidierung ausgeführt. Bei der Kreuzvalidierung werden (in diesem Fall) 10 neue Modelle mit dem Training und dem Testen von Segmenten der Daten, wie beschrieben, erstellt. Der Schlüssel ist, dass die in der Kreuzvalidierung verwendeten Modelle nur temporär sind und nur zur Erstellung von Statistiken verwendet werden. Sie sind nicht äquivalent zu oder werden für das Modell verwendet, das dem Benutzer gegeben wird.
+1

Aber was ist der Zweck der Kreuzvalidierung? Wenn das endgültige Modell, das dem Benutzer gegeben wird, auf einem vollständigen Datensatz basiert, warum brauchen wir eine Kreuzvalidierung? Ich denke, Cross-Validierung ist das beste Modell zu finden – lenhhoxung

6

ich in einem Kommentar geantwortet hätte, aber mein Ruf erlaubt mir noch nicht zu:

Neben akzeptierte Antwort des Rushdi, möchte ich, dass die Modelle betonen, die für die Kreuzvalidierung geschaffen Faltungssätze werden alle verworfen, nachdem die Leistungsmessungen durchgeführt und gemittelt wurden.

Das resultierende Modell ist immer basierend auf dem vollständigen Trainingssatz, unabhängig von Ihren Testoptionen. Da M-T-A nach einer Aktualisierung des zitierten Links gefragt hat, ist es hier: http://list.waikato.ac.nz/pipermail/wekalist/2009-December/046633.html. Es ist eine Antwort von einem der WEKA-Betreuer, die genau darauf hinweisen, was ich geschrieben habe.

+0

Wissen Sie, ob es eine Möglichkeit gibt, die Modelle für die Kreuzvalidierung zu sehen? – drevicko

+0

ja: siehe Beiträge auf der Weka-Mailingliste [hier] (http://list.waikato.ac.nz/pipermail/wekalist/2015-July/064572.html) und [hier] (http: //list.waikato .ac.nz/pipermail/wekalist/2011-November/053965.html) – drevicko

+2

Aber was ist der Zweck der Kreuzvalidierung? Wenn das endgültige Modell, das dem Benutzer gegeben wird, auf einem vollständigen Datensatz basiert, warum brauchen wir eine Kreuzvalidierung? Ich denke, Kreuzvalidierung ist das beste Modell zu finden – lenhhoxung