決定木のRパッケージについて
教科書
- 作者: Trevor Hastie,Robert Tibshirani,Jerome Friedman
- 出版社/メーカー: Springer
- 発売日: 2009/03
- メディア: ハードカバー
- 購入: 1人 クリック: 222回
- この商品を含むブログ (16件) を見る
Classification and Regression Trees (Wadsworth Statistics/Probability)
- 作者: Leo Breiman,Jerome Friedman,Charles J. Stone,R.A. Olshen
- 出版社/メーカー: Chapman and Hall/CRC
- 発売日: 1984/01/01
- メディア: ペーパーバック
- 購入: 2人 クリック: 64回
- この商品を含むブログ (1件) を見る
- 作者: Brian S.Everitt,Torsten Hothorn,大門貴志,吉川俊博,手良向聡
- 出版社/メーカー: メディカル・パブリケーションズ
- 発売日: 2010/04
- メディア: 単行本
- 購入: 20人 クリック: 744回
- この商品を含むブログ (6件) を見る
決定木のアルゴリズムはこれらが代表的です。
Rのどのパッケージで何が出来るかを紹介します。
- partykit
- https://r-forge.r-project.org/R/?group_id=261 、可視化に便利(グラフが綺麗)
- mvpart
- rpartに拡張機能を追加
- rpart
- party
- randomForest
- CARTでのバッギングアンサンブル
- C5.0
- https://r-forge.r-project.org/R/?group_id=1022 (winインストールできなかった)
- 木が作られたあとに決定ルールが単純化される
- 単純化されたルールは木の形にならない場合もある
- wiki:http://ja.wikipedia.org/wiki/C4.5
- C5.0ソフト:http://www.rulequest.com/see5-info.html
- CAHID
- https://r-forge.r-project.org/R/?group_id=343
- 枝を複数に分けれる
- Both response and all covariates are assumed to be categorical(説明変数も結果変数も全てカテゴリにする必要がある、計算時間が長い)
- RWeka
- J4.8、M5’、LMT
- knnTree
- k近傍木
- LogicReg
- 論理回帰
- BayesTree
- ベイズ木
- TWIX
- extra tree、Response must be a factor!!(結果変数は因子のみ)
- Cubist
- cubist
- randomSurvivalForest
- 生存時間ランダムフォレスト
- gbm
- 一般化ブースティング木
- mboost
それぞれのパッケージの実行例です。
library(mboost) # bodyfatデータ用 #------rpart library(rpart) bodyfat_rpart <- rpart(DEXfat ~ age + waistcirc + hipcirc + elbowbreadth + kneebreadth, data = bodyfat, control = rpart.control(minsplit = 10)) #---普通のプロット plot(bodyfat_rpart) text(bodyfat_rpart, use.n=T) #---partykitのプロット library(partykit) plot(as.party(bodyfat_rpart), tp_args = list(id = FALSE)) #tp_argsでnode idの表示 #------ランダムフォレスト、caretで並列計算 (vignettも良い http://cran.r-project.org/web/packages/caret/index.html) library(randomForest) bodyfat_rf <-randomForest(DEXfat ~ age + waistcirc + hipcirc + elbowbreadth + kneebreadth, data = bodyfat, importance=TRUE) varImpPlot(bodyfat_rf) #------mvpart library(mvpart) #------partyの条件付き分割 bodyfat_ctree <- ctree(DEXfat ~ age + waistcirc + hipcirc + elbowbreadth + kneebreadth, data = bodyfat) plot(bodyfat_ctree) #------mboost bodyfat.gb <- blackboost(DEXfat ~ age + waistcirc + hipcirc + elbowbreadth + kneebreadth, data = bodyfat, control = boost_control(mstop = 50)) plot(bodyfat.gb) #------CHAID(結構時間がかかる、699obs 11varで30秒程度、カイD) library(CHAID) library(mlbench) data("BreastCancer", package = "mlbench") b_chaid <- chaid(Class ~ Cl.thickness + Cell.size + Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer) plot(b_chaid) #------TWIX library(TWIX) TM <- TWIX(Class ~ Cl.thickness + Cell.size + Cell.shape + Marg.adhesion + Epith.c.size + Bare.nuclei + Bl.cromatin + Normal.nucleoli + Mitoses, data = BreastCancer, topN=c(9,9), method="local") plot(TM)