ที่จะตอบคำถามของคุณในระยะทั่วไปมากขึ้นก็เป็นไปได้ที่จะใช้กลไกการเรียนรู้และคาดการณ์คาดการณ์ H-ขั้นตอนข้างหน้า ส่วนที่ยุ่งยากคือคุณต้องเปลี่ยนรูปร่างข้อมูลของคุณเป็นเมทริกซ์ที่คุณมีสำหรับการสังเกตแต่ละครั้งมูลค่าที่แท้จริงของการสังเกตและค่าที่ผ่านมาของอนุกรมเวลาสำหรับช่วงที่กำหนด คุณจะต้องกำหนดด้วยตนเองว่าช่วงของข้อมูลที่เกี่ยวข้องกับการทำนายอนุกรมเวลาของคุณในความเป็นจริงในขณะที่คุณจะพารามิเตอร์รูปแบบ ARIMA ความกว้าง / ขอบฟ้าของเมทริกซ์มีความสำคัญอย่างยิ่งต่อการคาดเดาค่าถัดไปของเมทริกซ์ของคุณอย่างถูกต้อง หากขอบฟ้าของคุณถูก จำกัด คุณอาจพลาดเอฟเฟกต์ตามฤดูกาล
เมื่อคุณทำเช่นนั้นแล้วเพื่อคาดการณ์ h-steps-ahead คุณจะต้องทำนายค่าถัดไปแรกตามการสังเกตครั้งสุดท้ายของคุณ จากนั้นคุณจะต้องเก็บการทำนายว่าเป็น "ค่าจริง" ซึ่งจะใช้ในการทำนายค่าถัดไปที่สองผ่านการเลื่อนเวลาเช่นเดียวกับแบบจำลอง ARIMA คุณจะต้องทำซ้ำขั้นตอน h เพื่อให้ได้ h-steps-ahead การวนซ้ำแต่ละครั้งจะขึ้นอยู่กับการทำนายก่อนหน้านี้
ตัวอย่างการใช้รหัส R จะเป็นดังต่อไปนี้
library(forecast)
library(randomForest)
# create a daily pattern with random variations
myts <- ts(rep(c(5,6,7,8,11,13,14,15,16,15,14,17,13,12,15,13,12,12,11,10,9,8,7,6), 10)*runif(120,0.8,1.2), freq = 24)
myts_forecast <- forecast(myts, h = 24) # predict the time-series using ets + stl techniques
pred1 <- c(myts, myts_forecast1$mean) # store the prediction
# transform these observations into a matrix with the last 24 past values
idx <- c(1:24)
designmat <- data.frame(lapply(idx, function(x) myts[x:(215+x)])) # create a design matrix
colnames(designmat) <- c(paste0("x_",as.character(c(1:23))),"y")
# create a random forest model and predict iteratively each value
rfModel <- randomForest(y ~., designmat)
for (i in 1:24){
designvec <- data.frame(c(designmat[nrow(designmat), 2:24], 0))
colnames(designvec) <- colnames(designmat)
designvec$y <- predict(rfModel, designvec)
designmat <- rbind(designmat, designvec)
}
pred2 <- designmat$y
#plot to compare predictions
plot(pred1, type = "l")
lines(y = pred2[216:240], x = c(240:264), col = 2)
ตอนนี้เห็นได้ชัดว่าไม่มีกฎทั่วไปที่กำหนดว่ารูปแบบอนุกรมเวลาหรือรูปแบบการเรียนรู้ของเครื่องนั้นมีประสิทธิภาพมากกว่าหรือไม่ เวลาในการคำนวณอาจสูงขึ้นสำหรับโมเดลการเรียนรู้ของเครื่อง แต่ในทางกลับกันคุณอาจรวมถึงคุณสมบัติเพิ่มเติมใด ๆ เพื่อทำนายอนุกรมเวลาของคุณโดยใช้ (เช่นไม่ใช่คุณลักษณะเชิงตัวเลขหรือเชิงตรรกะ) คำแนะนำทั่วไปคือการทดสอบทั้งสองแบบและเลือกรุ่นที่มีประสิทธิภาพที่สุด