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.
quelle
Antworten:
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.
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!
quelle