ที่จริงแล้วฉันคิดว่าฉันเข้าใจสิ่งที่เราสามารถแสดงด้วยพล็อตการพึ่งพาบางส่วน แต่ใช้ตัวอย่างสมมุติง่าย ๆ ฉันรู้สึกงงงวย ในกลุ่มของรหัสต่อไปฉันจะสร้างสามตัวแปรอิสระ ( , B , C ) และขึ้นอยู่กับตัวแปร ( Y ) กับคแสดงให้เห็นความสัมพันธ์เชิงเส้นใกล้ชิดกับปีขณะที่และขเป็น uncorrelated กับY ฉันทำการวิเคราะห์การถดถอยด้วยต้นไม้การถดถอยที่เพิ่มขึ้นโดยใช้แพ็คเกจ 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)
ไม่น่าแปลกใจสำหรับตัวแปรและขแปลงพึ่งพาผลผลิตบางส่วนเส้นแนวนอนรอบเฉลี่ยของ สิ่งที่ฉันปริศนาเป็นพล็อตของตัวแปรค ฉันได้รับเส้นแนวนอนสำหรับช่วงค <40 และค > 60 และแกน y ถูก จำกัด ให้ค่าใกล้เคียงกับค่าเฉลี่ยของปี ตั้งแต่และBมีความสมบูรณ์ไม่เกี่ยวข้องกับY (และความสำคัญจึงมีตัวแปรในรูปแบบเป็น 0), ที่คาดผมที่คจะแสดงการพึ่งพาบางส่วนตามช่วงทั้งหมดแทนที่จะเป็นรูปร่าง sigmoid สำหรับช่วงที่ จำกัด ของค่า ฉันพยายามค้นหาข้อมูลใน Friedman (2001) "การประมาณฟังก์ชั่นโลภ: เครื่องเร่งการไล่ระดับสี" และใน Hastie et al (2011) "องค์ประกอบของการเรียนรู้ทางสถิติ" แต่ทักษะทางคณิตศาสตร์ของฉันต่ำเกินไปที่จะเข้าใจสมการและสูตรทั้งหมดในนั้น ดังนั้นคำถามของฉัน: สิ่งที่กำหนดรูปร่างของพล็อตพึ่งพาบางส่วนสำหรับตัวแปรc ? (โปรดอธิบายด้วยคำที่เข้าใจได้ยากสำหรับผู้ที่ไม่ใช่นักคณิตศาสตร์!)
เพิ่มเมื่อวันที่ 17 เมษายน 2014:
ในขณะที่รอการตอบสนองผมใช้ข้อมูลตัวอย่างเช่นเดียวกันสำหรับการวิเคราะห์กับ randomForest
R-แพคเกจ แผนการพึ่งพาอาศัยบางส่วนของ randomForest มีลักษณะคล้ายกับสิ่งที่ฉันคาดหวังจากแผนการ gbm: การพึ่งพาบางส่วนของตัวแปรอธิบายaและbแตกต่างกันแบบสุ่มและใกล้เคียงประมาณ 50 ในขณะที่ตัวแปรอธิบายcแสดงการพึ่งพาบางส่วนตลอดช่วงทั้งหมด ช่วงทั้งหมดของy ) อะไรคือสาเหตุของรูปทรงที่แตกต่างกันของแผนการพึ่งพาบางส่วนในgbm
และrandomForest
?
นี่คือรหัสที่ดัดแปลงเพื่อเปรียบเทียบแปลง:
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)