Wie gehe ich mit Faktoren mit seltenen Niveaus bei der Kreuzvalidierung um?

9

Angenommen, in einer Regressionsanalyse in R habe ich eine faktortypunabhängige Variable mit 3 Ebenen in meinem Zugdatensatz. Im Testdatensatz hat dieselbe Faktorvariable jedoch 5 Ebenen. Daher kann ich die Antwortwerte für den Testdatensatz nicht vorhersagen. Was ist in diesem Fall zu tun?

JRK
quelle
1
Hier geht es nicht in erster Linie um die Verwendung von R. & wenn es nur um die Verwendung von R ginge, wäre dies hier kein Thema. Hier gibt es jedoch eine gute statistische Frage.
Gung - Reinstate Monica
1
Können Sie bitte einige Beispieldaten hinzufügen? Es wird einfacher sein, auf diese Weise zu adressieren.
Andrew Owens

Antworten:

8

Als allererster Gedanke bedeutet dies, dass zumindest Ihr Trainingssatz nicht repräsentativ für die Anwendungsdaten ist. Ob der Testsatz repräsentativ ist, ist eine Frage, über die Sie meiner Meinung nach sehr sorgfältig nachdenken sollten. In diesem Zusammenhang ist es auch wichtig herauszufinden, ob diese fehlenden Klassen ein Problem des zu kleinen Trainingssatzes darstellen oder ob dies ein allgemeines Merkmal des Problems / der Aufgabe / der Anwendung ist. Das heißt, ob ständig neue Klassen auftauchen, die noch nie zuvor angetroffen wurden.

Grundsätzlich sehe ich zwei Möglichkeiten, mit dieser Situation umzugehen:

  • Nehmen Sie an, dass der Trainingssatz mit Sicherheit nicht repräsentativ ist, und fordern Sie weitere Daten an, insbesondere Daten der fehlenden Klassen. Dies ist sinnvoll, wenn Sie zu dem Schluss kommen, dass das Problem im jeweiligen Trainingssatz und nicht in den allgemeinen Merkmalen der Anwendung liegt.

  • In dem Wissen, dass die Trainingsdaten keine Klassen enthalten, würde ich auf jeden Fall die Verwendung eines Ein-Klassen-Klassifikators in Betracht ziehen. Dh ein Klassifikator, der jede Klasse unabhängig von einer möglichen anderen Klasse behandelt. Idealerweise sollte ein Ein-Klassen-Klassifikator "unbekannte Klasse" für die Testfälle von Klassen zurückgeben, die nicht für das Training verfügbar waren. Für Ein-Klassen-Klassifikatoren ist es tatsächlich sinnvoll, diese "Ablehnung" von Fällen zu testen, die zu wirklich unbekannten Klassen gehören.


edit wrt @ gungs Kommentar: Ich gehe davon aus, dass die Zug- / Testaufteilung aus hoffentlich guten Gründen behoben ist .

cbeleites unzufrieden mit SX
quelle
Wäre es sinnvoll, Ihre Daten auf jeder Ebene zu partitionieren und diese dann in den Falten zu kombinieren? ZB hat X1 2 Ebenen mit 90 & 10 Daten; Sie könnten die 10 in 10 Singletons und die 90 in 10 9er-Sätze unterteilen, dann würden Sie jeweils einen Satz kombinieren, um jede Ihrer 10 Falten für den Lebenslauf zu bilden. Dies ist mir in den Sinn gekommen, als ich das Q gelesen habe, aber es scheint nicht, dass Sie das vorschlagen. Ist das eine gültige Lösung? (Ich könnte als neues Q fragen, wenn Sie es vorziehen.)
Gung - Reinstate Monica
@gung: Ich denke logischerweise ist es eine separate Frage, ja. Außerdem sehe ich einen großen Hauptunterschied zwischen dem Trainingssatz, der nicht alle Klassen abdeckt, und der Sicherstellung, dass alle Klassen eines bestimmten kleinen Datensatzes in Trainings- und Testaufteilungen angezeigt werden (= Schichtung).
cbeleites unglücklich mit SX