Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

UCI の National Poll on Health Aging (NPHA) のデータの分析 6 - 決定木モデルで予測する

(Bing Image Creator で生成: プロンプト: Close up of yellow Iris flowers, photo. Background is high blue sky)

www.crosshyou.info

の続きです。

今回は決定木モデル(Decision Tree Model)で予測してみます。

まず、rpartパッケージ、rpart.plotパッケージを読み込みます。

rpart()関数でもとになるモデルを生成します。

この初期ツリーの cp をみてみます。

xerror が一番小さいときの cp が一番良い cp です。

この best_cp で初期ツリーを剪定します。

この剪定後のツリーのグラフを描いてみます。

predict()関数で予測します。

結果はどうでしょうか?

正解率は、56.5% でした。

前回の線形モデルをOLSで推計したときの55%よりは良い結果ですが、目標とする62.3%には届きませんでした。

今回は以上です。

次回は、

www.crosshyou.info

です。

 

はじめから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。

#
# rpartパッケージの読み込み
library(rpart)
library(rpart.plot)
#
# rpartで初期ツリーを推定
set.seed(123987)
initial_tree <- rpart(healthy ~ ., data = df_train,
                      method = "class",
                      control = rpart.control(cp = 1e-9,
                                              minsplit = 5))
#
# 初期ツリーのcptable
printcp(initial_tree)
#
# best cp は
best_cp <- initial_tree$cptable[which.min(initial_tree$cptable[ , 4]), 1]
best_cp
#
# best_cpで剪定
pruned_tree <- prune(initial_tree, cp = best_cp)
#
# pruned_treeのグラフ
rpart.plot(initial_tree)
#
# pruned_treeで予測
pred_tree <- predict(pruned_tree, df_test, type = "class")
#
# 結果
table(pred_tree, df_test$healthy)
#
# 正解率
(31 + 8) / (31 + 8 + 23 + 7)
#