Rについて
をベースに学んでいく。
今回はツリーモデル(PP.179-196)を扱う。
15. ツリーモデル
回帰分析、判別分析の一種として、回帰問題では回帰木、分類問題では分類木または決定木と呼ぶ。ツリーモデルでは説明変数の値を何らかの基準を基に分岐させ、判別・予測のモデルを構築する。
15.1 決定木モデルの基礎
ツリーモデルに関しては今日、をベースとしたアルゴリズムが広く用いられている。これらのアルゴリズムの種類ごとに大きく異なるのは木の成長と木の剪定のアルゴリズムである。
ではエントロピーとジニ係数
を用いて分岐点を計算する。
15.2 パッケージrpartの例
引数のオプション
応答変数 |
引数の書式 |
|
---|---|---|
一般の量的変数 | ||
ポアソン分布 | ||
質的変数 | ||
行列 | ||
距離 | ||
生存データオブジェクト |
クラスの主な関数
ツリーの図示 | |||
文字列の操作 | |||
交差確認の結果の図示 | |||
モデルによる当てはめ | |||
ツリーの出力 | |||
複雑さのパラメータ出力 | |||
ツリーの剪定 | |||
残差を返す | |||
ツリーをコントロール | |||
要約を返す |
15.3 シミュレーション例
############## ### 分類木 ### ############## library("rpart") iris_rp <- rpart(Species~., data = iris) str(iris_rp) print(iris_rp, digits = 2) # 分類木をVisualise plot(iris_rp, uniform = T, branch = 0.6, margin = 0.05) text(iris_rp, use.n = T, all = T) ### 木の剪定とコントロール ## CVの結果 # CP:複雑さのパラメータ # nsplit : 分岐の階数 # rel error:実際のエラー率 # xerror:交差確認のエラー率 # xstd: 交差確認のエラー率の標準偏差 printcp(iris_rp) ## 木の剪定: # 最小エラー率を基準とする方法 # 最小エラー率+1倍の標準偏差 Min+1SE set.seed(0) iris_rp2 <- rpart(Species~., data = iris, minsplit = 3, cp = 0.001) printcp(iris_rp2) plotcp(iris_rp2) iris_rp3 <- prune(iris_rp2, cp = 0.094) ### 判別 even_n <- seq(2,150,2) iris_train <- iris[even_n,] iris_test <- iris[-even_n,] set.seed(20) iris_rp2 <- rpart(Species~., iris_train) plotcp(iris_rp2) iris_rp3 <- predict(iris_rp2, iris_test[,-5],type = "class") table(iris_test[,5], iris_rp3) ### 回帰木 set.seed(0) cars_rp <- rpart(dist~speed, data = cars, minsplit = 3) printcp(cars_rp) plotcp(cars_rp) cars_rp1 <- prune(cars_rp, cp = 0.044) plot(cars_rp1, uniform = T, margin = 0.05) text(cars_rp1, use.n = T)