Trên thực tế, tôi nghĩ rằng tôi đã hiểu những gì người ta có thể thể hiện với cốt truyện phụ thuộc một phần, nhưng sử dụng một ví dụ giả thuyết rất đơn giản, tôi đã khá bối rối. Trong đoạn mã sau tôi tạo ba biến độc lập ( a , b , c ) và một biến phụ thuộc ( y ) với c hiển thị mối quan hệ tuyến tính chặt chẽ với y , trong khi a và b không tương thích với y . Tôi thực hiện phân tích hồi quy với cây hồi quy được tăng cường bằng cách sử dụng gói R gbm
:
a <- runif(100, 1, 100)
b <- runif(100, 1, 100)
c <- 1:100 + rnorm(100, mean = 0, sd = 5)
y <- 1:100 + rnorm(100, mean = 0, sd = 5)
par(mfrow = c(2,2))
plot(y ~ a); plot(y ~ b); plot(y ~ c)
Data <- data.frame(matrix(c(y, a, b, c), ncol = 4))
names(Data) <- c("y", "a", "b", "c")
library(gbm)
gbm.gaus <- gbm(y ~ a + b + c, data = Data, distribution = "gaussian")
par(mfrow = c(2,2))
plot(gbm.gaus, i.var = 1)
plot(gbm.gaus, i.var = 2)
plot(gbm.gaus, i.var = 3)
Không có gì đáng ngạc nhiên, đối với các biến a và b, các ô phụ thuộc một phần tạo ra các đường nằm ngang xung quanh giá trị trung bình của a . Những gì tôi đố là cốt truyện cho biến c . Tôi nhận được các đường ngang cho các phạm vi c <40 và c > 60 và trục y bị giới hạn ở các giá trị gần với giá trị trung bình của y . Vì a và b hoàn toàn không liên quan đến y (và do đó có tầm quan trọng thay đổi trong mô hình là 0), tôi đã dự đoán rằng csẽ cho thấy sự phụ thuộc một phần dọc theo toàn bộ phạm vi của nó thay vì hình dạng sigmoid đó cho một phạm vi rất hạn chế của các giá trị của nó. Tôi đã cố gắng tìm thông tin trong Friedman (2001) "Xấp xỉ chức năng tham lam: một máy tăng cường độ dốc" và trong Hastie et al. (2011) "Các yếu tố của học thống kê", nhưng kỹ năng toán học của tôi quá thấp để hiểu tất cả các phương trình và công thức trong đó. Vì vậy, câu hỏi của tôi: Điều gì xác định hình dạng của biểu đồ phụ thuộc một phần cho biến c ? (Vui lòng giải thích bằng từ ngữ dễ hiểu cho một người không phải là nhà toán học!)
THÊM vào ngày 17 tháng 4 năm 2014:
Trong khi chờ đợi một phản ứng, tôi đã sử dụng dữ liệu ví dụ tương tự cho một phân tích với R-gói randomForest
. Các biểu đồ phụ thuộc một phần của RandomForest giống với nhiều hơn những gì tôi mong đợi từ các biểu đồ gbm: sự phụ thuộc một phần của các biến giải thích a và b thay đổi ngẫu nhiên và gần nhau khoảng 50, trong khi biến giải thích c cho thấy sự phụ thuộc một phần vào toàn bộ phạm vi của nó (và gần như toàn bộ phạm vi của y ). Điều gì có thể là lý do cho những hình dạng khác nhau của các ô phụ thuộc một phần trong gbm
và randomForest
?
Ở đây mã sửa đổi so sánh các ô:
a <- runif(100, 1, 100)
b <- runif(100, 1, 100)
c <- 1:100 + rnorm(100, mean = 0, sd = 5)
y <- 1:100 + rnorm(100, mean = 0, sd = 5)
par(mfrow = c(2,2))
plot(y ~ a); plot(y ~ b); plot(y ~ c)
Data <- data.frame(matrix(c(y, a, b, c), ncol = 4))
names(Data) <- c("y", "a", "b", "c")
library(gbm)
gbm.gaus <- gbm(y ~ a + b + c, data = Data, distribution = "gaussian")
library(randomForest)
rf.model <- randomForest(y ~ a + b + c, data = Data)
x11(height = 8, width = 5)
par(mfrow = c(3,2))
par(oma = c(1,1,4,1))
plot(gbm.gaus, i.var = 1)
partialPlot(rf.model, Data[,2:4], x.var = "a")
plot(gbm.gaus, i.var = 2)
partialPlot(rf.model, Data[,2:4], x.var = "b")
plot(gbm.gaus, i.var = 3)
partialPlot(rf.model, Data[,2:4], x.var = "c")
title(main = "Boosted regression tree", outer = TRUE, adj = 0.15)
title(main = "Random forest", outer = TRUE, adj = 0.85)