Was ist der geeignetere Weg, um ein Hold-out-Set zu erstellen: einige Themen zu entfernen oder einige Beobachtungen von jedem Thema zu entfernen?


11

Ich habe einen Datensatz mit 26 Funktionen und 31000 Zeilen. Es ist der Datensatz von 38 Probanden. Es ist für ein biometrisches System. Ich möchte also in der Lage sein, Themen zu identifizieren.

Ich weiß, dass ich einige Werte entfernen muss, um einen Testsatz zu haben.

Was ist besser und warum?

  1. (a) 30 Probanden als Trainingssatz behalten und 8 Probanden als Testsatz entfernen

  2. (b) Behalte die 38 Probanden, aber entferne einige Reihen von jedem. Am Ende werde ich also ein Trainingsset erhalten: 24800 Reihen mit 38 Probanden UND ein Testset: 6200 Reihen mit 38 Probanden


1
Wenn Sie Probanden identifizieren möchten, wie können Sie möglicherweise "ganze" Probanden für einen Testsatz entfernen? Das an 30 Probanden trainierte Modell kann nur diese 30 Probanden identifizieren, nicht die 8 Probanden, die es noch nie gesehen hat. Ihre Klarstellung zum "biometrischen System" könnte dazu führen, dass die meisten vorhandenen Antworten nicht mehr anwendbar sind.
Amöbe sagt Reinstate Monica

1
Es wäre hilfreich zu klären: (1) das genaue Ziel, welche Ergebnisvariable Sie vorhersagen möchten (2) welche Daten Sie haben und möglicherweise (3) welchen Ansatz Sie verwenden.
Matthew Gunn

Wie würde das System nach der Schulung bereitgestellt? Ist das Ziel, es bei Personen anzuwenden, die nicht im Trainingsset enthalten sind? Werden neue Daten von denselben 38 Probanden stammen? Ich versuche zu verstehen, wie das System verwendet werden soll und ob Sie sich in Fall (1) oder Fall (2) der Antwort von @ AmiTavory befinden.
Matthew Gunn

@amoeba Ich bin nicht sehr erfahren :( Ich habe die Frage gestellt, weil empfohlen wird, Daten aufzuteilen (Training, Validierung und Test). Es geht also entweder darum, einige Probanden oder einige Beobachtungen von jedem zu entfernen ODER einen online verfügbaren Datensatz zu verwenden 1) Ich möchte Themen identifizieren können. Wem gehören die Funktionen? 2) Ich benutze EEG (also Zeitreihen). 3) Ich benutze Stratified-Fold. Aber es liegt daran, dass ich damit eine höhere Genauigkeit habe als mit kfold. Ich wusste nur von k-fach, geschichtet und ausgelassen. Wie ich immer gedacht habe, war es, Ungleichgewichte in Daten auszugleichen. Aber ich bin offen für Vorschläge.
Aizzaac

@MatthewGunn Ich denke, es wäre nicht möglich, es mit Leuten zu verwenden, die nicht im Datensatz sind. Das wäre sehr schwierig, aber sehr interessant, wenn es erreicht würde. Also würde ich Fall 1 sagen.
Aizzaac

Antworten:


9

Ich denke, Matthew Gunns Antwort ist richtig, aber es scheint mir, dass der "rekordbezogene" Lebenslauf zwei verschiedene Konzepte abdecken kann:

  1. Die Datensätze werden unabhängig von Thema oder Zeit zufällig in Falten unterteilt.

  2. Die Datensätze werden in zeitbasierte Falten unterteilt, wobei keine Falte für das Training verwendet wird, die Daten nach dem Beginn der Testfalte enthält.

Im ersten Fall wird jede Zeitreihenart Ihrer Daten beeinträchtigt, da Ihr Trainingssatz Daten sowohl vor als auch nach Ihrem Testsatz enthalten kann. Das Prinzip von Train / Test ist, dass Trainingsdaten Daten darstellen, die der Gegenwart bekannt sind, und Testdaten noch nicht sichtbare Daten darstellen (möglicherweise buchstäblich aus der Zukunft).

