[MultiThreaded] What’s Wrong With My Time Series 리뷰

Heejun Park
Almighty Data Science Bootcamp
9 min readJun 9, 2018

본 글은 Stitch fix의 Tech Blog MultiThreaded를 리뷰한 글입니다.

What’s wrong with my time series? Model validation without a hold-out set

시계열 모델링은 공급 및 수요 예측 비즈니스 운영에서 중요하지만, 문제는 일반적인 교차 검증 방식으로는 검증하기 어렵다는 것입니다. 그 이유는 시계열 데이터는 자기상관( Autocorrelation )되므로 Training 과 Testing을 위해 모든 데이터 요소에서 독립적이고 무작위로 부분 집합을 선택하는 것은 적절하지 않습니다.

Why not cross-validate?

교차 검증은 Train 에 사용되지 않은 무작위로 선택된 데이터를 Test 하여 모델의 예측력을 측정하는 프로세스입니다. 그러나 시계열 데이터의 자기 상관은 시간이 지남에 따라 데이터 포인트가 서로 독립적이지 않기 때문에 Train set 에서 일부 데이터 포인트를 hold-out 한다고 해서 반드시 관련 정보가 모두 제거되는 것은 아닙니다. 또한, 시계열 모델에는 자기 상관을 다루는 자기 회귀 구성 요소가 포함되어 있습니다. 이 모델은 균등한 간격의 데이터 포인트에 의존합니다. 우리가 데이터의 무작위 부분 집합을 생략하면, Train 및 Test set는 자기 회귀 구성 요소를 파괴하는 구멍을 갖게됩니다.

다른 대안은 무작위로 선택된 특정 시점 이전의 데이터를 Train set 으로 사용하고 그 이후의 데이터를 Test set 으로 사용하여 교차 검증에 근사하는 것입니다. 장기간의 오차를 측정하기 위해서는 Test set은 적어도 우리가 예측하는 시점인 “forecast horizon”을 포함시켜야합니다. 그러나 젊거나 급변하는 비즈니스 환경에서는 많은 기록과 다른 데이터와 관련되지 않은 다른 기간의 데이터가 없으므로 단일 기간의 유용한 Test set 를 만드는 것이 사실상 불가능합니다.

그래서 시계열에서 전통적인 오차 측정 방법은 작동하지 않으니 다른 접근을 취해보기로 했습니다.

f 함수는 xt와 자기 상관 요소 y(t-1)의 선형 함수입니다. τ는 상관계수 β와 ϕ가 변할 때마다 모델의 다른 snapshot을 나타냅니다. 예측을 재생산 하고 오류를 분석할 수 있도록 업데이트 할때마다 모델의 snapshot을 보존하는 것이 좋습니다.

Sources of Error

첫째, 모델 : 공식, 변수 및 계수는 모델링하는 프로세스를 정확하게 나타낼 필요가 있습니다.

둘째, 입력 x : 전체 forecast horizon 에 대해 종종 완벽하지 않기 때문에 가정 여겨집니다. 그들은 예측의 결과가 될 수 있으며 변경 될 수 있습니다. 예컨대, widget 공급의 예측은 각 시간 t에 우리에게 전달되도록 기대된 widget의 수로 입력이 될 수 있다. 우리는 widget의 옳은 수량이 제 시간에 도착하기를 가정하지만, 그렇지 않으면 우리의 예측이 잘못되었을 것입니다.

따라서 우리가 신경 쓸 수있는 오류의 종류는 다음과 같습니다.

  1. 모델 오류 : 모델이 완벽한 입력 값으로 얼마나 잘 수행하는가? 우리 모델이 이상적인 환경에서 어떻게 작동하는지를 안다면 모델 역학의 설명력을 반영하여 이는 우리에게 예측력에 대해 알려줍니다.
  2. 가정 오류 : 우리의 모델이 좋다고 가정하고, 기록적 오류가 가정에 얼마나 많아 x가 우리의 예측에 영향을 주었을까?

실제로 모델 오류의 영향력이 가장 크며 이를 최소화 하는데 시간을 소비합니다. 가정 오류에 대해 방어하는 방법은 우리와 우리 예측의 사용자가 그 영향을 이해하는 것입니다.

Model Error

backtest를 위해 최근 모델과 가장 좋은 모델을 사용하여 최근 기록에 대해 재예측을 합니다. 실제와 backtest 사이의 차이는 모델 오류입니다. 우리는 모든 입력값을 실제 기록값들로 설정하는 분석으로부터 가정 오류를 제거합니다.

자기 회귀 요소가 없는 선형 회귀의 경우에서 backtest 는 적합성의 기록적 우수성을 측정하는 것과 같습니다. 모델에 자기 회귀 분석 요소가 포함되어 있는 경우 backtest 에서의 실제값 ( 실제 y 값 ) 또는 재예측 된 y값을 사용합니다. 여기서 모델 오류의 일부로써 자기 회귀를 다루는 재예측 된 y값을 사용합니다. 이것은 가정이 완벽하다면 모델이 수행한 결과를 더 잘 반영합니다.

앞으로 얼마나 많은 모델 오류를 예상해야합니까?

최근의 훌륭한 모델을 이용한 backtest 에 대한 한 가지 우려는 과대적합으로 인해 미래의 예측 오차를 과소 평가하는 경향이 있다는 것입니다. 왜 그럴까요? 최상의 예측을 제공하기 위해 새로운 데이터가 들어올 때마다 모델을 자주 수정하고 기능 변경 사항을 업데이트하여 기록을 보다 잘 반영합니다. 이것은 함수가 기록이 변함에 따라 끊임없이 바뀌고 있음을 의미합니다.

