Lựa chọn tính năng và điều chỉnh tham số với dấu mũ cho rừng ngẫu nhiên


12

Tôi có dữ liệu với một vài nghìn tính năng và tôi muốn thực hiện lựa chọn tính năng đệ quy (RFE) để loại bỏ các tính năng không chính xác. Tôi làm điều này với caret và RFE. Tuy nhiên, tôi bắt đầu suy nghĩ, nếu tôi muốn có được hồi quy phù hợp nhất (ví dụ rừng ngẫu nhiên), khi nào tôi nên thực hiện điều chỉnh tham số ( mtrycho RF)? Đó là, như tôi hiểu caret đào tạo RF liên tục trên các tập hợp tính năng khác nhau với một mtry cố định. Tôi cho rằng tối ưu mtrysẽ được tìm thấy sau khi lựa chọn tính năng kết thúc, nhưng liệu mtrygiá trị mà caret sử dụng có ảnh hưởng đến tập hợp con các tính năng được chọn không? Sử dụng caret với mức thấp mtrylà nhanh hơn nhiều, tất nhiên.

Hy vọng ai đó có thể giải thích điều này với tôi.


2
RF có một lựa chọn tính năng tích hợp mạnh mẽ - không cần sử dụng RFE để người ta có thể điều chỉnh mtry và được thực hiện với nó.
Yevgeny

Câu trả lời:


11

Một điều bạn có thể muốn xem xét là các khu rừng ngẫu nhiên thường xuyên, được thiết kế đặc biệt để lựa chọn tính năng. Bài viết này giải thích khái niệm và cách chúng khác với các khu rừng ngẫu nhiên bình thường

Lựa chọn tính năng thông qua cây thường xuyên

Ngoài ra còn có gói CRF RRF được xây dựng trên RandomForest cho phép bạn thực hiện chúng dễ dàng trong R. Tôi đã gặp may mắn với phương pháp này.

Về câu hỏi ban đầu của bạn, lời khuyên duy nhất tôi có thể đưa ra là nếu bạn có nhiều cộng tác thì bạn cần sử dụng kích thước cây nhỏ hơn. Điều này cho phép thuật toán xác định tầm quan trọng với ít nhiễu hơn từ các hiệu ứng cộng tuyến.


1

Bạn có thể sử dụng caretFuncs cái gì đó như thế này:

myRFE <- caretFuncs
myRFE$summary <- twoClassSummary  (default is defaultSummary)

rctrl <- rfeControl(method='repeatedcv', repeats=5, number=10,
                   functions=myRFE)

tctrl <- trainControl(method = "cv",
                      classProbs = TRUE,
                      summaryFunction = twoClassSummary)

rfeObj = rfe(x,y,sizes=seq(1,ncol(x),2),
             rfeControl=rctrl,  
             # to be passed to train()
             method='rf',
             importance=T,  # do not forget this
             ntree=1000,
             metric = "ROC",
             tuneLength = 10,
             # mtry=c(1,3,5,50),
             # specify the exact mtry, or tuneLength
             # can auto truncate the grid to minimal sizes (with or without warning)
             # p <- ncol(x) ... if (mtry < 1 || mtry > p) warning("invalid try: reset to within valid range") try <- max(1, min(p, round(try))) 
             trControl=tctrl)

Ngoài ra, người ta có thể kiểm tra valSelRFgói. Không chắc nó khác với regularized random forestđề cập ở đây như thế nào .

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.