Möglicherweise beeinträchtigt die Autokorrelation von Zeitreihen Option 2. Vielleicht ist das Zeitelement des Modells nicht wirklich wichtig und daher sind "vergangene" und "zukünftige" Beobachtungen wahrscheinlich gleich. In diesen Fällen ist weder Nr. 1 noch Nr. 2 der richtige Weg.

Wenn es nur Saisonalität und keine Trends gibt, scheint es in Ordnung zu sein, "die Zukunft" für einige Fächer in das Training einzubeziehen, um neue Fächer vorherzusagen (die von derselben Saisonalität betroffen sein werden). Wenn es Trends gibt, sollte das Training für die Zukunft etwas über die Zukunft lernen, das Sie bei Verwendung des Modells in der Produktion wirklich nicht wissen würden.

Im Beispiel des OP klingt es so, als wäre das Thema gut. Wenn jedoch Trends und Bedenken hinsichtlich Zeitreihen Teil des Modells wären, würde ich versuchen, eine themen- und zeitbasierte Partitionierung zu verwenden, damit Sie vor einem bestimmten Zeitpunkt an einer Gruppe von Themen trainiert und anschließend an den anderen Themen getestet haben dieser bestimmte Zeitpunkt.


1
tt

1
Ich würde sagen, dass die Anwendung über die angemessene Aufteilung entscheidet. Selbst bei Zeitreihen kann es beispielsweise die Aufgabe sein, die abhängige Variable für spätere Messungen unbekannter Probanden vorherzusagen, was bedeuten würde, dass die Aufteilung sowohl thematisch als auch zeitlich erfolgen muss.
cbeleites unterstützt Monica

3
@cbeleites: Einverstanden. Dies habe ich kürzlich bei einem Projekt getan: Teilen Sie die Daten in Zug- und Testpersonen auf und verwenden Sie nur Daten vor dem Datum für das Training und Daten nach dem Datum zum Testen. Wir haben also an Personen getestet, die wir nie hatten gesehen, während eines Zeitraums, den wir noch nicht gesehen hatten. Sie möchten das Deck gegen sich stapeln - ohne über Bord zu gehen -, wenn Sie wirklich wissen möchten, wie gut Ihr Modell in der Praxis abschneidet.
Wayne

16

Eine kritische Unterscheidung ist, ob Sie:

  1. [Häufigster Fall]: Erstellen Sie eine Schätzung der Leistung für neue Themen (aus derselben Population wie Ihre Daten).
  2. Erstellen Sie eine Leistungsschätzung für neue Beobachtungen von denselben Probanden wie in Ihrer Stichprobe.

Der weitaus häufigere Fall ist die Fallnummer (1). Wie gut prognostizieren Sie beispielsweise einen Herzinfarkt für jemanden, der in die Notaufnahme kommt? Und wenn Sie in Fall (1) sind, Sie ziemlicher Sicherheit (a) eine themenbezogene Kreuzvalidierung und nicht (b) eine rekordbezogene Kreuzvalidierung durchführen. Eine rekordverdächtige Validierung in Fall (1) führt wahrscheinlich zu unangemessen hohen, falschen Schätzungen der Leistung bei neuen Probanden.

Ich verstehe nicht genau, was Sie versuchen zu tun (und vielleicht ist es Selbststudium, daher ist die Frage nicht ganz realistisch). Ich weiß nicht, in welchem ​​Fall Sie sich befinden. Wenn Sie sich in einem viel selteneren Fall befinden (2), ist die Validierung von Aufzeichnungen möglicherweise in Ordnung.

Ein allgemeines Thema in der Statistik ist es, sorgfältig darüber nachzudenken, was unabhängig ist und was korreliert. Im Allgemeinen ist eine unabhängige Beobachtung ein anderes Thema. Wenn Sie die Leistung vorhersagen möchten neuen Fächern , müssen Sie bei Fächern testen, auf denen Sie nicht trainiert haben!

Warum eher eine themenbezogene Kreuzvalidierung als eine rekordbezogene?

