Warum geschichtete Kreuzvalidierung verwenden? Warum schadet dies nicht der Varianz?


28

Mir wurde gesagt, dass es von Vorteil ist, eine geschichtete Kreuzvalidierung zu verwenden, insbesondere wenn die Antwortklassen nicht ausgeglichen sind. Wenn ein Zweck der Kreuzvalidierung darin besteht, die Zufälligkeit unserer ursprünglichen Trainingsdatenstichprobe zu berücksichtigen, würde es sicher dagegen wirken, wenn Sie für jede Falte die gleiche Klassenverteilung festlegen, es sei denn, Sie waren sicher, dass Ihr ursprünglicher Trainingssatz eine repräsentative Klassenverteilung aufweist.

Ist meine Logik fehlerhaft?

BEARBEITEN Mich interessiert, ob diese Methode das Gut des Lebenslaufs schädigt. Ich kann verstehen, warum es notwendig ist, wenn Sie eine kleine Stichprobe / sehr unausgeglichene Klassen / beides haben, um zu vermeiden, dass kein einziger Vertreter der Nebenklasse in einer Falte ist.

In der Arbeit Äpfel-zu-Äpfel in Kreuzvalidierungsstudien: Fallstricke bei der Leistungsmessung von Klassifikatoren wird die Argumentation für eine gute Schichtung dargelegt, aber alle Argumente scheinen zu lauten: "Schichtung bietet Sicherheit und mehr Konsistenz", aber es wäre keine Schutzmaßnahme erforderlich, wenn dies ausreicht Daten.

Ist die Antwort einfach "Wir verwenden es aus Notwendigkeit, da wir selten genug Daten haben." ?

Antworten:


18

Bootstrapping versucht, den Effekt der Entnahme einer neuen Probe aus der Grundgesamtheit zu simulieren, und versucht nicht, eindeutige Testsätze sicherzustellen (Rückstände nach N-aus-N-Probenahme mit Ersatz).

RxK-fach Kreuzvalidierung stellt K eindeutige Testfalten sicher, wird dann jedoch R-fach für verschiedene zufällige Partitionen wiederholt, damit die Unabhängigkeitsannahmen für K-CV gelten. Dies geht jedoch mit Wiederholung verloren.

Eine geschichtete Kreuzvalidierung verstößt gegen das Prinzip, dass die Testetiketten vor der Berechnung der Statistiken niemals hätte geprüft werden dürfen. Dies wird jedoch im Allgemeinen als harmlos angesehen, da der einzige Effekt darin besteht, die Falten auszugleichen, was jedoch zum Verlust der Vielfalt führt ( ein unerwünschter Varianzverlust). Es geht noch weiter weg von der Idee von Boostrap, eine Stichprobe zu konstruieren, die derjenigen ähnelt, die Sie auf natürliche Weise aus der gesamten Bevölkerung ziehen würden. Wahrscheinlich ist der Hauptgrund, warum die Schichtung wichtig ist, die Beseitigung von Fehlern in den Klassifizierungsalgorithmen, da diese zu leicht durch Über- oder Unterdarstellung von Klassen verzerrt werden. Ein Algorithmus, der Ausgleichstechniken verwendet (entweder durch Auswahl oder Gewichtung) oder ein zufallsrichtiges Maß (Kappa oder vorzugsweise Informiertheit) optimiert, ist davon weniger betroffen, obwohl selbst solche Algorithmen

Das Erzwingen von mindestens m Instanzen jeder Klasse für jedes kleine m ist eine Alternative zur Schichtung, die sowohl für Bootstrapping als auch für CV funktioniert. Es hat eine glättende Tendenz, die dazu führt, dass Falten ausgeglichener sind, als es sonst zu erwarten wäre.

Re-Ensembles und Diversity: Wenn Klassifikatoren, die an den Trainingsfalten gelernt wurden, nicht nur zur Schätzung des Generalisierungsfehlers verwendet werden, führt die zunehmende Steifheit von CV, geschichtetem Bootstrap und geschichtetem CV zu einem Verlust an Diversity und potenzieller Resilienz im Vergleich zu Bootstrap, erzwungenem Bootstrap und erzwungener Lebenslauf.


Wäre es möglich, einige Nachschlagewerke darüber vorzulegen, wie geschichtetes Bootstrap "fehlschlägt", wenn erzwungenes Bootstrap "besser ist"?
usεr11852 sagt Reinstate Monic

16

Vielleicht können Sie sich das so vorstellen. Angenommen, Sie haben einen Datensatz mit 100 Stichproben, 90 in Klasse 'A' und 10 in Klasse 'B'. In diesem sehr unausgeglichenen Design können Sie, wenn Sie normale zufällige Gruppen bilden, auf sehr wenigen (oder NIEMALS NIEMALS!) Modellen der Klasse 'B' aufbauen. Wenn Sie ein Modell erstellen, das auf Daten trainiert wird, bei denen es so wenige oder gar keine Daten der anderen Klasse gibt, wie können Sie dann davon ausgehen, dass es die seltenere Gruppe effektiv vorhersagt? Die geschichtete Kreuzvalidierung ermöglicht eine Randomisierung, stellt jedoch auch sicher, dass diese unausgeglichenen Datensätze einige beider Klassen aufweisen.

Schauen wir uns ein Beispiel mit R-Code an, um Bedenken hinsichtlich der Verwendung eines geschichteten Lebenslaufs mit ausgewogeneren Datenmengen zu zerstreuen.

