In realtà, pensavo di aver capito cosa si può mostrare con un diagramma di dipendenza parziale, ma usando un esempio ipotetico molto semplice, sono rimasto piuttosto perplesso. Nel seguente pezzo di codice a generare tre variabili indipendenti ( un , b , c ) e una variabile dipendente ( y ) con c mostra una stretta relazione lineare con y , mentre un e b sono correlati con y . Faccio un'analisi di regressione con un albero di regressione potenziato usando il pacchetto 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)
Non sorprendentemente, per le variabili a e b piazzole dipendenza parziali cedere linee orizzontali intorno alla media di un . Quello che puzzle è la trama per la variabile c . Ottengo linee orizzontali per gli intervalli c <40 e c > 60 e l'asse y è limitato ai valori vicini alla media di y . Poiché un e b sono completamente estranei alla y (e quindi non variabile importanza nel modello è 0), mi aspettavo che cmostrerebbe una dipendenza parziale lungo tutto il suo raggio anziché quella forma sigmoidea per un intervallo molto limitato dei suoi valori. Ho cercato di trovare informazioni in Friedman (2001) "Approssimazione di funzioni avide: una macchina per aumentare il gradiente" e in Hastie et al. (2011) "Elementi di apprendimento statistico", ma le mie capacità matematiche sono troppo basse per comprendere tutte le equazioni e le formule in essi contenute. Quindi la mia domanda: cosa determina la forma del diagramma di dipendenza parziale per la variabile c ? (Spiega in parole comprensibili a un non matematico!)
AGGIUNTO il 17 aprile 2014:
In attesa di una risposta, ho usato gli stessi dati di esempio per un'analisi con R-package randomForest
. Le trame dipendenza parziali di foresta casuale assomigliano molto più di quanto mi aspettassi dalle trame GBM: la dipendenza parziale di variabili esplicative a e b variano casualmente e strettamente circa 50, mentre esplicative variabile c dipendenza spettacoli parziale su tutta la gamma (e su quasi intera gamma di y ). Quali potrebbero essere le ragioni di queste diverse forme dei diagrammi di dipendenza parziale in gbm
e randomForest
?
Ecco il codice modificato che confronta i grafici:
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)