Właściwie myślałem, że zrozumiałem, co można pokazać z częściową fabułą zależności, ale używając bardzo prostego hipotetycznego przykładu, byłem dość zdziwiony. W poniższym fragmencie kodu wygenerować trzy zmienne niezależne ( , b , c ) i jedną zmienną zależną ( y ) z c pokazującym zbliżenie liniową zależność y , a i b są nieskorelowane, przy czym Y . Wykonuję analizę regresji za pomocą wzmocnionego drzewa regresji przy użyciu pakietu 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)
Nic dziwnego, że dla zmiennych a i b wykresy częściowej zależności dają linie poziome wokół średniej a . Intryguje mnie fabuła dla zmiennej c . Otrzymuję linie poziome dla zakresów c <40 ic > 60, a oś y jest ograniczona do wartości bliskich średniej y . Od i b są całkowicie niezwiązane z y (a więc tam zmienne znaczenie w modelu 0), to oczekuje się, że cwykazywałby częściową zależność w całym zakresie zamiast tego sigmoidalnego kształtu dla bardzo ograniczonego zakresu jego wartości. Próbowałem znaleźć informacje w Friedmanie (2001) „Przybliżenie funkcji chciwości: maszyna zwiększająca gradient” oraz w Hastie i in. (2011) „Elementy uczenia statystycznego”, ale moje umiejętności matematyczne są zbyt niskie, aby zrozumieć wszystkie zawarte w nich równania i wzory. Zatem moje pytanie: co determinuje kształt wykresu zależności częściowej dla zmiennej c ? (Proszę wyjaśnić słowami zrozumiałymi dla nie-matematyka!)
DODANO 17 kwietnia 2014 r .:
Podczas oczekiwania na odpowiedź, to stosuje się takie same przykładowe dane dla analiz R-pakietu randomForest
. Wykresy częściowej zależności randomForest bardziej przypominają to, czego oczekiwałem po wykresach gbm: częściowa zależność zmiennych objaśniających a i b zmienia się losowo i blisko około 50, podczas gdy zmienna objaśniająca c wykazuje częściową zależność w całym zakresie (i prawie w całym cały zakres y ). Jakie mogą być przyczyny tych różnych kształtów wykresów częściowej zależności w gbm
i randomForest
?
Oto zmodyfikowany kod, który porównuje wykresy:
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)