1.3 문제를 수학적으로 정의하기

실습 · 연습문제 1개

과거 정보만 쓰는 lag 특징 만들기 causal-lag-features

시계열 x0,x1,…,xT−1x_0, x_1, \dots, x_{T-1}에서 시각 tt의 예측에 쓸 입력은 시각 tt까지 관측된 값만으로 만들어야 한다. 함수 lag_features(x, lags)를 완성해 lag 특징 행렬을 반환한다.

  • 반환값 F의 shape은 (T, len(lags))이다.
  • F[t, j] = x[t - lags[j]]이다. 즉 lags[j] = 0이면 현재 값, lags[j] = 3이면 3단계 전의 값이다.
  • t - lags[j] < 0이어서 값이 없는 칸은 np.nan으로 채운다(앞쪽 값을 당겨 채우거나 0을 넣지 않는다).
  • lags에 음수가 있으면 미래 값을 쓰게 되므로 ValueError를 낸다.

테스트는 다음을 확인한다.

  1. 값과 shape이 정의대로인지
  2. 값이 없는 칸이 NaN인지
  3. 시각 tt 이후의 값을 바꿔도 F[:t+1]이 바뀌지 않는지 — 이것이 인과적(causal) 입력의 정의다
  4. 음수 lag을 거부하는지

힌트: np.full((T, len(lags)), np.nan)으로 시작해, lag마다 슬라이스로 채운다.