Eigentlich dachte ich, ich hätte verstanden, was man mit partieller Abhängigkeit darstellen kann, aber unter Verwendung eines sehr einfachen hypothetischen Beispiels wurde ich ziemlich verwirrt. Im folgenden Codeabschnitt generiere ich drei unabhängige Variablen ( a , b , c ) und eine abhängige Variable ( y ), wobei c eine enge lineare Beziehung zu y aufweist , während a und b nicht mit y korrelieren . Ich mache eine Regressionsanalyse mit einem verstärkten Regressionsbaum unter Verwendung des R-Pakets 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)
Es überrascht nicht, dass für die Variablen a und b die partiellen Abhängigkeitsdiagramme horizontale Linien um den Mittelwert von a ergeben . Was mich rätselt, ist die Handlung für Variable c . Ich erhalte horizontale Linien für die Bereiche c <40 und c > 60 und die y-Achse ist auf Werte nahe dem Mittelwert von y beschränkt . Da a und b in keinerlei Beziehung zu y stehen (und daher die variable Bedeutung im Modell 0 ist), habe ich erwartet, dass cwürde für einen sehr eingeschränkten Bereich seiner Werte eine teilweise Abhängigkeit entlang seines gesamten Bereichs anstelle dieser Sigmoidform zeigen. Ich habe versucht, Informationen in Friedman (2001) "Greedy Function Approximation: eine Gradienten-Boosting-Maschine" und in Hastie et al. (2011) "Elemente des statistischen Lernens", aber meine mathematischen Fähigkeiten sind zu gering, um alle darin enthaltenen Gleichungen und Formeln zu verstehen. Also meine Frage: Was bestimmt die Form des partiellen Abhängigkeitsdiagramms für Variable c ? (Erklären Sie dies bitte in Worten, die für einen Nicht-Mathematiker verständlich sind!)
HINZUGEFÜGT am 17. April 2014:
Während ich auf eine Antwort wartete, verwendete ich dieselben Beispieldaten für eine Analyse mit R-package randomForest
. Die partiellen Abhängigkeitsdiagramme von randomForest ähneln viel eher dem, was ich von den gbm - Diagrammen erwartet habe: Die partielle Abhängigkeit der erklärenden Variablen a und b variiert zufällig und stark um 50, während die erklärende Variable c eine partielle Abhängigkeit über ihren gesamten Bereich (und über fast den gesamten Bereich) aufweist gesamter Bereich von y ). Was könnten die Gründe für diese unterschiedlichen Formen der partiellen Abhängigkeitsdiagramme in gbm
und sein randomForest
?
Hier der geänderte Code, der die Diagramme vergleicht:
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)