rpart()
2 つ以上のカテゴリの応答を完全に処理できます。試す:
require(rpart)
mod <- rpart(Species ~ ., data = iris)
mod
plot(mod)
text(mod)
デフォルト設定を使用して実行すると、3 つのターミナル ノードを持つツリーが生成されます。
R> mod
n= 150
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 150 100 setosa (0.33333333 0.33333333 0.33333333)
2) Petal.Length< 2.45 50 0 setosa (1.00000000 0.00000000 0.00000000) *
3) Petal.Length>=2.45 100 50 versicolor (0.00000000 0.50000000 0.50000000)
6) Petal.Width< 1.75 54 5 versicolor (0.00000000 0.90740741 0.09259259) *
7) Petal.Width>=1.75 46 1 virginica (0.00000000 0.02173913 0.97826087) *
再帰的パーティショニング アルゴリズムは、特定の停止ルールが満たされるとツリーの構築を停止します (ノードが [単一のクラスの] 純粋な場合、ポイント分割はありません。デフォルトでは、ノードは分割されるために 20 以上の観測値を持っている必要があります。 、また、特定のノードの観測値が 7 未満の場合、またはそれ以上分割しない場合は、適合の欠如が 0.01 倍に改善されるなど)、そのノードの分割を停止します)。これらの一部は、rpart.control()
関数から制御できます。
あなたが私たちに提供した限られた情報から、これらのデフォルトはあなたのデータセットには不適切であり、それに応じて調整する必要があると結論付けることができます.
ctrl <- rpart.control(minsplit = 2, minbucket = 1, cp = 0.00001)
mod2 <- rpart(Species ~ ., data = iris, control = ctrl)
mod2
plot(mod2)
text(mod2)
この例のデータセットでは、はるかに大きなツリーが生成されます。
R> mod2
n= 150
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 150 100 setosa (0.33333333 0.33333333 0.33333333)
2) Petal.Length< 2.45 50 0 setosa (1.00000000 0.00000000 0.00000000) *
3) Petal.Length>=2.45 100 50 versicolor (0.00000000 0.50000000 0.50000000)
6) Petal.Width< 1.75 54 5 versicolor (0.00000000 0.90740741 0.09259259)
12) Petal.Length< 4.95 48 1 versicolor (0.00000000 0.97916667 0.02083333)
24) Petal.Width< 1.65 47 0 versicolor (0.00000000 1.00000000 0.00000000) *
25) Petal.Width>=1.65 1 0 virginica (0.00000000 0.00000000 1.00000000) *
13) Petal.Length>=4.95 6 2 virginica (0.00000000 0.33333333 0.66666667)
26) Petal.Width>=1.55 3 1 versicolor (0.00000000 0.66666667 0.33333333)
52) Sepal.Length< 6.95 2 0 versicolor (0.00000000 1.00000000 0.00000000) *
53) Sepal.Length>=6.95 1 0 virginica (0.00000000 0.00000000 1.00000000) *
27) Petal.Width< 1.55 3 0 virginica (0.00000000 0.00000000 1.00000000) *
7) Petal.Width>=1.75 46 1 virginica (0.00000000 0.02173913 0.97826087)
14) Petal.Length< 4.85 3 1 virginica (0.00000000 0.33333333 0.66666667)
28) Sepal.Length< 5.95 1 0 versicolor (0.00000000 1.00000000 0.00000000) *
29) Sepal.Length>=5.95 2 0 virginica (0.00000000 0.00000000 1.00000000) *
15) Petal.Length>=4.85 43 0 virginica (0.00000000 0.00000000 1.00000000) *
しかし、データに過剰に適合している可能性が最も高いです。
rpart()
とは言うものの、もちろん、 2 つ以上のレベルで応答を処理できるように、ツリーをデータセットに適合させることができる他のパッケージがあります。主なものは CRAN のMachine Learning & Statistical Learning Task View にリストされているので、参照してください。そのようなパッケージの 1 つがpartyです。