Sebenarnya, saya pikir saya sudah mengerti apa yang bisa ditunjukkan dengan plot ketergantungan sebagian, tetapi menggunakan contoh hipotetis yang sangat sederhana, saya agak bingung. Dalam potongan kode berikut ini saya menghasilkan tiga variabel independen ( a , b , c ) dan satu variabel dependen ( y ) dengan c menunjukkan hubungan linear yang dekat dengan y , sedangkan a dan b tidak berkorelasi dengan y . Saya membuat analisis regresi dengan pohon regresi yang dikuatkan menggunakan paket 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)
Tidak mengherankan, untuk variabel a dan b plot ketergantungan parsial menghasilkan garis horizontal di sekitar rata-rata a . Yang saya tekankan adalah plot untuk variabel c . Saya mendapatkan garis horizontal untuk rentang c <40 dan c > 60 dan sumbu y terbatas pada nilai yang mendekati nilai rata-rata y . Karena a dan b sama sekali tidak berhubungan dengan y (dan dengan demikian ada variabel penting dalam model adalah 0), saya berharap cakan menunjukkan ketergantungan parsial sepanjang seluruh rentang bukannya bentuk sigmoid untuk rentang nilai yang sangat terbatas. Saya mencoba mencari informasi dalam Friedman (2001) "Perkiraan fungsi serakah: mesin peningkat gradien" dan dalam Hastie et al. (2011) "Elemen Pembelajaran Statistik", tetapi keterampilan matematika saya terlalu rendah untuk memahami semua persamaan dan rumus di dalamnya. Jadi pertanyaan saya: Apa yang menentukan bentuk plot ketergantungan parsial untuk variabel c ? (Tolong jelaskan dengan kata-kata yang bisa dipahami oleh orang yang bukan ahli matematika!)
TAMBAH pada 17 April 2014:
Sambil menunggu jawaban, saya menggunakan contoh data yang sama untuk analisis dengan paket-R randomForest
. Plot ketergantungan parsial dari randomForest lebih menyerupai apa yang saya harapkan dari plot gbm: ketergantungan parsial variabel penjelas a dan b bervariasi secara acak dan erat di sekitar 50, sedangkan variabel penjelas c menunjukkan ketergantungan parsial atas seluruh rentangnya (dan lebih dari hampir seluruh rentang y ). Apa yang bisa menjadi alasan untuk berbagai bentuk plot ketergantungan parsial ini dalam gbm
dan randomForest
?
Di sini kode yang dimodifikasi yang membandingkan plot:
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)