시계열 모델 선택에 k- 폴드 교차 검증 사용


70

질문 : 무언가를 확신하고 싶습니다 . 시계열과 함께 k- 폴드 교차 검증을 사용하는 것이 간단합니까, 사용하기 전에 특별한주의를 기울여야합니까?

배경 : 5 분마다 데이터 샘플을 사용하여 6 년의 시계열 (반 마코프 체인 사용)을 모델링하고 있습니다. 여러 모델을 비교하기 위해 6 년 안에 데이터를 분리하여 6 배 교차 검증을 사용하고 있으므로 훈련 세트 (매개 변수 계산)의 길이는 5 년이고 테스트 세트의 길이는 1입니다. 년. 시간 순서를 고려하지 않으므로 다른 세트는 다음과 같습니다.

  • 폴드 1 : 훈련 [12 34 5], 시험 [6]
  • 폴드 2 : 훈련 [12 34 6], 시험 [5]
  • 폴드 3 : 훈련 [12 34 5], 시험 [4]
  • 접기 4 : 훈련 [12 34 5], 시험 [3]
  • 폴드 5 : 훈련 [1 34 5 6], 시험 [2]
  • 접기 6 : 훈련 [2 3 4 5 6], 시험 [1].

저는 매년 서로 독립적이라는 가설을 세우고 있습니다. 어떻게 확인할 수 있습니까? 시계열과 k- 폴드 교차 검증의 적용 가능성을 보여주는 참조가 있습니까?


답변:


69

시계열 (또는 다른 본질적으로 정렬 된 데이터)은 교차 검증에 문제가 될 수 있습니다. 3 년차에 어떤 패턴이 나타나고 4-6 년 동안 머무르면 1 년과 2 년이 아니더라도 모델을 선택할 수 있습니다.

때때로 시계열에 대해 더 원칙적인 접근법은 다음과 같은 절차를 따르는 순방향 연결입니다.

  • 폴드 1 : 훈련 [1], 시험 [2]
  • 폴드 2 : 훈련 [1 2], 시험 [3]
  • 폴드 3 : 훈련 [1 2 3], 시험 [4]
  • 폴드 4 : 훈련 [12 34], 시험 [5]
  • 폴드 5 : 훈련 [12 34 5], 시험 [6]

이를 통해 예측시 표시되는 상황을보다 정확하게 모델링하여 과거 데이터를 모델링하고 미래 예측 데이터를 예측할 수 있습니다. 또한 데이터 크기에 대한 모델링의 종속성에 대한 감각을 제공합니다.


1
감사. Zach가 말했듯이, 그것을 할 수있는 정식 방법이라는 것을 알고 있습니다. 그리고 나는 왜 그런지 이해합니다. 내가 가진 문제는 데이터 크기의 변화를 고려할 것이라는 사실이기 때문에 모델의 "진정한"일반화 오류가 발생하지 않습니다. 그러나 혼합 오류 : 일반화 및 데이터 크기. 시계열의 교차 유효성 검사를 처리하는 다른 참조 (M.Hyndman 제외)를 알고 있습니까? 내가 잘못 이해하지 마라. 나는 네가하는 말과 하인드 먼의 말을 믿지 않는다. 나는 문제에 대한 몇 가지 관점을 갖고 싶다.
Mickaël S

나는 그러한 참조를 모른다는 것을 두려워하지만, 다른 사람이 그것을 알고 있다면 그것을보고 싶습니다.
Ken Williams

1
@Wayne, 저는이 솔루션이 각 겹마다 점점 더 많은 교육 데이터를 사용한다는 것을 의미합니다. 내 데이터에는 몇 년 사이에 분명히 차이가 있지만 뚜렷한 경향이나 계절성은 없습니다.
Mickaël S

3
@Mickael : 폴드 1을 사용할 수 있습니다 : 기차 [1 2] 테스트 [3]; 폴드 2 : 훈련 [2 3] 시험 [4]; 폴드 3 : 각 폴드마다 더 많은 데이터를 사용하는 것이 걱정되는 경우 [3 4] 테스트 [5] 등을 학습하십시오. 내 생각에 semi-MC 기술을 사용하면 추세가 없어도 몇 년 동안 실제로 스크램블을 할 수 없다고 생각합니다.
Wayne

3
@ MickaëlS : 나는이 논문 sciencedirect.com/science/article/pii/S0020025511006773를 발견 했고 그것이 흥미로울 것이라고 생각했다. 그들은이 '표준 적'접근법을 다른 두 가지 방법, 즉 '블록 부 스트랩'과 '리브 아웃 의존적'접근법과 비교합니다.
thebigdog

26

시계열 모델을 교차 검증하는 데 사용하는 방법은 순환 교차 검증입니다. 교육 목적으로 작은 데이터 하위 집합으로 시작하여 이후 데이터 포인트를 예측 한 다음 예측 된 데이터 포인트의 정확성을 확인하십시오. 그런 다음 동일한 예측 데이터 포인트가 다음 교육 데이터 세트의 일부로 포함되고 후속 데이터 포인트가 예측됩니다.

직관적으로 만들기 위해 다음은 동일한 이미지입니다.

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

