RPART(または一般的に決定木)でCP(コスト複雑度)値を計算する方法


9

私が理解していることから、rpart関数へのcp引数は、minsplitまたはminbucket引数と同じ方法でツリーを事前整理するのに役立ちます。CP値の計算方法がわかりません。例えば

df<-data.frame(x=c(1,2,3,3,3,4), y=as.factor(c(TRUE, TRUE, FALSE, TRUE, FALSE, FALSE)), method="class")
mytree<-rpart(y ~ x, data = df, minbucket = 1, minsplit=1)

結果のツリー...

mytree
n= 6 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

1) root 6 3 FALSE (0.5000000 0.5000000)  
  2) x>=2.5 4 1 FALSE (0.7500000 0.2500000) *
  3) x< 2.5 2 0 TRUE (0.0000000 1.0000000) *

概要...

summary(mytree)

Call:
rpart(formula = y ~ x, data = df, minbucket = 1, minsplit = 1)
  n= 6 

         CP nsplit rel error    xerror      xstd
1 0.6666667      0 1.0000000 2.0000000 0.0000000
2 0.0100000      1 0.3333333 0.6666667 0.3849002

.666と.01はどこから来るのですか?



これは、次のレベルのツリーへのrelエラーの減少です。多分別の説明があるかもしれませんが、私の意見では、私は単純なものを好む
クラウドコンピューティング18/06/15

回答:


2

何日もかけて同じものを探していたところ、cp値の計算がパッケージで行われていることを知りました。デフォルトでは、 "CP"値を指定しない場合、rpartは0.01と見なします。Cp値は、ノードをツリーに追加するコストです。


私はそれが次のフォームページ24来ていると思いますcran.r-project.org/web/packages/rpart/vignettes/longintro.pdf
user1700890

2

rpartの複雑性パラメーター(cp)は、各ノードで必要なモデルの最小の改善です。次のように定義されたモデルのコストの複雑さに基づいています ここに画像の説明を入力してください

指定されたツリーについて、すべての末端ノードでの誤分類を合計します。次に、分割数にペナルティ項(ラムダ)を掛けて、誤分類の合計に加えます。ラムダは交差検証によって決定され、Rでは報告されません。

回帰モデル(次のセクションを参照)の場合、スケーリングされたcpは非常に直接的に解釈されます。分割によってモデルの全体のR2が少なくともcp増加しない場合(R2は通常の線形モデルの定義です)、その分割は次のように決定されます。先験的に、追求する価値がない。rpartのlongintroドキュメントを参照してください


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.