머신 러닝으로 여러 기간 예측


9

나는 최근에 시계열 지식을 되찾았고 머신 러닝은 대부분 한 걸음 앞서 나간다는 것을 깨달았습니다.

한 단계 미리 예측 우리가 시간별 데이터가있는 경우 예를 들어, 자정 등을위한 예측 오전 11시 오전 11시 오전 10시에서 데이터를 사용, I 평균 예측

여기에 이미지 설명을 입력하십시오

머신 러닝 방법으로 미리 예측할 수 있습니까? 사전 예측을 사용하면 예를 들어 시간별 데이터를 가정 할 때 오전 10시의 데이터를 사용하여 7 단계 미리 예측을 사용하여 11,12,13,14,15,16,17 ' o 시계.

예시 사진 : 여기에 이미지 설명을 입력하십시오

내 주요 질문과 관련하여 궁금합니다.

  • 기계 학습을 사용하여 사전 예측을하는 사람이 보이지 않는 이유는 무엇입니까?
  • 머신 러닝을 사용하는 방법이 있다면 ARIMA보다 다소 정확합니까?

답변:


7

(이 부분은 이전 게시물 에서 가져 왔습니다 . ) 우선 다중 단계 시간 시리즈 예측을 수행하는 두 가지 다른 방법을 구별해야합니다. 재귀 예측 및 직접 예측 :

  • 재귀 예측 (반복 예측이라고도 함)에서는 한 단계 앞선 예측에 대해서만 모델을 학습합니다. 교육이 완료된 후 원하는 단계 예측 범위에 도달 할 때까지 최종 모델을 재귀 적으로 적용하여 1 단계 전진, 2 단계 전진 등을 예측합니다. 이를 위해 각 후속 단계의 예측을 모델로 다시 공급하여 다음 단계를 생성합니다. 이 방법은 ARIMA 및 지수 평활 알고리즘과 같은 기존의 예측 알고리즘에 의해 사용되며, 또한 (참조 기계 학습 기반의 예측에 사용할 수있는 이 게시물 예를 들어, 및 이 게시물에 몇 가지 논의를).n
  • 직접 예측은 각 단계에 대해 별도의 모델을 훈련 할 때입니다 (따라서 단계에 재귀 적 으로 도달하는 대신 단계 를 "직접"예측하려고합니다 . 직접 예측에 대한 설명은 Ben Taied et al. 참조) 더 복잡한 결합 된 접근법.nthn

이제 주요 질문에 대답하십시오.

머신 러닝 방법으로 미리 예측할 수 있습니까?

ML 방법은 재귀 및 직접 다단계 예측을 사용하여 h- 단계 사전 예측을 생성 할 수 있습니다. 뿐만 아니라 직접 다단계 예측의 경우 ARIMA 또는 지수 평활과 같은 기존 모델보다 실제로 작업에 더 적합합니다. 그러나 직접 다단계 예측의 경우 사전에 모델을 예측하고 훈련하려는 h 단계를 미리 지정해야하지만 재귀 예측의 경우 원하는 미래의 여러 단계에 모델을 사용할 수 있습니다. .

또한 Chevillon & Hendry 는 경우에 따라 직접 다단계 예측이 재귀 예측보다 더 정확하다고 주장합니다. 즉, ML이 전통적인 방법보다 더 정확할 것입니다.

다른 질문들 :

  • 기계 학습을 사용하여 사전 예측을하는 사람이 보이지 않는 이유는 무엇입니까?

많은 사람들이 ML을 다단계 예측에 사용하고 있습니다. 특히 신경망을 사용합니다. R 예보 패키지, Kourentzes nnfor R 패키지, Amazon DeepAR 모델 등에서 사용할 수있는 Hyndman의 nnetar 방법.

XGBoost는 소수의 Kaggle 시계열 대회에서도 성공적으로 사용되었습니다.