동등한 R 코드는 다음과 같습니다.

i <- 36    #### Starting with 3 years of monthly training data 
pred_ets <- c()
pred_arima <- c()
while(i <= nrow(dt)){
  ts <- ts(dt[1:i, "Amount"], start=c(2001, 12), frequency=12)

  pred_ets <- rbind(pred_ets, data.frame(forecast(ets(ts), 3)$mean[1:3]))
	  pred_arima <- rbind(pred_arima, data.frame(forecast(auto.arima(ts), 3)$mean[1:3]))

  i = i + 3
}
names(pred_arima) <- "arima"
names(pred_ets) <- "ets"

pred_ets <- ts(pred_ets$ets, start=c(2005, 01), frequency = 12)
	pred_arima <- ts(pred_arima$arima, start=c(2005, 01), frequency =12)

accuracy(pred_ets, ts_dt)
accuracy(pred_arima, ts_dt)

R을 사용한 로지스틱 회귀와 같은 방법에 대해 이것을 수행하는 방법이 있습니까?
21:25에

1
@ hlyates, 내 이해가 가능하면 위의 코드를 약간 수정하면됩니다. pred_lr (logistic regression에 의한 예측)을 포함시키고 이에 따라 열 이름을 변경하십시오.
Jatin Garg

22

시계열 교차 검증을 수행하는 "정규적인"방법 (적어도 @Rob Hyndman에 의해 설명대로 )은 데이터 세트를 통해 "롤"하는 것입니다.

즉 :

  • 폴드 1 : 훈련 [1], 시험 [2]
  • 폴드 2 : 훈련 [1 2], 시험 [3]
  • 폴드 3 : 훈련 [1 2 3], 시험 [4]
  • 폴드 4 : 훈련 [12 34], 시험 [5]
  • 폴드 5 : 훈련 [12 34 5], 시험 [6]

기본적으로 훈련 세트에는 테스트 세트 이후에 발생하는 정보가 포함되어서는 안됩니다.


13

ARIMA(p,d,q)d>0d

교차 검증이 모델 선택 도구로 작동하려면 교육과 테스트 데이터 사이의 대략적인 독립성이 필요합니다. 시계열 데이터의 문제점은 인접한 데이터 포인트가 종종 매우 의존적이기 때문에 표준 교차 검증이 실패한다는 것입니다. 이에 대한 해결책 은 테스트 샘플의 양쪽에 테스트 샘플과 학습 샘플 사이 에 간격두는 것 입니다. 테스트 샘플 전에 차이를 없애야하는 이유는 시간이 앞뒤로 움직일 때 의존성이 대칭이기 때문입니다 (상관 관계를 고려하십시오).

hvvh

  • 폴드 1 : 훈련 [12 34 5h], 시험 [6]
  • 폴드 2 : 훈련 [12 34h h6], 시험 [5]
  • 폴드 3 : 훈련 [12 3h h5 6], 시험 [4]
  • 접기 4 : 훈련 [1 2h h4 5 6], 시험 [3]
  • 폴드 5 : 훈련 [1h h3 4 5 6], 시험 [2]
  • 폴드 6 : 훈련 [h2 34 5 6], 테스트 [1]

여기서 h는 훈련 샘플의 h 관측치가 해당 측면에서 삭제됨을 나타냅니다.


3

@thebigdog에 의해 언급 된 바와 같이, Bergmeir 등의 "시계열 예측기 평가를위한 교차 검증의 사용". 고정 시계열의 맥락에서 교차 유효성 검사에 대해 설명하고 다른 응답자가 제안한 순방향 연결이 도움이되지 않는 것으로 결정합니다. 이 백서에서는 포워드 체인을 마지막 블록 평가라고합니다.

표준 5 배 교차 검증을 사용하면 최종 오차가 과소 평가되었는지 또는 과대 평가되었는지에 관한 데이터 내 의존성의 실질적인 영향을 찾을 수 없습니다. 반대로, 마지막 블록 평가는 교차 검증 및 차단 된 교차 검증보다 덜 강력한 오류 측정을 생성하는 경향이 있습니다.

" 시계열 예측 모델 평가 : 성능 평가 방법에 대한 실증적 연구 "Cerqueira et al. 이 평가에 동의합니다. 그러나 고정되지 않은 시계열의 경우에는 대신 Rep-Holdout이라는 홀드 아웃 변형을 사용하는 것이 좋습니다. Rep-Holdout에서는 a시계열 Y에서 테스트 데이터의 시작을 표시 하는 점이 선택됩니다 . 점 a은 창 안에있는 것으로 결정됩니다. 아래 그림에 설명되어 있습니다.

담당자 설명

이 논문은 길고 철저하게 공개적으로 사용 가능한 코드 로이 질문에 대한 답변에서 언급 된 다른 모든 방법을 테스트 합니다 . 여기에는 테스트 데이터 전후에 간격을 포함시키는 @Matthias Schmidtblaicher 주장이 포함됩니다. 또한, 나는 종이를 요약했습니다. 이 논문의 실제 결론에는 시계열 모델을 평가하기위한 의사 결정 트리가 포함됩니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.