【Rによるデータサイエンス】樹木モデル(続き) 〜 回帰木
「【Rによるデータサイエンス】樹木モデル」の続き。
回帰木のケーススタディについて勉強する。
◎使用するデータ
車のスピードと停止距離を表すcarsデータを使用する。
speed dist 1 4 2 2 4 10 3 7 4 4 7 22 5 8 16
1.回帰木の作成
目的変数を距離(dist)とし、説明変数をスピード(speed)として関数rpartを使用して回帰木を作成する。
> (cars.rp<-rpart(dist~speed,data=cars)) n= 50 node), split, n, deviance, yval * denotes terminal node 1) root 50 32538.9800 42.98000 2) speed< 17.5 31 8306.7740 29.32258 4) speed< 12.5 15 1176.4000 18.20000 8) speed< 9.5 6 277.3333 10.66667 * 9) speed>=9.5 9 331.5556 23.22222 * 5) speed>=12.5 16 3535.0000 39.75000 * 3) speed>=17.5 19 9015.6840 65.26316 6) speed< 23.5 14 2846.8570 55.71429 12) speed>=18.5 10 1323.6000 52.20000 * 13) speed< 18.5 4 1091.0000 64.50000 * 7) speed>=23.5 5 1318.0000 92.00000 *
これから回帰木は6つの葉を持っていることが分かる。らしいが、私にはどこを見れば葉の数が分かるのか分からない!(追記)※がついているのが葉。コメントでr-de-rさんに教えてもらいました。
なので、次のplotcpの実行によって得られるグラフの上の横軸(Size of tree)を見て葉の数を知ることにする。
2.回帰木の剪定
剪定の必要性についての考察。
> plotcp(cars.rp)
成長させた回帰木を4つの葉に剪定する必要があることを示唆している。
そういうわけで、回帰木を4つの葉に剪定する。そのためには、関数pruneを使用する!
> cars.rp1<-prune(cars.rp,cp=0.044) > plot(cars.rp1,uniform=T,margin=0.05) > text(cars.rp1,use.n=T)