各葉に線形回帰モデルを使用した回帰ツリーアルゴリズム


14

短いバージョン:意思決定ツリーを構築できるRパッケージを探していますが、意思決定ツリーの各リーフは完全な線形回帰モデルです。知る限り、ライブラリrpartは、各リーフで従属変数が定数である決定木を作成します。rpartそのようなツリーを構築できる別のライブラリ(または私が知らない設定)はありますか?

ロングバージョン:トレーニングデータセットに基づいて決定木を構築するアルゴリズムを探しています。ツリー内の各決定は、独立変数の1つの条件に従って、トレーニングデータセットを2つの部分に分割します。ツリーのルートには完全なデータセットが含まれ、データセットの各アイテムは1つのリーフノードに含まれています。

アルゴリズムは次のようになります。

  1. ツリーのルートノードである完全なデータセットから始めます。このノードを選択してと呼びますN
  2. のデータに線形回帰モデルを作成します。N
  3. 場合はのさん線形モデルがある閾値以上である、そして、我々が行われている、そのマークステップ5に葉やジャンプなど。 N θ R 2 N NR2NθR2NN
  4. ランダムな決定を試して、サブノードで最適なを生成するものを選択します。 R 2nR2
    • ランダムな独立変数と、ランダムなしきい値ます。θ Iviθi
    • 決定は、のデータセットを2つの新しいノードおよび分割します。 N N NviθiNN^N~
    • と両方で線形回帰モデルを作成し、それらのを計算します(それらをおよびと呼びます)。 N R2、R RN^N~R2r^r~
    • それらすべてのタプルから、最大持つものを選択します。これによりツリーで新しい決定が行われ、は2つの新しいサブノードおよび\ tilde {N}が追加されます。V Iθ IRR)は、mは、I N RRN N Nn(vi,θi,r^,r~)min(r^,r~)NN^N~
  5. 処理が完了しました。まだ処理されていない新しいノードを選択し、手順2に戻ります。すべてのノードが処理された場合、アルゴリズムは終了します。NNN

これにより、データを小さな部分に分割し、各部分の線形モデルを計算する決定ツリーが再帰的に構築されます。

ステップ3は終了条件であり、アルゴリズムが過剰適合するのを防ぎます。もちろん、他の可能な終了条件があります。

  • ツリーのの深さが超える場合は終了しNθdepth
  • のデータセットがより小さい場合は終了しますNθdataset

Rパッケージにそのようなアルゴリズムはありますか?


4
見てくださいパーティのパッケージを、これはあなたのニーズに合ったかどうかを確認します。ツリーIIRCのノードで多くのタイプのモデルを処理できます。
モニカの復職-G.シンプソン

回答:


11

アルゴリズムとは動作が異なりますが、mob()とFTtreeは興味深いものになると思います。Zeileisの暴徒については、http: //cran.r-project.org/web/packages/party/vignettes/MOB.pdfを参照してください。FTtree、Gamaの機能ツリーの実装は、Weka、したがってRWekaで利用できます。詳細については、http://cran.r-project.org/web/packages/RWeka/index.htmlを参照してください。


1
再帰分割フレームワークにほぼすべてのモデルを塞ぐ可能MOBため+1、
etov

8

RWekaパッケージは多くの回帰方法を提供します。中でも、M5P(M5 Prime)を見つけることができます。これは、葉に一次方程式があるツリーベースの回帰モデルです。M5メソッドの詳細については、資料を参照してください。

コード例は次のとおりです。

library(RWeka)
M5_model = M5P (Dep_var ~ ., data = train, control = Weka_control(N=F, M=10))
train_predicted = predict(M5_model, train)
test_predicted = predict(M5_model, test)

M5メソッドでバギングアンサンブルを使用する場合は、次のようにします。

M5_bag = Bagging(Dep_var ~ ., data = train, control = Weka_control(P=100, I = 100, W = list("weka.classifiers.trees.M5P", M = 4)))

M5Pモデルの制御オプションを確認するには、次を試してください。

WOW(M5P)

M5メソッドを最適化する場合は、caretパッケージにその解決策があります。

library(caret)
Optimization = train (Dep_var ~ .,data = train, method = 'M5')

7

これはあなたの質問の短いバージョンに答えると思います:

キュビズム パッケージは、ターミナル葉の線形回帰モデルで(樹木と同様)、ルールベースのモデルに適合し、インスタンス・ベースの修正と後押し。

Cranタスクビューから:機械学習


これがQuinlanのM5(に似ている)かどうか知っていますか?
モモ14

Quinlan's CubistがQuinlan's M5に類似している限り、これはQuinlanのM5に類似していることを知っています。
ジャックライアン14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.