机器学习笔记 时间序列预测(最基本的方法【benchmark】)
1 最基本的方法
這些方法將作為這個系列的benchmark
有時,這些簡單方法中的一種將是可用的最佳預(yù)測方法; 但在許多情況下,這些方法將作為基準(zhǔn)而不是選擇方法。 也就是說,我們開發(fā)的任何預(yù)測方法都將與這些簡單的方法進(jìn)行比較,以確保新方法優(yōu)于這些簡單的替代方法。 如果沒有,新方法不值得考慮。
1.1 平均法
所有未來值的預(yù)測都等于歷史數(shù)據(jù)的平均值(或“平均值”)。
?1.1.1 R語言實現(xiàn)
library(forecast)y<-ts(c(5,3,3.1,3.2,3.3,3.4,3.5,3.3,3.2,4,4.1,4.2,6,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5,10,9,8,8.5,8.4,8.5,8.6,8.7,8.8,8.9,9,9.5),start = 2020,frequency = 12)meanf(y,5) Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 Jan 2023 5.686111 2.571311 8.800911 0.8451045 10.52712 Feb 2023 5.686111 2.571311 8.800911 0.8451045 10.52712 Mar 2023 5.686111 2.571311 8.800911 0.8451045 10.52712 Apr 2023 5.686111 2.571311 8.800911 0.8451045 10.52712 May 2023 5.686111 2.571311 8.800911 0.8451045 10.527121.2 簡單復(fù)制
????????對于簡單的預(yù)測,我們只需將所有預(yù)測設(shè)置為最后一次觀察的值。
????????
naive(y,5)Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 Jan 2023 9.5 8.135627 10.86437 7.413371 11.58663 Feb 2023 9.5 7.570485 11.42952 6.549061 12.45094 Mar 2023 9.5 7.136836 11.86316 5.885853 13.11415 Apr 2023 9.5 6.771254 12.22875 5.326743 13.67326 May 2023 9.5 6.449169 12.55083 4.834156 14.165841.3 季節(jié)性復(fù)制
????????類似的方法對于高度季節(jié)性的數(shù)據(jù)很有用。
???????? 在這種情況下,我們將每個預(yù)測設(shè)置為同一季節(jié)(例如,上一年的同一個月)的最后一個觀測值。 形式上,時間 T+h 的預(yù)測寫為
????????
? ? ? ? 其中m表示周期,k是的整數(shù)部分(即,時間 T+h 之前預(yù)測期內(nèi)的完整周期數(shù))。
? ?1.3.1 R語言實現(xiàn)
snaive(y,15)Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 Jan 2023 10.0 6.071882 13.92812 3.9924626 16.00754 Feb 2023 9.0 5.071882 12.92812 2.9924626 15.00754 Mar 2023 8.0 4.071882 11.92812 1.9924626 14.00754 Apr 2023 8.5 4.571882 12.42812 2.4924626 14.50754 May 2023 8.4 4.471882 12.32812 2.3924626 14.40754 Jun 2023 8.5 4.571882 12.42812 2.4924626 14.50754 Jul 2023 8.6 4.671882 12.52812 2.5924626 14.60754 Aug 2023 8.7 4.771882 12.62812 2.6924626 14.70754 Sep 2023 8.8 4.871882 12.72812 2.7924626 14.80754 Oct 2023 8.9 4.971882 12.82812 2.8924626 14.90754 Nov 2023 9.0 5.071882 12.92812 2.9924626 15.00754 Dec 2023 9.5 5.571882 13.42812 3.4924626 15.50754 Jan 2024 10.0 4.444803 15.55520 1.5040591 18.49594 Feb 2024 9.0 3.444803 14.55520 0.5040591 17.49594 Mar 2024 8.0 2.444803 13.55520 -0.4959409 16.49594·????????我們在創(chuàng)建時間序列的時候,聲明了周期為12(frequency),所以我們這里也是令m=12
1.4??Drift method 漂移法
????????另一種變體是允許預(yù)測隨時間增加或減少,其中隨時間的變化量(稱為漂移)設(shè)置為歷史數(shù)據(jù)中看到的平均變化。
???????? 因此,時間 T + h 的預(yù)測為?
1.4.1 R語言實現(xiàn)
rwf(y,5,drift=TRUE)Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 Jan 2023 9.628571 8.254411 11.00273 7.526975 11.73017 Feb 2023 9.757143 7.786220 11.72807 6.742876 12.77141 Mar 2023 9.885714 7.438540 12.33289 6.143084 13.62834 Apr 2023 10.014286 7.150601 12.87797 5.634658 14.39391 May 2023 10.142857 6.899307 13.38641 5.182275 15.10344如果不加’drift=TRUE‘的話,rwf(y,5)和naive(y,5)效果是一樣的
1.5 四者對比(可視化)
library(forecast) library(ggplot2)y<-ts(c(5,3,3.1,3.2,3.3,3.4,3.5,3.3,3.2,4,4.1,4.2,6,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5,10,9,8,8.5,8.4,8.5,8.6,8.7,8.8,8.9,9,9.5),start = 2020,frequency = 12)y_pre=window(y,start=2020,end=c(2022,2)) y_pre # Jan Feb Mar Apr May Jun Jul Aug #2020 5.0 3.0 3.1 3.2 3.3 3.4 3.5 3.3 #2021 6.0 4.0 4.1 4.2 4.3 4.4 4.5 4.6 #2022 10.0 9.0 # Sep Oct Nov Dec #2020 3.2 4.0 4.1 4.2 #2021 4.7 4.8 4.9 5.0 #2022 y_naive=naive(y_pre,h=10) y_mean=meanf(y_pre,h=10) y_snaive=snaive(y_pre,h=10) y_drift=rwf(y_pre,h=10,drift=TRUE) autoplot(y)+autolayer(y_mean,series='mean',PI=FALSE)+autolayer(y_naive,series='naive',PI=FALSE)+autolayer(y_snaive,series='snaive',PI=FALSE)+autolayer(y_drift,series'drift',PI=FALSE)?1.5.1 不同評價函數(shù)下的對比
accuracy(y_mean,y_test) # ME RMSE MAE #Training set 1.025822e-16 1.608336 1.017160 #Test set 4.159231e+00 4.176614 4.159231 # MPE MAPE MASE #Training set -8.620051 21.37827 0.6717093 #Test set 47.763243 47.76324 2.7466618 # ACF1 Theil's U #Training set 0.5666206 NA #Test set 0.4126294 16.59598總結(jié)
以上是生活随笔為你收集整理的机器学习笔记 时间序列预测(最基本的方法【benchmark】)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习笔记(时间序列):不同类型的图示
- 下一篇: 机器学习笔记 时间序列预测(基本数据处理