Her yaprakta lineer regresyon modelleri ile regresyon ağacı algoritması


14

Kısa versiyon: Karar ağacı oluşturabilen bir R paketi arıyorum, oysa karar ağacındaki her yaprak tam bir Doğrusal Regresyon modeli. AFAIK, kütüphane rpartbağımlı değişkenin her yaprakta sabit olduğu karar ağaçları oluşturur. Bu rpartağaçları inşa edebilecek başka bir kütüphane (veya farkında olmadığım bir ortam) var mı?

Uzun sürüm: Bir eğitim veri kümesine dayalı bir karar ağacı oluşturan bir algoritma arıyorum. Ağaçtaki her karar, bağımsız değişkenlerden birinin durumuna göre eğitim verilerini iki kısma ayırır. Ağacın kökü tam veri kümesini içerir ve veri kümesindeki her öğe tam olarak bir yaprak düğümünde bulunur.

Algoritma şöyle gider:

  1. Ağacın kök düğümü olan tam veri kümesiyle başlayın. Bu düğümü seçin ve .N
  2. Verilere Doğrusal regresyon modeli oluşturma .N
  3. Eğer arasında 'nın lineer model bir eşik değerinden daha yüksek olduğu , sonra yapılır konum , böylece işaretlemek adım 5, bir yaprağın ve atlama olarak. N θ R 2 N NR2NθR2NN
  4. Deneyin rasgele kararlar ve en iyi sonuçlar bir çekme subnodes içinde: R ' 2nR2
    • Rastgele bağımsız bir değişken ve rastgele bir eşik .θ iviθi
    • kararı , veri kümesini ve üzere iki yeni düğüme böler . K K ~ KviθiNN^N~
    • Hem hem de üzerinde Doğrusal Regresyon modelleri oluşturun ve hesaplayın (bunlara ve deyin ). ~ K R2 R ~ rN^N~R2r^r~
    • Tüm bu kaynaktan dizilerini , maksimal ile birini seçmek . Bu, ağaçta yeni bir karar verir ve iki yeni alt düğümü vardır ve .( v ı , θ i , r , ~ r ) m ı n ( r , ~ r ) K K ~ Kn(vi,θi,r^,r~)min(r^,r~)NN^N~
  5. işlemeyi bitirdik . Henüz işlenmemiş yeni bir düğüm seçin ve 2. adıma geri dönün. Tüm düğümler işlenmişse, algoritma sona erer.NNN

Bu, verileri daha küçük parçalara ayıran ve bu parçaların her biri için bir Doğrusal Model hesaplayan bir özyinelemeli ağaç oluşturacaktır.

Adım 3, algoritmanın aşırı sığmasını önleyen çıkış koşuludur. Tabii ki, başka olası çıkış koşulları da var:

  • Çıkış halinde ağacında sitesindeki derinliği üzerindeθ d e p t hNθdepth
  • Çıkış veri grubu ise küçükseθ d a t a s e tNθdataset

R paketinde böyle bir algoritma var mı?


4
Parti paketine bir göz atın ve bunun ihtiyaçlarınıza uygun olup olmadığını görün. IIRC ağaçlarının düğümlerinde bir dizi model işleyebilir.
Monica'yı eski durumuna getirin - G. Simpson

Yanıtlar:


11

Algoritmanızdan farklı çalışırken, mob () ve FTtree'yi ilginç bulacağınıza inanıyorum. Zeileis'in çetesi için bkz. Http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf Gama'nın fonksiyonel ağaçları FTama için Weka ve dolayısıyla RWeka'da bir uygulama mevcuttur. Ayrıntılar için http://cran.r-project.org/web/packages/RWeka/index.html adresine bakın.


1
Neredeyse her modeli özyinelemeli bölümleme çerçevesine bağlamaya izin veren mafya için +1
etov

8

RWeka paketi birçok regresyon yöntemi sunar. Bunlar arasında, yapraklarda doğrusal denklemlerle tam olarak ağaç tabanlı regresyon modeli olan M5P'yi (M5 Prime) bulabilirsiniz. M5 yöntemi hakkında daha fazla bilgi için yayına bakın .

Örnek bir kod şöyle olabilir:

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)

Torbalama grubunu M5 yöntemiyle kullanmak istiyorsanız, aşağıdakileri deneyin:

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

M5P modeli için kontrol seçeneklerini görmek için şunu deneyin:

WOW(M5P)

M5 yöntemini optimize etmek istiyorsanız, caretpakette bunun için bir çözüm var :

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.