In typischen Umgebungen werden wiederholte Beobachtungen desselben Individuums auch nach Konditionierung von Merkmalen miteinander korreliert. Daher ist Ihr Test-Set bei der rekordverdächtigen Kreuzvalidierung nicht unabhängig von Ihrem Trainingsset! Im Extremfall perfekter Korrelation hätten Sie genau die gleichen Beobachtungen im Trainingssatz und im Testsatz! Sie würden am Testset trainieren! Die bei der Kreuzvalidierung gemessene Leistung würde die Leistung bei neuen Probanden nicht vorhersagen.

In diesem kürzlich erschienenen Artikel wird beispielsweise die rekordübergreifende Kreuzvalidierung "Voodoo Machine Learning" genannt.

Was tun mit so wenigen Themen?

k=n

Um die Daten für das Training zu maximieren, können Sie ein Thema für die Kreuzvalidierung weglassen. Testen Sie bei jeder Iteration ein anderes Thema und trainieren Sie alle anderen.

n=38 und möchten möglicherweise so viele unabhängige Fächer in das Trainingsset aufnehmen.


Ich weiß, dass der Datensatz in drei Bereiche unterteilt werden muss: Schulung, Validierung und Test. Bei der Kreuzvalidierung werden "Training und Validierung" verwendet. Das Hold-Out-Set ist das "Testen". Schlagen Sie also vor: Verwenden Sie für Training und Validierung 37 Probanden und testen Sie in einem Probanden? Und dass ich jede Art von Kreuzvalidierung durchführen kann: k-fach, geschichtet usw.?
Aizzaac

1
OP hat eine Bearbeitung vorgenommen, in der es heißt: "Es handelt sich um ein biometrisches System. Ich möchte also in der Lage sein, Probanden zu identifizieren." Wenn ich richtig verstehe, was es bedeutet, bedeutet dies, dass nur ein rekordverdächtiger Lebenslauf sinnvoll ist, da das Ziel darin besteht, die Subjekt-ID anhand einer Stichprobe vorherzusagen.
Amöbe sagt Reinstate Monica

@amoeba Nur wenn neue Daten von denselben 38 Probanden stammen. Z.B. Wenn das System sagen soll, ob Fingerabdrücke übereinstimmen oder nicht, und es an der Haustür meines Hauses angebracht wird (dh Fremde als Fremde identifizieren müssen), wären Schulungen und Tests zu denselben Themen problematisch (Sie würden) möchte wissen, wie oft es Menschen Zugang gewährt, die es noch nie gesehen hat und auf denen es nie trainiert hat). Ich stimme jedoch zu, dass "Es ist für ein biometrisches System" Fragen aufwirft ...
Matthew Gunn

3

Es hängt wirklich davon ab, wie Sie sich die Einstellung vorstellen, die Sie mit der Zug- / Testaufteilung emulieren möchten. Um die Dinge konkret zu machen, sagen wir, dass jede Zeile die Schlafqualität eines Subjekts in einer einzigen Nacht beschreibt.

  1. Es ist möglich, dass in Zukunft jedes Subjekt zuerst in ein Schlaflabor kommt und Ihnen für einige Nächte die Schlafqualität bietet. Anschließend müssen Sie die Schlafqualität zukünftiger Nächte für diese Probanden vorhersagen . In diesem Fall würden Sie Ihre Option b) verwenden. In sklearnkönnten Sie verwendensklearn.model_selection.StratifiedShuffleSplit

  2. Es ist möglich, dass in Zukunft einige Probanden zuerst in ein Schlaflabor kommen und Ihnen für einige Nächte die Schlafqualität bieten. Anschließend müssen Sie die Schlafqualität zukünftiger Nächte für andere Probanden vorhersagen . In diesem Fall würden Sie Ihre Option a) verwenden. In sklearnkönnten Sie verwendensklearn.cross_validation.LeavePLabelOut


1
Realistisch gesehen ist die Frage jedoch mit ziemlicher Sicherheit Ihr Fall (2), und Option (a), dh eine thematische Kreuzvalidierung, ist angemessen.
Matthew Gunn

