« 読了:「自発的隷従論」「ガリレオ裁判」「一揆の原理」 | メイン | 読了:Ture et al. (2005) 高血圧患者をいろんな手法で予測してみた »
2015年12月25日 (金)
仕事の都合で、シンプルな決定木・回帰木モデルをつくることがちょくちょくあるのだけれど、細かい手法選択の場面でいつも困惑する。CARTみたいな感じの二進木と、CHAIDの流れを汲んでゴリゴリ検定統計量をつかうタイプの方法、どういうときにどっちを使えばいいんだろう? 不勉強をさらすようで、恥ずかしいのだけど...
ま、そもそもRをつかっているのがいかんのだ、という説もありますわね。かつてRを使っていなかった時分には、SPSS AnswerTree 一択であった。CHAIDとCARTの両方が載っていて、深く考えずにその日の気分で使い分けるのである。あの平和な時代が懐かしい。
決定木モデルのRパッケージとして参考書でよく見かけるのは、rpart(Rの標準パッケージ), mvpart (開発がストップしている模様)、RWeka、あたりだと思う。いま手元にある Kuhn &Johnson本 (かのcaretパッケージの中の人の本)はC50をつかっている。
CRAN Task Viewの機械学習・統計的学習で、「再帰パーティショニング」の下を見ると、名前を挙げられているパッケージが実にたくさんあって、困惑してしまう。メモしておくと...
- rpart: 回帰、分類、生存分析のための木構造モデル。CART的木の計算におすすめ。
- tree: 回帰、分類、生存分析のための木構造モデル。
- Weka: パーティショニング・アルゴリズムの豊富なツールボックス。RWekaがインタフェイスを提供する。C4.5, M5のJ4.8的バージョンを提供。[←呪文みたいだが、いずれもアルゴリズムの名前]
- Cubist:ルール・ベースド・モデル。終端葉での線形回帰モデル、事例ベース修正、ブースティングを提供。
- C50: C5.0分類木、ルール・ベースド・モデル、それらのブースティング版。
- party: 不偏な変数選択と統計的停止規準の2つのアルゴリズムを実装。関数ctree()は、反応変数と入力変数の間の独立性を検証するノンパラ条件つき推論手続きに基づく。関数mob()はパラメトリックモデルのパーティションに使える。ほかに、二進木の視覚化、反応変数のノード分布の視覚化を提供。
- vcrpart: 木構造の変動係数モデル。
- LogicReg: 二値入力変数のための論理回帰。
- maptree: 木の視覚化ツール。
- REEMtree: ランダム効果によって縦断データをモデリングする木。
- RPMM: 混合モデルのパーティショニング。
- partykit: 木表現の計算インフラ、予測・視覚化の統一的手法を提供。
- evtree: 大域的に最適な木の進化的学習。[へええ?]
- oblique.tree: oblique木。[はああ?なにそれ?という感じだが、どうやらこういう話らしい。たとえばC4.5とかだと、それぞれのノードにおいて、その属性で分割したら情報利得がいちばん大きくなる属性をひとつだけ探す。つまり、属性空間をどこかの軸に直交する形で切っていくわけだ。いっぽうoblique木では、複数の属性の組み合わせをつかって、空間を斜めに切ることができるらしい。ふうん]
というわけで、いろいろあって頭が痛いが、mvpartなきいま、CART系ならrpartパッケージ、CHAID系ならpartyパッケージ、あたりが本命なのであろうか... できることならばすべての開発者のみなさまを鬼界ヶ島に流し、all-in-oneの統一的パッケージをつくるまで京に戻さない、というようなことをしたいものだ。
Hothorn, T., Hornik, K., Zeileis, A. party: A laboratory for Recursive Partytioning.
というわけで、partyパッケージのvignett。これまで深く考えずにノリで使っていたので、ちょっと反省して目を通した。
ま、途中で難しくってわけわかんなくなっちゃいましたけどね! あとで調べたら、もっとかみ砕いた解説が下川ほか「樹木構造接近法」に載ってましたけどね!
論文:データ解析(2015-) - 読了:Hothorn, et al. partyパッケージ (と愉快な仲間たち)