行の長さの問題を理解しているかどうかはわかりませんが、そのエラーが通常意味することは次のとおりです。
rpart は、制約を使用して決定木を構築します。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))