우리가 지금부터 6 월 동안 얼마나 틀릴지 알고 싶다면? 그 접근법은 우리가 6개월 전부터 얼마나 틀렸는지 묻는 것입니다. 모델의 6개월짜리 snapshot으로 backtest를 실행하면됩니다. 이전과 마찬가지로 가정 오류의 영향을 제거하기 위해 실제 입력값을 사용합니다.

Sources of Model Error

Non-zero 모델 오류는 우리 모델이 설명 변수들을 놓치고 있음을 나타냅니다. 실제로, 우리는 모든 모델 오류를 제거할 수 없고, 피할 수 없는 자연적 변화로부터 예측에 약간의 오차가 있을 것입니다. 자연적 변화는 측정 오류, 예측할 수 없는 외부 시장 세력 등과 같이 우리 모형으로는 결코 포착하지 못할 모든 것을 반영해야 합니다. 오류의 분포는 정상에 가깝고, 이상적으로는 작은 평균을 가져야합니다. 모델 오류가 단순한 자연적 변화처럼 보이지 않을 때 모델에서 중요한 설명 변수가 누락되었다는 증거를 얻습니다. — 오류 분포가 어떤 식으로든 왜곡되거나 예상보다 많은 이상값이 있거나 또는 평균은 너무 큰 경우 — 이러한 상황이 발생하면 결측치나 부정확한 모델 변수들을 확인하고 수정해야 합니다.

Assumption Error

모델 오류를 측정하고 모델을 개선하여 오류가 작아졌으므로 우리는 입력 x의 정확도에 의존하는 예측의 정확도를 알고자합니다. 이것들이 부정확한 것으로 밝혀지면 우리의 예측도 그럴 것입니다. 이 오류를 모델 오류와 별도로 측정하면 개선해야 할 예측 프로세스의 부분을 정확히 파악할 수 있습니다.

실제로 가정 오류는 종종 예측에서 가장 큰 오류의 원인입니다. 과거에 가정 오류가 우리의 예측에 어떻게 영향을 미치는지는 측정 가능하고 간단합니다. 그러나 가정 오류가 앞으로 어떻게 영향을 미칠지에 대한 기대치를 설정하려면 시뮬레이션 기반 접근 방식이 필요합니다.

Historical assumption error

우리는 몇 개월 전에 예측을 했고, 현실과 다르게 나왔습니다. 우리 오류의 얼마만큼이 부정확한 가정 때문입니까? 가정 오류는 총 오류에서 모델 오류를 뺀 값입니다. 우리는 이미 모델 오류를 측정했고, 우리가 필요한 건 총 오류입니다. 총 오류는 단순하게 이전에 만든 예측값과 실제값 간의 에러입니다. 만약 예측값이 없다면 우리가 이전에 만들었던 예측값을 만들었던 모델로부터의 snapshot을 사용하여 재생산하면됩니다. 이번에 우리는 입력값을 실제 x 값을 넣지 않고 우리가 가정하는 입력값 x 를 넣을 것입니다.

Future assumption error

적시에 widget 주문 배달하는 것과 같이 안정적인 범위 내에서 일반적으로 변하는 입력에 대해 측정 할 때 미래의 가정 오류 추정치로 과거의 가정 오류를 사용할 수 있습니다. 그러나 많은 가정 오류는 크기와 ( 또는 ) 시간에서 예측할 수 없습니다. 예를 들어, 새로운 종류의 widget 을 공개적으로 출시 할 경우, 우리는 widget 을 얼마나 빨리 판매 할 것인가에 대한 언론의 영향력을 가정해야 할 것입니다. 세계 경제의 혼란과 같은 대규모 외부 사건은 우리의 예측에 큰 영향을 미칠 수 있지만, 우리는 규모나 시기에 대해서는 거의 알지 못합니다. 두 경우 우리는 가능한 결과 범위를 파악하기 위해 중요한 사건의 규모와 시기가 달라지는 시나리오를 시뮬레이션 할 수 있습니다.

시나리오를 현명하게 실행하려면 프로세스의 가장 영향력있는 요인을 이해하는 것이 좋습니다. 예를 들어, 제품 출시와 같은 특정 이벤트에 대한 공급 예측을 수행 할 때 판매량 및 생산 속도가 다른 시나리오는 물론 미디어 buzz로 인한 판매 파열을 고려해야합니다. 시나리오는 낮은, 중간 및 높은 대안 또는 영향력 크기의 일부 분포에서 가능한 많은 결과의 몬테 카를로 시뮬레이션의 형태를 취할 수 있습니다.

영향의 크기와 시기가 달라지는 시뮬레이션 시나리오를 실행하여 예측에 미치는 영향의 범위를 파악하고 예측 결과에 의존하는 사람들에게 이 범위를 전달할 수 있습니다.

Choosing an Error Statistic

오류 metric 을 의도적으로 피한 이유는 특정 요구 사항에 맞는 오류 metric 을 선택해야하기 때문입니다. 눈금의 규모에 따라 달라지는 척도를 측정하고 최소화하려는 경우 이상치를 얼마나 계량 할 것인지에 따라 MAE ( Mean Absolute Error ) 또는 RMSE ( Root Mean Squared Error )를 선택할 수 있습니다. 또는 MAPE ( Mean Absolute Percentage Error )와 같은 비율 추정치를 원할 수도 있습니다. 무엇을 선택하든 수정해야 할 일관성있는 모델 편향을 나타낼 수 있기 때문에 최소한 하나의 요약 통계뿐만 아니라 원시 잔차의 분포를 확인하는 것이 중요합니다.

--

--