En realidad, pensé que había entendido lo que se puede mostrar con un diagrama de dependencia parcial, pero usando un ejemplo hipotético muy simple, me quedé bastante perplejo. En el siguiente fragmento de código, genero tres variables independientes ( a , b , c ) y una variable dependiente ( y ) con c que muestra una relación lineal estrecha con y , mientras que a y b son correlacionados con y . Hago un análisis de regresión con un árbol de regresión potenciado usando el paquete 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)
No es sorprendente que, para las variables a y b las parcelas de dependencia parciales dió líneas horizontales alrededor de la media de una . Lo que me intriga es la trama de la variable c . Obtengo líneas horizontales para los rangos c <40 yc > 60 y el eje y está restringido a valores cercanos a la media de y . Desde un y b son completamente no relacionada con y (e importancia por lo tanto no variable en el modelo es 0), que esperaba que cmostraría una dependencia parcial a lo largo de todo su rango en lugar de esa forma sigmoidea para un rango muy restringido de sus valores. Traté de encontrar información en Friedman (2001) "Aproximación de la función codiciosa: una máquina de aumento de gradiente" y en Hastie et al. (2011) "Elementos de aprendizaje estadístico", pero mis habilidades matemáticas son demasiado bajas para comprender todas las ecuaciones y fórmulas que contiene. Por lo tanto, mi pregunta: ¿qué determina la forma del gráfico de dependencia parcial para la variable c ? (¡Por favor explique en palabras comprensibles para un no matemático!)
AGREGADO el 17 de abril de 2014:
Mientras esperaba una respuesta, utilicé los mismos datos de ejemplo para un análisis con R-package randomForest
. Las parcelas de dependencia parciales de randomForest se parecen mucho más a lo que esperaba de las parcelas de GBM: la dependencia parcial de variables explicativas a y b varían aleatoriamente y estrechamente alrededor de 50, mientras variable explicativa c dependencia shows parcial en toda su gama (y sobre casi rango completo de y ). ¿Cuáles podrían ser las razones de estas diferentes formas de las parcelas de dependencia parcial en gbm
y randomForest
?
Aquí el código modificado que compara las parcelas:
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)