分類ツリー(rpart内)を一連のルールに編成していますか?


11

(Rの)rpartを使用して複雑な分類ツリーが構築されたら、各クラスに対して生成された決定ルールを整理する方法はありますか?では、1つの巨大なツリーを取得する代わりに、クラスごとに一連のルールを取得しますか?

(もしそうなら、どうですか?)

以下に、例を示す簡単なコード例を示します。

fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)

ありがとう。

回答:


9

コマンドラインからのみ確認したものの、RJournal 1/2 2009(p。50)で説明されているように、そのような機能(または近い機能)はラトルパッケージで利用できるようです。

たとえば、次の出力が生成されます。

 Rule number: 3 [Kyphosis=present cover=19 (23%) prob=0.58]
   Start< 8.5

 Rule number: 23 [Kyphosis=present cover=7 (9%) prob=0.57]
   Start>=8.5
   Start< 14.5
   Age>=55
   Age< 111

 Rule number: 22 [Kyphosis=absent cover=14 (17%) prob=0.14]
   Start>=8.5
   Start< 14.5
   Age>=55
   Age>=111

 Rule number: 10 [Kyphosis=absent cover=12 (15%) prob=0.00]
   Start>=8.5
   Start< 14.5
   Age< 55

 Rule number: 4 [Kyphosis=absent cover=29 (36%) prob=0.00]
   Start>=8.5
   Start>=14.5

この出力を取得rattle/R/rpart.RするにRtxt()は、asRules.rpart()関数内の2つの呼び出しを削除した後、ワークスペースにソースファイルを(ソースパッケージから)ソースします(これをで置き換えることもできますprint)。次に、入力するだけです

> asRules(fit)

非終端リーフのルールも印刷することは可能ですか?
user1700890

3

rpart.plotの パッケージのバージョン3.0(2018年7月)は、機能を有している rpart.rules木のためのルールのセットを生成するために。例えば

library(rpart.plot)
fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)
rpart.rules(fit)

与える

Kyphosis
    0.00 when Start >=      15
    0.00 when Start is 9 to 15 & Age <  55
    0.14 when Start is 9 to 15 & Age >=       111
    0.57 when Start is 9 to 15 & Age is 55 to 111
    0.58 when Start <  9

その他の例については、rpart.plotビネットの第4章を参照してください 。


恐ろしい参照が、次のルールにも葉の数を持っていることは非常に参考になる
user1700890

1
rpart.rules(fit, nn=TRUE)ノード番号(別名リーフ番号)を取得するために使用します。
スティーブンミルボロー2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.