require(mlbench)
require(caret)
require(cvTools)

# using the Sonar dataset (208 samples)
data(Sonar)

# see the distribution of classes are very well balanced
prop.table(table(Sonar$Class))

> prop.table(table(Sonar$Class))

M         R 
0.5336538 0.4663462 

# stratified
# set seed for consistency
# caret::createFolds does stratified folds by default
set.seed(123)
strat <- createFolds(Sonar$Class, k=10)

# non-stratified using cvTools
set.seed(123)
folds <- cvFolds(nrow(Sonar), K=10, type="random")
df <- data.frame(fold = folds$which, index = folds$subsets)
non_strat <- lapply(split(df, df$fold), FUN=function(x) x$index)

# calculate the average class distribution of the folds
strat_dist <- colMeans(do.call("rbind", lapply(strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
    non_strat_dist <- colMeans(do.call("rbind", lapply(non_strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
strat_dist
> strat_dist
M         R 
0.5338312 0.4661688 
non_strat_dist
> non_strat_dist
M         R 
0.5328571 0.4671429 

Wie Sie sehen können, haben in einem Datensatz, der gut ausbalanciert ist, die Falten zufällig eine ähnliche Verteilung. Ein geschichteter Lebenslauf ist daher unter diesen Umständen lediglich eine Gewährleistungsmaßnahme. Um die Varianz anzugehen, müssten Sie jedoch die Verteilungen jeder Falte betrachten. Unter bestimmten Umständen (sogar ab 50-50) können Sie Foldings mit zufälligen Teilungen von 30-70 haben (Sie können den obigen Code ausführen und sehen, dass dies tatsächlich passiert!). Dies könnte zu einem schlechteren Modell führen, da es nicht genug von einer Klasse hatte, um es genau vorherzusagen, wodurch die Gesamt-CV-Varianz erhöht wird. Dies ist offensichtlich wichtiger, wenn Sie über "begrenzte" Stichproben verfügen, bei denen Sie mit größerer Wahrscheinlichkeit extreme Unterschiede in der Verteilung haben.

Bei sehr großen Datenmengen ist eine Schichtung möglicherweise nicht erforderlich, da die Falten groß genug sind, um wahrscheinlich immer noch mindestens einen guten Anteil der „selteneren“ Klasse zu enthalten. Es gibt jedoch wirklich keinen Rechenverlust und keinen wirklichen Grund, auf eine Schichtung zu verzichten, wenn Ihre Stichproben unausgewogen sind, egal wie viele Daten Sie meiner Meinung nach haben.


Ja, das macht total Sinn. Dies ist jedoch ein sehr spezieller Fall, und Sie tun dies, um den Mangel an Daten zu erklären. Wenn Sie 10.000 Proben hätten, würden Sie es tun? Meine Frage ist, im Idealfall und mit genügend Daten, ist es eine gute Idee?
James Owers

1
@kungfujam, es kommt darauf an, wie unausgewogen deine Daten sind. Selbst mit enormen Datenmengen könnten Sie (nach dem Zufallsprinzip) mit sehr wenigen der anderen Klasse enden. Hierzu gibt es einige Untersuchungen. Obwohl etwas veraltet, berichtete Kohavi diesstratifcation is generally a better scheme, both in terms of bias and variance, when compared to regular cross-validation . Es gibt kein perfektes Stichprobenverfahren, aber bei unausgeglichenen Entwürfen ist eine Schichtung ein guter Ansatz.
Cdeterman

Danke dafür. Ich hatte gerade die Kohavi-Zeitung gefunden. Alt aber gut. Ich kann sehen, dass die Klassen im Allgemeinen nicht perfekt ausbalanciert sind und die Datenmenge begrenzt ist => Stratifizierung ist im Allgemeinen besser ... aber bei einem angemessenen Gleichgewicht fühle ich mich als Verstoß!
James Owers

@kungfujam, welchen Teil betrachten Sie als Verstoß? Die k-Faltungen sind randomisiert, außer dass sie spezifisch einen bestimmten Anteil der verschiedenen Gruppen erfordern. Sie können sich vorstellen, dass Ihre Falten aus jeder Gruppe zufällig erstellt und zu einer zusammengefassten Falte kombiniert werden, wobei die von Ihnen gewünschte Zufallsverteilung erhalten bleibt. Bei einem angemessenen Gleichgewicht (z. B. 60% -40%) ist es wahrscheinlich, dass Ihre Falten ohnehin mit oder ohne Schichtung ähnliche Anteile haben (einige Variationen natürlich).
Cdeterman

1
Ich fühle mich wie es den Punkt besiegt. Ihre ursprüngliche Stichprobe ist 'zufällig'. Aus diesem Grund dachte ich, dass CV versuchen sollte, dies zu berücksichtigen und unterschiedliche Resamples zu erstellen, und Sie dazu veranlassen sollte, ein robusteres Modell für die Varianz zu erstellen, indem Modelle bestraft werden, die sich ändern, wenn sich die Eingabedaten ändern. Wenn Sie Ihre Falten so einschränken, dass sie den Proportionen des Originalmusters entsprechen, haben Sie in gewisser Weise das Gefühl, dass Sie es daran hindern, dies zu tun. Sie können durchaus ein Modell mit einer geringeren Abweichung herstellen, aber ich würde davon ausgehen, dass es eine höhere Abweichung aufweist.
James Owers
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.