Train / Test Split nach SMOTE durchführen

8

Ich habe es mit sehr unausgeglichenen Daten zu tun, daher habe ich den SMOTE-Algorithmus verwendet, um den Datensatz neu abzutasten.

Nach dem SMOTE-Resampling habe ich den neu abgetasteten Datensatz in Trainings- / Testsätze aufgeteilt, wobei ich den Trainingssatz zum Erstellen eines Modells und den Testsatz zum Bewerten des Modells verwendet habe.

Ich mache mir jedoch Sorgen, dass einige Datenpunkte in den Testsätzen tatsächlich von den Datenpunkten im Trainingssatz zittern könnten (dh die Informationen gehen vom Trainingssatz zum Testsatz verloren), sodass der Testsatz kein wirklich sauberer Satz für ist testen.

Hat jemand ähnliche Erfahrungen? Lecken die Informationen wirklich vom Training bis zum Testen? Oder der SMOTE-Algorithmus hat sich tatsächlich darum gekümmert und wir müssen uns darüber keine Sorgen machen?

Vielen Dank!

Edamame
quelle

Antworten:

13

Wenn Sie eine Stichprobentechnik (speziell synthetisch) verwenden, teilen Sie zuerst Ihre Daten und wenden dann synthetische Stichproben nur auf die Trainingsdaten an. Nach dem Training verwenden Sie das Test-Set (das nur Originalproben enthält) zur Bewertung. Das Risiko, wenn Sie Ihre Strategie anwenden, besteht darin, dass die Originalprobe im Training (Testen) und die synthetische Probe (die auf der Grundlage dieser Originalprobe erstellt wurde) im Test (Training) enthalten sind.

Bashar Haddad
quelle
1
Vielen Dank, verstehen Sie Ihren Punkt. Dann frage ich mich auf diese Weise, ob ich keine n-fache Kreuzvalidierung durchführen kann, oder? Da meine Daten so klein sind (insbesondere für die Minderheitsklasse), versuche ich, so viele wie möglich zu verwenden.
Edamame
3

Gemäß Ihrer letzten Frage:

Dann frage ich mich auf diese Weise, ob ich keine n-fache Kreuzvalidierung durchführen kann, oder? Weil meine Daten so klein sind (besonders für die Minderheitsklasse)

Das ist nicht wahr. Sie können Upsampling versuchen, wenn Ihre Daten wirklich klein sind (aber wie klein sind sie?)

Y.Hiko
quelle