2012-04-11 3 views
19

Die Hilfeseite für randomforest::randomforest() sagt:Was bedeutet der Parameter 'classwt' in RandomForest im RandomForest-Paket in R?

"classwt - Priors der Klassen deckenden Bedarf einen nicht aufaddieren für die Regression nicht berücksichtigt.."

Konnte die Einstellung classwt Parameter helfen, wenn Sie schwere unsymmetrische Daten haben, dh. priors der Klassen unterscheidet sich stark?

Wie soll ich classwt beim Training eines Modells auf einem Datensatz mit 3 Klassen mit einem Vektor von Priors gleich (p1, p2, p3) setzen, und in Testsatz Prioren sind (q1, q2, q3)?

+3

Ich bin mir nicht sicher über Ihre zweite Frage, aber 'classwt' Ich glaube, dass verwendet wird, wenn Proben aus Ihren Daten, so dass jedes Beispiel für jeden Baum aus Ihren Klassen mit diesen Wahrscheinlichkeiten gezogen wird (nach Normalisierung). – joran

+0

strata liefert die gleiche Leistung wie classwt und ist einfacher zu kontrollieren, lesen Sie diese Anleitung auf SO: http://stats.stackexchange.com/questions/157714/r-package-for-weighted-random-forest-classwt-option/158030 # 158030 –

+0

@joran das ist stratification du beschreibst. Classwt wird verwendet, um Stichproben zu gewichten, wenn der optimale Knickpunkt für die Knotenaufteilung gefunden werden soll, und um die Knotenvorhersage während des Trainings zu definieren. –

Antwort

21

könnte klassewt parameter hilfe, wenn sie schwere unausgewogene daten haben - priors der klassen unterscheidet sich stark?

Ja, die Einstellung von classwt könnte für unsymmetrische Datensätze nützlich sein. Und ich stimme mit joran überein, dass diese Werte in Wahrscheinlichkeiten für die Stichprobe von Trainingsdaten umgewandelt werden (nach Breiman's Argumentation in seinem Originalartikel).

Wie Satz classwt wenn in der Ausbildung Datensatz mit drei Klassen haben Sie Vektor priors gleich (P1, P2, P3), und in Test-Set priors ist (q1, q2, q3)?

Für das Training können Sie einfach

rf <- randomForest(x=x, y=y, classwt=c(p1,p2,p3)) 

angeben Für Test keine priors eingestellt werden kann: 1) gibt es keine solche Option in predict Methode von Random Paket; 2) Gewichte haben nur Sinn für das Training des Modells und nicht für die Vorhersage.

+0

Wie ich verstehe Prioren (p1, p2, p3) sind charakteristisch für die allgemeine Bevölkerung, nicht der spezifische Trainingsdatensatz. Wenn ich Klassen im Testdatensatz vorhersagen möchte und ich weiß, dass Klassenwahrscheinlichkeiten in der Menge (q1, q2, q3) als Einstellung classwt = c (q1, q2, q3) zufälligen Wald helfen sollten, den Trainingsraum besser zu erkunden . – Qbik

+0

Nein, diese Klassengewichte sind nur für das Trainingsset spezifisch. Zum Beispiel, wenn Sie einen ausgeglichenen Trainingssatz haben, ist es im Allgemeinen nicht notwendig, den 'classwt' Parameter zu verwenden. Aber zur gleichen Zeit können Sie einen unausgewogenen Testsatz haben, und ich erwarte, dass das Ändern der Klassengrenzen die Testmengenvorhersage in einem solchen Fall nicht verbessern wird. Mit anderen Worten, mit 'classwt' können Sie die Vorhersagegenauigkeit für eine der Klassen erhöhen und gleichzeitig für eine andere Klasse verringern. Sie können mit diesem Parameter ein wenig spielen und zum Beispiel die OOB-Set-Vorhersage-Statistik betrachten. – DrDom