Ich versuche Vorhersagen mit einem zufälligen Waldmodell in R zu machen.
Ich erhalte jedoch Fehler, da einige Faktoren im Testsatz andere Werte haben als im Trainingssatz. Beispielsweise hat ein Faktor Cat_2
Werte34, 68, 76
usw. in der Testmenge, die nicht in der Trainingsmenge erscheinen. Leider habe ich keine Kontrolle über das Test-Set ... Ich muss es so verwenden, wie es ist.
Meine einzige Problemumgehung bestand darin, die problematischen Faktoren mithilfe von wieder in numerische Werte umzuwandeln as.numeric()
. Es funktioniert, aber ich bin nicht sehr zufrieden, da diese Werte Codes sind, die keinen numerischen Sinn haben ...
Glauben Sie, es gäbe eine andere Lösung, um die neuen Werte aus dem Test-Set zu entfernen? Aber ohne alle anderen Faktorwerte (z. B. Werte 1, 2, 14, 32
usw.) zu entfernen , die sich sowohl im Training als auch im Test befinden und Informationen enthalten, die möglicherweise für Vorhersagen nützlich sind.
quelle
Antworten:
Wenn der Testsatz viele dieser Punkte mit neuen Faktorwerten enthält, bin ich mir nicht sicher, was der beste Ansatz ist. Wenn es sich nur um eine Handvoll Punkte handelt, können Sie mit etwas Unsinnigem davonkommen, wie die fehlerhaften Faktorstufen als fehlende Daten zu behandeln und sie mit jedem Ansatz zu belegen, den Sie für richtig halten. Die R-Implementierung bietet mehrere Möglichkeiten, fehlende Daten zu unterstellen. Sie müssen diese Faktorstufen nur auf NA setzen, um anzuzeigen, dass sie fehlen.
quelle
King und Bonoit , dieses Snippet kann nützlich sein, um Level zu harmonisieren:
Es wird auch gedruckt, welche Attribute geändert wurden. Ich fand keinen guten Weg, es eleganter zu schreiben (mit ldply oder so). Irgendwelche Tipps sind willkommen.
quelle
Hier ist ein Code, den ich geschrieben habe und der die Antwort von @ King oben anspricht. Es hat den Fehler behoben:
quelle
Test- und Trainingssatz sollten zu einem Satz zusammengefasst werden und dann die Stufen des Trainingssatzes ändern. Meine Codes sind:
Dies funktioniert in allen Fällen, in denen die Anzahl der Teststufen mehr oder weniger als das Training beträgt.
quelle
Ich habe eine miserable Problemumgehung, wenn ich randomForest in R verwende. Es ist wahrscheinlich nicht theoretisch solide, aber es bringt die Sache zum Laufen.
oder umgekehrt. Grundsätzlich sagt es R nur, dass es ein gültiger Wert ist, nur dass es 0 Fälle gibt; Also hör auf, mich wegen des Fehlers zu nerven.
Ich bin nicht schlau genug, es so zu codieren, dass es die Aktion automatisch für alle kategorialen Features ausführt. Senden Sie mir den Code, wenn Sie wissen, wie ...
quelle
Ich bin mir sicher, dass Sie dies bereits in Betracht gezogen hätten, wenn dies der Fall wäre, aber wenn der Testsatz tatsächliche Werte aufweist und Sie den Testsatz zu Kreuzvalidierungszwecken verwenden, dann teilen Sie den Datenrahmen erneut in Trainings- und Testdatenrahmen auf Wo die beiden auf diese Faktoren ausgewogen sind, würde Ihr Problem vermeiden. Diese Methode wird im Volksmund als geschichtete Kreuzvalidierung bezeichnet .
quelle