Wie werden CP-Werte (Cost Complexity) in RPART (oder Entscheidungsbäumen im Allgemeinen) berechnet?

9

rpartSoweit 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?

Ben
quelle
Bitte überprüfen Sie meine Antworten in diesem Beitrag
Haitao Du
Dies ist die Verringerung des rel-Fehlers auf die nächste Baumebene. Vielleicht gibt es eine andere Erklärung, aber meiner Meinung nach bevorzuge ich die einfache
Cloudscomputes

Antworten:

2

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.

Nikhil
quelle
Ich denke, es kommt von Seite 24 des folgenden cran.r-project.org/web/packages/rpart/vignettes/longintro.pdf
user1700890
2

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 Geben Sie hier die Bildbeschreibung ein

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

Akshay Kadidal
quelle
Quelle meines ersten Kommentars: learnbymarketing.com/tutorials/rpart-decision-trees-in-r
Akshay Kadidal