세모님들, 안녕하세요.
오늘은 교차검증 후 테스트 하는 방법에 대해서 알아보려고 합니다.
이전글에서는 시계열 데이터 교차검증법에 대해 보았는데요. (안보신 분들은 아래글을 참조해주세요!_
2022.01.24 - [분류 전체보기] - 시계열 데이터 교차검증, TimeSeries Cross Validation(CV)
시계열 데이터 교차검증, TimeSeries Cross Validation(CV)
저번 글에서는 시계열 예측 모형에 대해서 알아보았는데요. 이번 글에서는 그러한 모형을 검증하는 방법에 대해서 알아보겠습니다. 검증 방법중 가장 기본적인 방법은 일부 데이터를 분리하여
triangle-world.tistory.com
교차검증법으로 하이퍼파라미터 튜닝을 하고, 만족할만한 성능을 얻은 후에는 테스트 데이터를 예측해야겠죠?
이 테스트 데이터를 예측하는 방법에는 2가지 방법이 있습니다.
1. 각 폴드에서 학습한 모델을 저장해두고 해당 모델들의 예측값에 대한 평균을 구하는 방법
2. 학습 데이터 전체로 다시 모델을 학습시킨후 해당 모델을 예측하는 방법
1. 각 폴드에서 학습한 모델을 저장해두고 해당 모델들의 예측값에 대한 평균을 구하는 방법

위 방식에 대한 장점은 다음과 같은데요.
- 추가학습이 필요없고, 검증으로 점수가 짐작된다는 점에서 이해하기 쉽습니다.
- 각 폴드에서 학습에 사용한 데이터를 합치면 결국 전체 학습 데이터이므로 처음부터 학습 데이터 전체를 모델에 학습시킨 경우와 다름없는 성능을 기대할수 있음.
- 앙상블 효과있음
하지만 단점은 테스트 데이터 크기가 클 경우, 폴더수만큼 예측을 반복하므로 시간 걸린다는 점입니다.
2. 학습 데이터 전체로 다시 모델을 학습시킨후 해당 모델을 예측하는 방법

위 방식에 대한 장점은
- 학습데이터 전체에 대해 학습시키는 편이 더 정확하다는 의견이 있다는 점입니다.
반면에 단점은,
- 학습데이터 전체에 대해 다시 학습하므로 시간이 걸린다는 점
- 교차검증할때와 학습데이터수가 다른데도 동일한 하이퍼파라미터를 사용해도 될지 우려되는 부분이 있습니다.
위 2가지 방법 중 어떤 방법을 사용해도 무방하나,
저의 데이터 같은 경우에는 연도별 발생하는 사회적 이벤트로 인해서 테스트 시점의 데이터와 학습 시점의 데이터의 분포가 다른 데이터였습니다.

이렇게 공변량 이동(covariate shift)문제가 있는 데이터에서 교차검증(cross-validation)을 한 후, 1번의 방식으로 예측할때, 심하게 왜곡되었습니다. 잘못해서 학습 데이터에는 값이 작은 데이터만! 테스트셋에는 값이 큰 데이터만 들어가있을 수 있기 때문에, Bias가 크게 예측되었습니다.
따라서, 전체 데이터를 사용해서 예측하는 것이 바이어스를 더 줄일 수 있었습니다.