참조 Bontempi 등. 일반적인 토론을 위해.

  • 머신 러닝을 사용하는 방법이 있다면 ARIMA보다 다소 정확합니까?

그것은 공개적인 질문이며, 예측하는 데이터와 응용 프로그램에 따라 달라집니다.


1

지난 몇 개월 동안 이상 탐지를 위해 시계열을 가지고 놀고 있으며 내 경험을 공유 할 수 있습니다.

내가 작업했던 시계열은 두 가지 계절성 (일일 및 주별)으로 특징 지어졌으며, 낮에는 추세가없고 피크가 많았습니다.

몇 가지 실험을 한 다음 LSTM 신경망을 기반으로 모델을 선택했습니다. 필자의 경우 arima보다 성능이 뛰어 났지만 통계의 모든 것에는 일반적인 해결책이 없기 때문입니다.

신경망을 사용하여 미래에 하나 이상의 시간 단계를 예측하는 것은 매우 간단합니다. 하나 대신 N 값을 출력해야하며 N 출력은 실제 N 관측치와 비교됩니다.

내 경험상 나는 낮은 N (1)을 사용함으로써, 실제로 계절성을 "학습"하지 않고, 새로운 것을 예측하기 위해 과거에는 시간 단계를 거의 사용하지 않을 것이라고 말할 수있다. 다른 한편으로, N을 너무 많이 증가 시키면 계절성이 학습되지만 전체 정확도는 감소합니다.

필자의 분석을 위해 N = 4 (향후 2 시간)가 좋은 타협점을 찾았습니다.


1

보다 일반적인 용어로 질문에 대답 하기 위해 머신 러닝을 사용하고 사전 예측을 예측할 수 있습니다. 까다로운 부분은 각 관측치에 대해 관측치의 실제 값과 정의 된 범위에 대한 시계열의 과거 값을 갖는 행렬로 데이터를 재구성해야한다는 것입니다. 실제로 ARIMA 모델을 매개 변수화 할 때 시계열 예측과 관련이있는 데이터 범위를 수동으로 정의해야합니다. 행렬의 너비 / 수평선은 행렬 에서 취한 다음 값을 정확하게 예측하는 데 중요 합니다. 수평선이 제한되어 있으면 계절 효과를 놓칠 수 있습니다.

이 단계를 완료 한 후에는 미리 단계를 예측하려면 마지막 관찰을 기반으로 첫 번째 다음 값을 예측해야합니다. 그런 다음 예측을 "실제 값"으로 저장해야합니다.이 값 은 ARIMA 모델과 같이 시간 이동을 통해 두 번째 다음 값을 예측하는 데 사용됩니다 . h 단계를 앞당기려면 프로세스를 h 번 반복해야합니다. 각 반복은 이전 예측에 의존합니다.

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)

이제 시계열 모델 또는 기계 학습 모델이 더 효율적인지 여부를 결정하는 일반적인 규칙은 없습니다. 기계 학습 모델의 경우 계산 시간이 더 길어질 수 있지만, 시계열을 사용하여 시계열을 예측하기 위해 모든 유형의 추가 기능을 포함 할 수 있습니다 (예 : 숫자 또는 논리 기능). 일반적인 조언은 두 가지를 모두 테스트하고 가장 효율적인 모델을 선택하는 것입니다.


시간 이동 이라고 하는 것은 실제로 표준 arima가하는 일 이라고 언급하고 싶을 수도 있습니다 . 따라서 Arima-Predictions는 매우 선형적인 경향이 있습니다.
5

네 맞습니다. 이 단계를 명확히하기 위해 답변을 편집하겠습니다.
AshOfFire

1
시계열 모델에서는 추가 기능을 포함 할 수도 있습니다.
Tim

ARIMAX를 사용하면 정확하지만 숫자 여야하며 추가 된 계수는 ARMA에 사용 된 계수만큼 쉽게 해석 할 수 없습니다.
AshOfFire
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.