2014-01-08 15 views
14

私のデータセットと同様に、リーケージには2つの値1,0があります。 1つの行が300行ほどあり、569378行に余分な行が1つあります。これは、rpartの結果に1つのルートがあるという理由になります。rpartの結果はルートが1つだけです

どうすればこの問題を解決できますか?

fm.pipe<-Leakage~PipeAge +PipePressure 

> printcp(CART.fit) 

Regression tree: 
rpart(formula = fm.pipe, data = Data) 

Variables actually used in tree construction: 
character(0) 

Root node error: 299.84/569378 = 0.00052661 

n= 569378 

     CP nsplit rel error xerror xstd 
1 0.0033246  0   1  0 0 

答えて

20

独立変数がツリーを成長させるのに十分な情報を提供しない場合、これを "解決"する方法がないかもしれません。たとえば、rpart.controlのヘルプを参照してください: "全体の不足をcpだけ減らしていない分割は試行されません。"制御パラメータを緩めることもできますが、木が根を越えて成長する。

CART.fit <- rpart(formula=fm.pipe, data=Data, control=rpart.control(minsplit=2, minbucket=1, cp=0.001)) 
1

私のデータセットは14行しか含んでいません。次のコードを使用してみてください:

dtm<-rpart(playtennis~., weathe_train, method="class", minsplit=2, minbucket=1) 
4

私はあなたの行の長さの問題を理解していないが、ここでそのエラーが一般的に何を意味するのかです:

RPARTは、決定木を構築するために制約を使用しています。ここでthe docsから、デフォルト値です:あなたはこれらの制約を軽減する必要が

rpart.control(minsplit = 20, minbucket = round(minsplit/3), cp = 0.01, 
     maxcompete = 4, maxsurrogate = 5, usesurrogate = 2, xval = 10, 
     surrogatestyle = 0, maxdepth = 30, ...) 

。 @JeanVAdamsが言ったように、最低限で始まる:

rpart(formula=fm.pipe, data=Data, 
     control=rpart.control(minsplit=1, minbucket=1, cp=0.001)) 

あなたの最初の結果は、おそらくあまりにも多くのノードを持つことになりますので、あなたは、あなたがまともなサイズのツリーを取得するまで、ゆっくりとこれらの制約を構築する必要があります。


あなたはまだ混乱している場合は、ここで だ:

あなたは食料品店のデータを見ている、とあなたがお店に最も人気のある時間の木を見たいとしましょう。わずか24時間ですよね?したがって、独立変数には24の可能性しかありません。 Rpartには次のような状態があります

"ノードを分割するには少なくとも20個のものが必要です。"

これは、あなたのノードが一度に分割できないことを意味します。 150億行があっても、それを分割する方法は24通りしかありません。おそらくこれより複雑ですが、これは始めるのに適しています。

私は実際にこの正確な問題(時間による買い物客)を見ていた、と私はすべてのツリーを取得するために、可能な限り低いレベルでの私の制約を残していた:

rpart(formula=fm.pipe, data=Data, control=rpart.control(minsplit=1, minbucket=1, cp=0.001))

関連する問題