R

rpart 複雜度參數混淆

  • August 25, 2014

rpart我對對象摘要中的 CP 計算有點困惑。

舉這個例子

df <- data.frame(x=c(1, 2, 3, 3, 3), 
                y=factor(c("a", "a", "b", "a", "b")),
                method="class")
mytree<-rpart(y ~ x, data = df, minbucket = 1, minsplit=1)
summary(mytree)

Call:
rpart(formula = y ~ x, data = df, minbucket = 1, minsplit = 1)
 n= 5 

   CP nsplit rel error xerror      xstd
1 0.50      0       1.0      1 0.5477226
2 0.01      1       0.5      2 0.4472136

Variable importance
 x 
100 

Node number 1: 5 observations,    complexity param=0.5
 predicted class=a  expected loss=0.4  P(node) =1
   class counts:     3     2
  probabilities: 0.600 0.400 
 left son=2 (2 obs) right son=3 (3 obs)
 Primary splits:
     x < 2.5 to the left,  improve=1.066667, (0 missing)

對於根節點,我認為 CP 應該是 0.4,因為對根中的元素進行錯誤分類的概率是 0.4,而根處的樹大小是 0。0.5 是正確的 CP 嗎?

據我所知,複雜性參數不是該特定節點中的錯誤。它是拆分該節點改進相對誤差的量。因此,在您的示例中,拆分原始根節點會將相對誤差從 1.0 降低到 0.5,因此根節點的 CP 為 0.5。下一個節點的 CP 僅為 0.01(這是決定何時考慮拆分的默認限制)。所以拆分那個節點只會導致 0.01 的改進,所以樹的構建就停在那裡了。

引用自:https://stats.stackexchange.com/questions/117908

comments powered by Disqus