So sánh bình phương R từ hai mô hình Rừng ngẫu nhiên khác nhau


10

Tôi đang sử dụng gói RandomForest trong R để phát triển mô hình rừng ngẫu nhiên để cố gắng giải thích kết quả liên tục trong bộ dữ liệu "rộng" với nhiều dự đoán hơn mẫu.

Cụ thể, tôi phù hợp với một mô hình RF cho phép quy trình chọn từ một bộ ~ 75 biến dự đoán mà tôi nghĩ là quan trọng.

Tôi đang kiểm tra xem mô hình đó dự đoán kết quả thực tế như thế nào cho một bộ thử nghiệm dành riêng, sử dụng phương pháp được đăng ở đây trước đó , cụ thể là,

... hoặc trong R:

1 - sum((y-predicted)^2)/sum((y-mean(y))^2)

Nhưng bây giờ tôi có thêm ~ 25 biến dự đoán mà tôi có thể thêm. Khi sử dụng bộ ~ 100 dự đoán, R² cao hơn. Tôi muốn kiểm tra thống kê này, nói cách khác, khi sử dụng bộ ~ 100 dự đoán, kiểm tra mô hình tốt hơn đáng kể trong dữ liệu kiểm tra so với mô hình phù hợp sử dụng ~ 75 dự đoán hay không. Tức là, R² từ việc kiểm tra mô hình RF phù hợp với tập dữ liệu đầy đủ cao hơn đáng kể so với R² từ việc kiểm tra mô hình RF trên tập dữ liệu rút gọn.

Đây là điều quan trọng đối với tôi để kiểm tra, bởi vì đây là dữ liệu thí điểm và việc có thêm 25 dự đoán đó là tốn kém, và tôi cần biết liệu tôi có nên trả tiền để đo lường những dự đoán đó trong một nghiên cứu tiếp theo lớn hơn hay không.

Tôi đang cố gắng nghĩ về một số cách tiếp cận thay đổi / hoán vị nhưng không có gì xuất hiện trong tâm trí.

Câu trả lời:


8

Xác thực chéo! Sử dụng chức năng đào tạo trong caret để phù hợp với 2 mô hình của bạn. Sử dụng một giá trị của mtry (giống nhau cho cả hai mô hình). Caret sẽ trả về ước tính được lấy mẫu lại của RMSE và .R2

Xem trang 3 của họa tiết caret (cũng trong hướng dẫn tham khảo đầy đủ )


Tôi đồng ý ngoại trừ thiếu sót của bạn rằng OP nên sử dụng R-squared điều chỉnh, vì đây là những gì nó được thiết kế cho. Các mô hình có cùng Y nhưng các bộ dự đoán khác nhau, do đó, điều chỉnh bình phương R là cần thiết để xử phạt sự khác biệt về mức độ tự do / độ phức tạp của mô hình. Vấn đề khác tôi thấy có khả năng là một vấn đề kích thước mẫu; OP sẽ yêu cầu cỡ mẫu MASSIVE để có bất kỳ loại hy vọng thực sự nào, đây không chỉ là quá mức, ngay cả với CV.
LSC

@LSC Tôi sẽ nói rằng nếu giữ một bộ dữ liệu bổ sung (không được sử dụng để lựa chọn), họ có thể sử dụng R2 mà không cần điều chỉnh, vì RMSE chỉ được chuẩn hóa. Tôi đồng ý rằng họ cần một bộ dữ liệu khá lớn để làm điều này.
Zach

dữ liệu mới hoặc cũ, tất cả đều khác, đặt 100 thuật ngữ trong một mô hình so với 25 sẽ có bình phương R không được điều chỉnh cao hơn khi so sánh với R bình phương từ mô hình dự đoán 25. Điều này có thể dễ dàng nhận thấy khi tính toán tổng các lỗi bình phương giữa hai (nhiều thuật ngữ là SSE thấp hơn, tất cả các thứ khác đều giống nhau). Tôi nghĩ mọi người thường quên rằng nhiều thuật ngữ sẽ không bao giờ giảm bình phương R, nhưng nếu chúng hôi thối so với giá trị của chúng, chúng có thể giảm bình phương R đã điều chỉnh, đó là một biện pháp tốt hơn để sử dụng để xem xét vụ nổ.
LSC

"nhiều thuật ngữ hơn sẽ không bao giờ giảm bình phương R" <- Tuyên bố này là sai, khi tính toán R2 ra khỏi mẫu.
Zach

Như tôi đã đề cập, tôi chỉ ra điều đó bởi vì nhiều người hỏi những câu hỏi này không nhớ ý tưởng này ngay từ đầu. Tôi nghĩ rằng việc hiểu tại sao điều này là đúng trong mẫu và có thể không giữ dữ liệu mới là điều quan trọng để hiểu điều gì và làm thế nào một cái gì đó được tối ưu hóa trong phương trình ban đầu.
LSC

4

Tôi đồng ý với Zach rằng ý tưởng tốt nhất là xác thực chéo cả hai mô hình và sau đó so sánh s bằng cách thu thập các giá trị từ mỗi lần và so sánh các vectơ kết quả với phép thử Wilcoxon (được ghép đôi cho k-Fold, ghép đôi ngẫu nhiên CV).R2

Tùy chọn bên cạnh là sử dụng tất cả các lựa chọn tính năng có liên quan, điều gì sẽ cho bạn biết thuộc tính nào có cơ hội hữu ích đáng kể để phân loại - do đó, thời tiết những thuộc tính đắt tiền đó đáng giá. Nó có thể được thực hiện ví dụ với trình bao bọc RF, Boruta .


