วิธีค้นหาช่วงเวลาการคาดคะเนของ GBM


12

ฉันกำลังทำงานกับรุ่น GBM โดยใช้ชุดคาเร็ตและมองหาวิธีการแก้ช่วงการทำนายสำหรับข้อมูลที่คาดการณ์ไว้ ฉันค้นหาอย่างกว้างขวาง แต่มีความคิดเล็กน้อยเพื่อค้นหาช่วงเวลาการคาดการณ์สำหรับ Random Forest ความช่วยเหลือใด ๆ / รหัส R จะได้รับการชื่นชมอย่างมาก!

คำตอบ:


4

แก้ไข: ตามที่ระบุไว้ในความคิดเห็นด้านล่างนี้ให้ช่วงความเชื่อมั่นสำหรับการคาดการณ์และไม่ได้กำหนดช่วงเวลาการทำนายอย่างเคร่งครัด รู้สึกมีความสุขกับคำตอบของฉันและควรให้ความคิดพิเศษนี้

อย่าลังเลที่จะตอบคำถามนี้หรือพยายามสร้างรหัสเพื่อให้ได้ช่วงระยะการทำนาย


ฉันใช้ bootstrap อย่างง่ายสำหรับการสร้างช่วงเวลาการทำนายสองสามครั้ง แต่อาจมีวิธีอื่น (ดีกว่า)

พิจารณาoilข้อมูลในcaretแพ็คเกจและสมมติว่าเราต้องการสร้างการอ้างอิงบางส่วนและช่วงเวลา 95% สำหรับผลของสเตียริกต่อ Palmitic ด้านล่างเป็นเพียงตัวอย่างง่ายๆ แต่คุณสามารถเล่นกับมันเพื่อให้เหมาะกับความต้องการของคุณ ตรวจสอบให้แน่ใจว่าgbmมีการอัปเดตแพคเกจเพื่อให้มีการgrid.pointsโต้แย้งplot.gbm

library(caret)
data(oil)
#train the gbm using just the defaults.
tr <- train(Palmitic ~ ., method = "gbm" ,data = fattyAcids, verbose = FALSE)

#Points to be used for prediction. Use the quartiles here just for illustration
x.pt <- quantile(fattyAcids$Stearic, c(0.25, 0.5, 0.75))

#Generate the predictions, or in this case, the partial dependencies at the selected points. Substitute plot() for predict() to get predictions
p <- plot(tr$finalModel, "Stearic", grid.levels = x.pt, return.grid = TRUE)

#Bootstrap the process to get prediction intervals
library(boot)

bootfun <- function(data, indices) {
  data <- data[indices,]

  #As before, just the defaults in this example. Palmitic is the first variable, hence data[,1]
  tr <- train(data[,-1], data[,1], method = "gbm", verbose=FALSE)

  # ... other steps, e.g. using the oneSE rule etc ...
  #Return partial dependencies (or predictions)

  plot(tr$finalModel, "Stearic", grid.levels = x.pt, return.grid = TRUE)$y
  #or predict(tr$finalModel, data = ...)
}

#Perform the bootstrap, this can be very time consuming. Just 99 replicates here but we usually want to do more, e.g. 500. Consider using the parallel option
b <- boot(data = fattyAcids, statistic = bootfun, R = 99)

#Get the 95% intervals from the boot object as the 2.5th and 97.5th percentiles
lims <- t(apply(b$t, 2, FUN = function(x) quantile(x, c(0.025, 0.975))))

นี่เป็นวิธีหนึ่งในการทำเช่นนี้ซึ่งอย่างน้อยก็ลองพิจารณาความไม่แน่นอนที่เกิดจากการปรับ gbm มีการใช้วิธีการที่คล้ายกันในhttp://onlinelibrary.wiley.com/doi/10.2193/2006-503/abstract

บางครั้งการประมาณจุดอยู่นอกช่วงเวลา แต่การแก้ไขกริดการปรับ (เช่นการเพิ่มจำนวนต้นไม้และ / หรือความลึก) มักจะแก้ปัญหานั้น

หวังว่านี่จะช่วยได้!


1
ถ้าฉันเข้าใจรหัสของคุณถูกต้องสิ่งที่คุณมีคือช่วงความมั่นใจ 95% สำหรับการคาดการณ์ นั่นไม่เหมือนกับช่วงการทำนาย 95% ซึ่งเพิ่มข้อผิดพลาดที่เหลือ (แบบสุ่ม)
Hong Ooi

D'โอ้! คุณถูก. ค่อนข้างเร็วเกินไปในการตอบกลับ ขอบคุณฉันจะแก้ไขคำตอบของฉัน
ErikL

ขอบคุณที่ช่วยเหลือ! ฉันมีปัญหาแม้ว่าจะมีฟังก์ชั่น bootstrap ผมโพสต์ปัญหาที่ที่stats.stackexchange.com/questions/117329/... ฉันไม่แน่ใจว่าวิธีการตั้งค่าฟังก์ชั่น bootstrap อย่างถูกต้องกับชุดข้อมูลของฉัน
CooperBuckeye05

1
ฉันเดาว่า ณ จุดนี้นี่ไม่ใช่สิ่งที่ฉันกำลังมองหาดังนั้นฉันยังคงมองหาคำตอบ!
CooperBuckeye05
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.