CARS(Classification And Regression Trees) における Cost-Complexity Pruning
10-fold cross-validation によって最適な pruning の数を見積もる.
以下はAnalyzing Linguistic Data より
英語において与格(〜に)を表現する句として,名詞NP(give the book Tom)と前置詞句PP(give the book to Tom) のどちらが選ばれるのかという課題.RealizationOfRecipient?が二値 (N or P) の従属変数である.
# p.162 # CARS の実行 dative.rp <- rpart(RealizationOfRecipient ~ ., data = dative[, -c(1,3)]) # p.163 plot(dative.rp, compress = T, branch = 1, margin = 0.1) text(dative.rp, use.n = T, pretty = 0) # p. 164 # 10-cross validation を実行してプロットする plotcp(dative.rp) # cp
この図で,横の点線は,最小点の平均から標準誤差一個分を表し,この線より下のcpが適当とみなされる.
# しかし conservative に 0.041 を採用して Tree を作ってみる
dative.rp1 <- prune(dative.rp , cp = 0.041) plot(dative.rp1, compress = T, branch = 1, margin = 0.1) text(dative.rp1, use.n = T, pretty = 0) dative.rp1 # p. 165 head(predict(dative.rp1)) choiceIsNP <- predict(dative.rp1)[,1] >= 0.5 preds <- data.frame(obs = dative$RealizationOfRecipient, choiceIsNP) head(preds) xtabs(~ obs + choiceIsNP, data = preds)