Bagaimana nilai CP (Kompleksitas Biaya) dihitung dalam RPART (atau pohon keputusan secara umum)

9

Dari apa yang saya mengerti, argumen cp ke rpartfungsi membantu pra-pangkas pohon dengan cara yang sama dengan argumen menitplit atau minbucket. Yang tidak saya mengerti adalah bagaimana nilai CP dihitung. Sebagai contoh

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)

Pohon yang dihasilkan ...

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) *

Ringkasan...

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

Dari mana .666 dan .01 berasal?

Ben
sumber
Silakan periksa jawaban saya di posting ini
Haitao Du
Itu adalah penurunan rel error ke level pohon berikutnya. Mungkin ada penjelasan lain, tapi menurut saya, saya lebih suka yang sederhana
cloudcomputes

Jawaban:

2

Saya mencari yang sama dari banyak hari dan saya tahu satu hal bahwa perhitungan nilai cp diurus dengan paket. Secara default jika Anda tidak menentukan nilai "CP" maka rpart akan menganggapnya sebagai 0,01. Nilai Cp adalah biaya untuk menambahkan simpul ke pohon.

Nikhil
sumber
Saya kira itu akan datang dari halaman 24 dari cran.r-project.org/web/packages/rpart/vignettes/longintro.pdf
user1700890
2

Parameter kompleksitas (cp) di rpart adalah peningkatan minimum dalam model yang diperlukan di setiap node. Ini didasarkan pada kompleksitas biaya dari model yang didefinisikan sebagai masukkan deskripsi gambar di sini

Untuk pohon yang diberikan, tambahkan kesalahan klasifikasi pada setiap simpul terminal. Kemudian gandakan jumlah waktu perpecahan dengan istilah penalti (lambda) dan tambahkan ke total kesalahan klasifikasi. Lambda ditentukan melalui validasi silang dan tidak dilaporkan dalam R.

Untuk model regresi (lihat bagian berikutnya) skala cp memiliki interpretasi yang sangat langsung: jika ada perpecahan tidak meningkatkan R2 keseluruhan model dengan setidaknya cp (di mana R2 adalah definisi model linier yang biasa) maka perpecahan tersebut ditetapkan menjadi menjadi, apriori, tidak layak dikejar. Lihat dokumen longintro untuk rpart

Akshay Kadidal
sumber
Sumber komentar pertama saya: learnbymarketing.com/tutorials/rpart-decision-trees-in-r
Akshay Kadidal