Na verdade, eu pensei que tinha entendido o que se pode mostrar com um gráfico de dependência parcial, mas usando um exemplo hipotético muito simples, fiquei bastante confuso. No seguinte pedaço de código que geram três variáveis independentes ( a , b , c ) e uma variável dependente ( y ) com c que mostra uma relação linear próxima com y , ao passo que um e b não estão correlacionados com y . Eu faço uma análise de regressão com uma árvore de regressão impulsionada usando o pacote 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)
Não surpreendentemente, para as variáveis de um e b as parcelas dependência parciais produzir linhas horizontais em torno da média de um . O que eu acho é o enredo para a variável c . Eu recebo linhas horizontais para os intervalos c <40 ec > 60 e o eixo y é restrito a valores próximos à média de y . Uma vez que um e b são completamente alheios ao y (e, portanto, não importância variável em que o modelo é 0), I esperado que cmostraria dependência parcial ao longo de toda a faixa, em vez da forma sigmóide, para uma faixa muito restrita de seus valores. Tentei encontrar informações em Friedman (2001) "Aproximação da função gananciosa: uma máquina de aumento de gradiente" e em Hastie et al. (2011) "Elements of Statistical Learning", mas minhas habilidades matemáticas são muito baixas para entender todas as equações e fórmulas contidas nela. Assim, minha pergunta: o que determina a forma do gráfico de dependência parcial para a variável c ? (Por favor, explique em palavras compreensíveis para um não matemático!)
ADICIONADO em 17 de abril de 2014:
Enquanto esperava por uma resposta, usei o mesmo exemplo de dados para uma análise com o R-package randomForest
. As parcelas dependência parciais de Floresta aleatória assemelham-se muito mais para o que o esperado a partir das parcelas gbm: a dependência parcial de variáveis explanatórias a e b variam de forma aleatória e estreitamente em torno de 50, enquanto explicativas variável c dependência mostra parcial ao longo de toda a sua gama (e ao longo de quase todo o intervalo de y ). Quais poderiam ser as razões para essas diferentes formas das parcelas de dependência parcial em gbm
e randomForest
?
Aqui, o código modificado que compara os gráficos:
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)