Đối với một bài kiểm tra ghép nối, tôi giả sử rằng 2 mô hình phù hợp trên cùng một nếp gấp? Vậy các hàng k của matrx là các nếp gấp và hai cột là mô hình 1 và mô hình 2?
B_Miner

@B_Miner Chính xác.

1

Bạn có thể muốn nghĩ về ý nghĩa thực tế hơn là ý nghĩa thống kê (hoặc cả hai). Với đủ dữ liệu, bạn có thể tìm thấy những thứ có ý nghĩa thống kê sẽ không có tác động thực sự đến việc sử dụng của bạn. Tôi nhớ đã từng phân tích một mô hình trong đó các tương tác 5 chiều có ý nghĩa thống kê, nhưng khi các dự đoán từ mô hình bao gồm mọi thứ lên đến các tương tác 5 chiều được so sánh với các dự đoán từ một mô hình chỉ bao gồm các tương tác 2 chiều và các hiệu ứng chính , sự khác biệt lớn nhất là ít hơn 1 người (phản hồi là số người và tất cả các giá trị thú vị đều cách xa 0). Vì vậy, sự phức tạp thêm vào không đáng có. Vì vậy, hãy nhìn vào sự khác biệt trong dự đoán của bạn để xem sự khác biệt đó có đủ để biện minh cho chi phí thêm không, Nếu không thì tại sao phải bận tâm thậm chí tìm kiếm ý nghĩa thống kê? Nếu sự khác biệt đủ lớn để biện minh cho chi phí nếu chúng là có thật, thì tôi thứ hai là các loại đường khác sử dụng xác nhận chéo.


1

Một lựa chọn sẽ là tạo khoảng tin cậy cho lỗi bình phương trung bình. Tôi sẽ sử dụng lỗi bình phương trung bình thay vì vì mẫu số là giống nhau cho cả hai mô hình. Nghiên cứu của Dudoit và van der Laan ( bài viếtgiấy làm việc ) cung cấp một định lý chung cho việc xây dựng một khoảng tin cậy cho bất kỳ ước lượng rủi ro. Sử dụng ví dụ từ dữ liệu mống mắt, đây là một số mã R tạo khoảng tin cậy 95% bằng phương pháp:R2

library(randomForest)
data(iris)
set.seed(42)

# split the data into training and testing sets
index <- 1:nrow(iris)
trainindex <- sample(index, trunc(length(index)/2))
trainset <- iris[trainindex, ]
testset <- iris[-trainindex, ]

# with species
model1 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length +
   Petal.Width + Species, data = trainset)
# without species
model2 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length + 
   Petal.Width, data = trainset)

pred1 <- predict(model1, testset[, -1])
pred2 <- predict(model2, testset[, -1])

y <- testset[, 1]
n <- length(y)

# psi is the mean squared prediction error (MSPE) estimate
# sigma2 is the estimate of the variance of the MSPE
psi1 <- mean((y - pred1)^2)
sigma21 <- 1/n * var((y - pred1)^2) 
# 95% CI:
c(psi1 - 1.96 * sqrt(sigma21), psi1, psi1 + 1.96 * sqrt(sigma21))

psi2 <- mean((y - pred2)^2)
sigma22 <- 1/n * var((y - pred2)^2) 
# 95% CI:
c(psi2 - 1.96 * sqrt(sigma22), psi2, psi2 + 1.96 * sqrt(sigma22))

Phương pháp cũng có thể được mở rộng để hoạt động trong phạm vi xác thực chéo (không chỉ phân tách mẫu như được hiển thị ở trên).


0

Vì bạn đã sử dụng randomForestsau khi xác thực chéo, bạn có thể phát ra tính toán phù hợp đã chọn của các giá trị quan trọng của người dự đoán.

> require(randomForest)
> rf.fit = randomForest(Species~.,data=iris,importance=TRUE)
> rf.fit$importance
                  setosa   versicolor   virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length 0.036340893  0.021013369 0.032345037          0.030708732         9.444598
Sepal.Width  0.005399468 -0.002131412 0.007499143          0.003577089         2.046650
Petal.Length 0.319872296  0.297426025 0.290278930          0.299795555        42.494972
Petal.Width  0.343995456  0.309455331 0.277644128          0.307843300        45.286720

0

Tôi thấy câu hỏi này đã được hỏi từ lâu; tuy nhiên, không có câu trả lời nào chỉ ra những thiếu sót và hiểu lầm đáng kể trong câu hỏi này.

Xin lưu ý:

  1. Bạn nói rằng R ^ 2 = ESS / TSS = 1 - RSS / TSS. Điều này chỉ đúng trong bối cảnh tuyến tính. Bình đẳng TSS = RSS + ESS chỉ đúng trong hồi quy tuyến tính với đánh chặn. Do đó, bạn không thể sử dụng các định nghĩa cho các khu rừng ngẫu nhiên thay thế cho nhau. Đây là lý do tại sao RMSE và tương tự là các hàm mất điển hình hơn.

  2. Quan trọng hơn cho mục đích thống kê: R ^ 2 tuân theo phân phối chưa biết (cũng trong cài đặt tuyến tính). Điều đó có nghĩa là, kiểm tra một giả thuyết có ý nghĩa thống kê sử dụng R ^ 2 không đơn giản như vậy. Xác nhận chéo, như Zach đã đề cập , là một lựa chọn tốt.

Đối với phản hồi của người dùng88 : Xác thực chéo với thử nghiệm Wilcoxon là một cách tiếp cận hợp lệ. Một bài báo gần đây sử dụng thử nghiệm xếp hạng Wilcoxon đã ký và các thử nghiệm Friedman để so sánh các phương pháp và thuật toán khác nhau.

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.