R_ClassificationAndRegressionTrees のバックアップ(No.25) - アールメカブ

アールメカブ


R_ClassificationAndRegressionTrees のバックアップ(No.25)


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
CARSの実行結果

この図で,横の点線は,最小点の平均から標準誤差一個分を表し,この線より下の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)