2

約 54K レコードのデータ セットと 5 つのクラス (ポップ) を使用していますが、そのうちの 1 つのクラスは重要ではありません。キャレット パッケージと以下を使用して rpart を実行しています。

model <- train(pop ~ pe + chl_small, method = "rpart", data = training)

次のツリーを取得します。

n= 54259 

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

1) root 54259 38614 pico (0.0014 0.18 0.29 0.25 0.28)  
 2) pe< 5004 39537 23961 pico (0 0.22 0.39 2.5e-05 0.38)  
  4) chl_small< 32070.5 16948  2900 pico (0 0.00012 0.83 5.9e-05 0.17) *
  5) chl_small>=32070.5 22589 10281 ultra (0 0.39 0.068 0 0.54) *
3) pe>=5004 14722  1113 synecho (0.0052 0.052 0.0047 0.92 0.013) *

ノード 5 をさらに分割する必要があることは明らかですが、rpart はそれを行っていません。cp = .001tocp =.1と as も追加パラメータとして使ってみましminbucket = 1000たが、改善されませんでした。

これに関する助けに感謝します。

4

1 に答える 1

0

さらに小さいcp=0.00001またはでモデルを実行してみてくださいcp = -1。そのノードがまだ分割されていない場合は、分割によって全体的な適合が改善されないことを意味します。

また、分割基準をデフォルトの Gini 不純度から情報取得基準に変更してみることができます。parms = list(split = "information")

強制的に分割する場合は、簡単なチェックを行うことをお勧めします。元のモデルと小さいモデルのトレーニング セットとテスト セットの精度を比較しますcp

元のモデルのトレーニングとテストの差がはるかに小さい場合、他のモデルはおそらくデータに過適合しています。

于 2016-09-01T10:26:34.717 に答える