rpart
Soweit ich weiß, hilft das Argument cp für die Funktion dabei, den Baum auf die gleiche Weise wie die Argumente minsplit oder minbucket vorab zu bereinigen. Was ich nicht verstehe, ist, wie CP-Werte berechnet werden. Zum Beispiel
df<-data.frame(x=c(1,2,3,3,3,4), y=as.factor(c(TRUE, TRUE, FALSE, TRUE, FALSE, FALSE)), method="class")
mytree<-rpart(y ~ x, data = df, minbucket = 1, minsplit=1)
Resultierender Baum ...
mytree
n= 6
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 6 3 FALSE (0.5000000 0.5000000)
2) x>=2.5 4 1 FALSE (0.7500000 0.2500000) *
3) x< 2.5 2 0 TRUE (0.0000000 1.0000000) *
Zusammenfassung...
summary(mytree)
Call:
rpart(formula = y ~ x, data = df, minbucket = 1, minsplit = 1)
n= 6
CP nsplit rel error xerror xstd
1 0.6666667 0 1.0000000 2.0000000 0.0000000
2 0.0100000 1 0.3333333 0.6666667 0.3849002
Woher kommen die .666 und .01?
Antworten:
Ich habe seit vielen Tagen nach dem gleichen gesucht und dabei festgestellt, dass die Berechnung des CP-Werts per Paket erfolgt. Wenn Sie keinen "CP" -Wert angeben, nimmt rpart standardmäßig 0,01 an. Der Cp-Wert entspricht den Kosten für das Hinzufügen eines Knotens zum Baum.
quelle
Der Komplexitätsparameter (cp) in rpart ist die minimale Verbesserung des Modells, die an jedem Knoten benötigt wird. Es basiert auf der Kostenkomplexität des als definierten Modells
Addieren Sie für den angegebenen Baum die Fehlklassifizierung an jedem Endknoten. Multiplizieren Sie dann die Anzahl der Teilungen mit einem Strafbegriff (Lambda) und addieren Sie sie zur gesamten Fehlklassifizierung. Das Lambda wird durch Kreuzvalidierung bestimmt und nicht in R angegeben.
Für Regressionsmodelle (siehe nächster Abschnitt) hat der skalierte cp eine sehr direkte Interpretation: Wenn eine Aufteilung das Gesamt-R2 des Modells nicht um mindestens cp erhöht (wobei R2 die übliche Definition für lineare Modelle ist), wird diese Aufteilung festgelegt a priori nicht wert, verfolgt zu werden. Siehe das Longintro-Dokument für rpart
quelle