Untuk menjawab pertanyaan Anda dalam istilah yang lebih umum, dimungkinkan untuk menggunakan pembelajaran mesin dan memprediksi prakiraan h-langkah di depan . Bagian yang sulit adalah bahwa Anda harus membentuk kembali data Anda ke dalam matriks yang Anda miliki, untuk setiap pengamatan nilai aktual dari pengamatan dan nilai-nilai masa lalu dari deret waktu untuk rentang yang ditentukan. Anda perlu menentukan secara manual berapa kisaran data yang tampak relevan untuk memprediksi deret waktu Anda, pada kenyataannya, seperti parameter parameter model ARIMA. Lebar / cakrawala matriks sangat penting untuk memprediksi dengan benar nilai selanjutnya yang diambil oleh matriks Anda. Jika cakrawala Anda dibatasi, Anda mungkin kehilangan efek musiman.
Setelah Anda melakukan itu, untuk memprediksi h-langkah-ke depan, Anda harus memprediksi nilai pertama berikutnya berdasarkan pengamatan terakhir Anda. Anda kemudian harus menyimpan prediksi sebagai "nilai aktual", yang akan digunakan untuk memprediksi nilai berikutnya kedua melalui pergeseran waktu , seperti model ARIMA. Anda harus mengulangi proses tersebut h kali untuk mendapatkan langkah-h depan Anda. Setiap iterasi akan bergantung pada prediksi sebelumnya.
Contoh menggunakan kode R adalah sebagai berikut.
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)
Sekarang jelas, tidak ada aturan umum untuk menentukan apakah model deret waktu atau model pembelajaran mesin lebih efisien. Waktu komputasi mungkin lebih tinggi untuk model pembelajaran mesin, tetapi di sisi lain, Anda dapat menyertakan semua jenis fitur tambahan untuk memprediksi deret waktu Anda dengan menggunakannya (mis. Bukan hanya fitur numerik atau logis). Saran umum adalah menguji keduanya, dan memilih model yang paling efisien.