Thuật toán cây hồi quy với mô hình hồi quy tuyến tính trong mỗi lá


14

Phiên bản ngắn: Tôi đang tìm kiếm một gói R có thể xây dựng các cây quyết định trong khi mỗi lá trong cây quyết định là một mô hình hồi quy tuyến tính đầy đủ. AFAIK, thư viện rparttạo ra các cây quyết định trong đó biến phụ thuộc không đổi trong mỗi lá. Có thư viện nào khác (hoặc một rpartthiết lập mà tôi không biết) có thể xây dựng những cây như vậy không?

Phiên bản dài: Tôi đang tìm kiếm một thuật toán xây dựng cây quyết định dựa trên tập dữ liệu huấn luyện. Mỗi quyết định trong cây chia dữ liệu huấn luyện thành hai phần, theo một điều kiện trên một trong các biến độc lập. Phần gốc của cây chứa tập dữ liệu đầy đủ và mỗi mục trong tập dữ liệu được chứa chính xác trong một nút lá.

Thuật toán diễn ra như sau:

  1. Bắt đầu với tập dữ liệu đầy đủ, là nút gốc của cây. Chọn nút này và gọi nó là .N
  2. Tạo một mô hình Linear Regression trên các dữ liệu trong .N
  3. Nếu của mô hình tuyến tính của N cao hơn một số ngưỡng θ R 2 , thì chúng ta đã hoàn thành với N , vì vậy hãy đánh dấu N là một chiếc lá và nhảy sang bước 5.R2NθR2NN
  4. Hãy thử quyết định ngẫu nhiên và chọn một quyết định mang lại R 2 tốt nhất trong các mã con: nR2
    • Chọn một biến độc lập ngẫu nhiên , cũng như ngưỡng ngẫu nhiên θ i .viθi
    • Quyết định chia tập dữ liệu của N vào hai nút mới, N~ N .viθiNN^N~
    • Tạo mô hình Linear Regression trên cả N~ N , và tính toán của họ R 2 (gọi họ r~ r ).N^N~R2r^r~
    • Từ tất cả những tuples ( v i , θ i , r , ~ r ) , chọn một với tối đa m i n ( r , ~ r ) . Điều này mang lại một quyết định mới trong cây, và N có hai subnodes mới N~ N .n(vi,θi,r^,r~)min(r^,r~)NN^N~
  5. Chúng tôi có chế biến thành . Chọn một nút N mới chưa được xử lý và quay lại bước 2. Nếu tất cả các nút đã được xử lý, thuật toán kết thúc.NN

Điều này sẽ xây dựng đệ quy một cây quyết định phân chia dữ liệu thành các phần nhỏ hơn và tính toán Mô hình tuyến tính trên mỗi phần đó.

Bước 3 là điều kiện thoát, điều này ngăn thuật toán quá mức. Tất nhiên, có những điều kiện thoát khác có thể:

  • Thoát nếu chiều sâu 's trong cây là trên θ d e p t hNθdepth
  • Thoát nếu dữ liệu được đặt trong nhỏ hơn θ d a t a s e tNθdataset

Có một thuật toán như vậy trong một gói R?


4
Hãy xem gói tiệc và xem điều này có phù hợp với nhu cầu của bạn không. Nó có thể xử lý một số loại mô hình trong các nút của cây IIRC.
Phục hồi Monica - G. Simpson

Câu trả lời:


11

Mặc dù chúng hoạt động khác với thuật toán của bạn, tôi tin rằng bạn sẽ thấy mob () và FTtree thú vị. Đối với mob của Zeileis, hãy xem http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf Đối với FTtree, các cây chức năng của Gama có sẵn trong Weka và do đó Rweka. Xem http://cran.r-project.org/web/packages/Rweka/index.html để biết chi tiết.


1
+1 cho mob, cho phép cắm hầu hết mọi mô hình vào khung phân vùng đệ quy
etov

8

Gói Rweka cung cấp nhiều phương pháp hồi quy. Trong số đó, bạn có thể tìm thấy M5P (M5 Prime), đây là mô hình hồi quy dựa trên cây chính xác với các phương trình tuyến tính trong lá. Để biết thêm chi tiết về phương pháp M5, xem ấn phẩm .

Một mã ví dụ sẽ là:

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)

Nếu bạn muốn sử dụng đồng phục đóng bao với phương pháp M5, hãy thử một số thứ như:

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

Để xem các tùy chọn điều khiển cho mô hình M5P, hãy thử:

WOW(M5P)

Nếu bạn muốn tối ưu hóa phương thức M5, có một giải pháp cho caretgói đó:

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

7

Tôi nghĩ rằng điều này trả lời phiên bản ngắn của câu hỏi của bạn:

Các Lập thể phù hợp gói cai trị dựa trên mô hình (tương tự như cây) với mô hình tuyến tính hồi quy trong lá bị đầu cuối, sửa chữa dụ dựa trên và thúc đẩy.

Từ khung nhìn tác vụ Cran: Machine Learning


Bạn có biết liệu đây có phải (tương tự) M5 của Quinlan không?
Momo

Tôi biết điều này tương tự với M5 của Quinlan, theo như Cubist của Quinlan tương tự như M5 của Quinlan .
Jack Ryan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.