1
@ MatthewGunn Du hast recht. Fall 2 ist weitaus häufiger. Ich muss sagen , ich habe in realen Fällen laufen , wobei 1 die richtige Wahl war.
Ami Tavory

1
Interessant. Ich konnte sehen, dass (1) richtig ist, um neue Beobachtungen für einen großen, etablierten Kundenstamm vorherzusagen. Punkt genommen. Vielleicht reagiere ich so stark, weil ich kürzlich dieses Papier über den weit verbreiteten Missbrauch der aktenbezogenen Kreuzvalidierung im medizinischen Bereich gelesen habe .
Matthew Gunn

Was halten Sie davon: Ich verwende die 38 Probanden mit jeder Art von Kreuzvalidierung; und um zu testen, ob mein Modell mit einem anderen Thema verwendet werden kann; Ich benutze einen Online-Datensatz? Ich denke, die Idee eines gehaltenen Sets ist es, einen "neuen" Datensatz zu haben, um das Modell zu testen.
Aizzaac

3

Ich gehe davon aus, dass die Anwendung unbekannte Themen vorhersagen soll. Das bedeutet (unabhängig davon, ob Sie Zeitreihen oder inhärent ungeordnete wiederholte Messungen haben), dass die Aufteilung durchgeführt werden muss, damit unbekannte Probanden getestet werden => Aufteilung a)

In Anbetracht der Tatsache, dass Sie nur 38 Probanden haben, sollten Sie sich jedoch Gedanken über die Validierung des Resamplings machen. Aus meiner Erfahrung mit ähnlich kleinen Stichprobengrößen (obwohl mehr Funktionen) sind hier einige Empfehlungen auf den Punkt gebracht:

  • Entscheiden Sie sich für eine themenbezogene Out-of-Bootstrap- oder iterierte Kreuzvalidierung. Sie ermöglichen die Beurteilung der Stabilität Ihrer Modelle, was bei Problemen mit kleinen Stichproben entscheidend ist. Die Ergebnisse können sogar für ein aggregiertes Modell verwendet werden, falls Instabilität ein Problem darstellt.

  • Lassen Sie nicht ein Thema aus. Es erlaubt weder, die Modellstabilität zu messen, noch sie zu reduzieren. Darüber hinaus gibt es Situationen, in denen es aufgrund der geringen Stichprobengröße einer großen pessimistischen Verzerrung unterliegt (im Gegensatz zu der erwarteten minimalen pessimistischen Verzerrung).

  • Wenn Sie die typischen Klassifizierungswerte wie Genauigkeit, Empfindlichkeit, Spezifität usw. verwenden und die Aufgabe darin besteht, die Probanden korrekt zu klassifizieren: Beachten Sie, dass das entscheidende Problem darin besteht, die Leistung zu messen, da die Unsicherheit der Testergebnisse von der absoluten Zahl abhängt von Testfällen. Zum Beispiel entspricht die Beobachtung von 17 korrekten Vorhersagen von 17 wirklich positiven Probanden einem 95% -Konfidenzintervall für die Empfindlichkeit im Bereich von etwa 80% bis 100%.
    Mit anderen Worten, Sie können darauf basierend keine datengesteuerte Modelloptimierung durchführen.

  • Dies bedeutet auch, dass Sie keine Aufteilung mit drei Sätzen (verschachtelte Kreuzvalidierung) einrichten müssen, da Sie hier Ressourcen für statistisch bedeutungslose Vergleiche verschwenden würden - Ihre Optimierung wird fast garantiert fehlschlagen (obwohl Sie dies möglicherweise nicht bemerken, wenn Sie dies tun nicht auf Stabilität prüfen).

  • Die gleiche Berechnung für das binomiale Konfidenzintervall für die vorgeschlagenen 5 (3) Test- / Optimierungs- / Validierungspersonen ergibt 95% ci für alle korrekten Bereiche bis zu 50% (30%). Basierend auf perfekten Testergebnissen würde Ihr Konfidenzintervall also immer noch 50 / umfassen. 50 raten!

Einige Artikel, die wir zu diesen Themen geschrieben haben:

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.