Sollte ich Random Forest Regressor oder Klassifikator wählen?

11

Ich passe einen Datensatz mit einer binären Zielklasse durch die zufällige Gesamtstruktur an. In Python kann ich das entweder mit dem randomforestclassifier oder dem randomforestregressor machen.

Ich kann die Klassifizierung direkt vom randomforestclassifier erhalten oder ich könnte zuerst randomforestregressor ausführen und eine Reihe von geschätzten Punktzahlen zurückerhalten (kontinuierlicher Wert). Dann kann ich einen Grenzwert finden, um die vorhergesagten Klassen aus der Menge der Bewertungen abzuleiten. Beide Methoden können das gleiche Ziel erreichen (dh die Klassen für die Testdaten vorhersagen).

Auch das kann ich beobachten

randomforestclassifier.predict_proba(X_test)[:,1]) 

unterscheidet sich von

randomforestregressor.predict(X_test)

Ich möchte also nur bestätigen, dass beide Methoden gültig sind und welche in der zufälligen Gesamtstrukturanwendung besser ist.

LUSAQX
quelle
1
Meine unmittelbare Reaktion ist, dass Sie den Klassifikator verwenden sollten, da er genau dafür entwickelt wurde, aber ich bin nicht 100% sicher, dass er einen großen Unterschied macht. Die Verwendung des Regressors entspricht der Verwendung einer linearen Regression anstelle einer logistischen Regression - dies funktioniert, ist jedoch in vielen Situationen nicht so gut. Ich könnte zu einer richtigen Antwort kommen, aber nicht für einen Tag oder so.
Peter Ellis

Antworten:

6

Verwenden Sie den Klassifikator. Nein, sie sind nicht beide gültig.

Zunächst möchte ich Sie wirklich ermutigen, sich mit dem Thema Regression vs. Klassifikation zu befassen. Weil die Verwendung von ML, ohne etwas darüber zu wissen, zu falschen Ergebnissen führt, die Sie nicht realisieren werden. Und das ist ziemlich gefährlich ... ( es ist ein bisschen so, als würde man fragen, in welche Richtung man seine Waffe halten soll oder ob es keine Rolle spielt )

Ob Sie einen Klassifikator oder einen Regressor verwenden , hängt nur von der Art des Problems ab, das Sie lösen. Sie haben ein Problem mit der binären Klassifizierung. Verwenden Sie daher den Klassifizierer.

Ich könnte zuerst randomforestregressor ausführen und eine Reihe von geschätzten Wahrscheinlichkeiten zurückerhalten.

NEIN. Sie erhalten keine Wahrscheinlichkeiten aus der Regression. Es wird nur versucht, die von Ihnen angegebenen Werte zu "extrapolieren" (in diesem Fall nur 0 und 1). Dies bedeutet, dass Werte über 1 oder unter 0 als Regressionsausgabe perfekt gültig sind, da nicht nur zwei diskrete Werte als Ausgabe erwartet werden (das wird als Klassifizierung bezeichnet !), Sondern kontinuierliche Werte.

Wenn Sie die "Wahrscheinlichkeiten" haben möchten ( beachten Sie, dass diese nicht gut kalibriert sein müssen ), damit ein bestimmter Punkt zu einer bestimmten Klasse gehört, trainieren Sie einen Klassifizierer (damit er lernt , die Daten zu klassifizieren ) und verwenden Sie ihn dann .predict_proba (), die dann die Wahrscheinlichkeit vorhersagt.

Um es hier nur zu erwähnen: .predict vs .predict_proba (für einen Klassifikator!)
.Predict nimmt nur die Ausgabe von .predict_proba und ändert alles auf 0 unter einem bestimmten Schwellenwert (normalerweise 0,5) bzw. auf 1 über diesem Schwellenwert.

Bemerkung: Sicher, intern sind sie bis auf die "letzte Schicht" usw. gleich! Sehen Sie sie (oder besser das Problem, das sie lösen) als völlig anders an!

Mayou36
quelle