데이터 과학에서 시간에 따른 변화 패턴을 분석하여 다양한 예측 모델을 구축하면, 미래 예측은 물론 다양한 의사결정에 도움이 된다. 이 책에서는 파이썬 코드로 완벽하게 작동하는 시계열 예측 방법을 소개한다. 시계열 데이터를 정의하고, 베이스라인 모델을 개발하고, 통계적 모델과 텐서플로 및 최신 딥러닝 도구를 사용하여 대규모 모델 구축 방법을 학습하고, 자동화된 예측 라이브러리까지 다룬다. 구글 주가 동향, 항당뇨제 처방량 예측, 가정의 전력 소비량 예측 등 다양한 실무 사례로 시계열 예측 분석을 마스터하자.
Contents
옮긴이 머리말 xiii
베타리더 후기 xiv
머리말 xvi
감사의 말 xviii
이 책에 대하여 xix
표지에 대하여 xxiii
PART I 시간은 그 누구도 기다려주지 않는다
CHAPTER 1 시계열 예측의 이해 3
1.1 시계열 소개 4
__1.1.1 시계열의 구성요소 5
1.2 시계열 예측에 대한 조감도 8
__1.2.1 목적 설정하기 10 / 1.2.2 목적을 달성하기 위해 무엇을 예측해야 하는지 결정하기 10 / 1.2.3 예측할 기간 설정하기 10 / 1.2.4 데이터 수집하기 10 / 1.2.5 예측 모델 개발하기 11 / 1.2.6 상용 환경에 배포하기 12 / 1.2.7 모니터링하기 12 / 1.2.8 새로운 데이터 수집하기 12
1.3 시계열 예측이 다른 회귀 작업들과 다른 점 13
__1.3.1 시계열에는 순서가 있다 13 / 1.3.2 시계열에 특징이 없는 경우가 있다 14
1.4 다음 단계 14
요약 15
CHAPTER 2 단순하게 미래 예측하기 16
2.1 베이스라인 모델 정의하기 18
2.2 과거 평균으로 예측하기 19
__2.2.1 베이스라인 구현을 위한 설정 20 / 2.2.2 과거 평균 기반 베이스라인 모델 구현하기 22
2.3 작년의 평균으로 예측하기 27
2.4 마지막으로 측정된 값으로 예측하기 29
2.5 단순한 계절적 예측 구현하기 31
2.6 다음 단계 32
요약 33
CHAPTER 3 확률보행 따라가보기 35
3.1 확률보행 프로세스 37
__3.1.1 확률보행 프로세스 시뮬레이션하기 37
3.2 확률보행 식별하기 40
__3.2.1 정상성 42 / 3.2.2 정상성 테스트하기 44 / 3.2.3 자기상관함수 48 / 3.2.4 모든 것을 종합하기 48 / 3.2.5 GOOGL은 확률보행인가? 52
3.3 확률보행 예측하기 55
__3.3.1 긴 기간 예측하기 55 / 3.3.2 다음 시간 단계 예측하기 61
3.4 다음 단계 64
3.5 연습 65
__3.5.1 확률보행 시뮬레이션하기와 예측하기 65 / 3.5.2 GOOGL의 일일 종가 예측하기 66 / 3.5.3 직접 선택한 종목의 일일 종가 예측하기 66
요약 67
PART 2 통계적 모델을 사용하여 예측하기
CHAPTER 4 이동평균과정 모델링하기 71
4.1 이동평균과정 정의하기 73
__4.1.1 이동평균과정의 차수 식별하기 75
4.2 이동평균과정 예측하기 80
4.3 다음 단계 90
4.4 연습 91
__4.4.1 MA(2) 프로세스 시뮬레이션하고 예측 수행하기 92 / 4.4.2 MA(q) 프로세스 시뮬레이션하고 예측 수행하기 92
요약 93
CHAPTER 5 자기회귀과정 모델링하기 94
5.1 소매점의 주간 평균 유동인구 예측하기 95
5.2 자기회귀과정 정의하기 97
5.3 정상적 자기회귀과정의 차수 찾기 98
__5.3.1 편자기상관함수 104
5.4 자기회귀과정 예측하기 107
5.5 다음 단계 114
5.6 연습 114
__5.6.1 AR(2) 프로세스 시뮬레이션하고 예측 수행하기 114 / 5.6.2 AR(p) 프로세스 시뮬레이션하고 예측 수행하기 115
요약 115
CHAPTER 6 복잡한 시계열 모델링하기 116
6.1 데이터 센터의 대역폭 사용량 예측하기 117
6.2 자기회귀이동평균과정 살펴보기 120
6.3 정상적 ARMA 프로세스 식별하기 122
6.4 일반적 모델링 절차 고안하기 128
__6.4.1 아카이케 정보 기준 이해하기 130 / 6.4.2 AIC를 사용하여 모델 선택하기 132 / 6.4.3 잔차 분석 이해하기 134 / 6.4.4 잔차 분석 수행하기 139
6.5 일반적 모델링 절차 적용하기 143
6.6 대역폭 사용량 예측하기 152
6.7 다음 단계 157
6.8 연습 157
__6.8.1 시뮬레이션된 ARMA(1,1) 프로세스에 대한 예측 수행하기 158 / 6.8.2 ARMA(2,2) 프로세스 시뮬레이션하고 예측 수행하기 158
요약 159
CHAPTER 7 비정상적 시계열 예측하기 161
7.1 자기회귀누적이동평균 모델 정의하기 164
7.2 비정상적 시계열에 적용하기 위해 일반적 모델링 절차 수정하기 165
7.3 비정상적 시계열 예측하기 167
7.4 다음 단계 177
7.5 연습 177
__7.5.1 4장, 5장, 6장의 데이터 집합에 ARIMA(p,d,q) 모델 적용하기 177
요약 178
CHAPTER 8 계절성 고려하기 179
8.1 SARIMA(p,d,q)(P,D,Q)m 모델 살펴보기 180
8.2 시계열에서 계절별 패턴 식별하기 183
8.3 월간 항공 승객 수 예측하기 187
__8.3.1 ARIMA(p,d,q) 모델을 사용하여 예측하기 190 / 8.3.2 SARIMA(p,d,q)(P,D,Q)m 모델을 사용하여 예측하기 196 / 8.3.3 각 예측 방법의 성능 비교하기 200
8.4 다음 단계 203
8.5 연습 203
__8.5.1 존슨앤드존슨 데이터 집합에 SARIMA(p,d,q)(P,D,Q)m 모델 적용하기 203
요약 204
CHAPTER 9 모델에 외생 변수 추가하기 205
9.1 SARIMAX 모델 살펴보기 207
__9.1.1 미국 거시경제 데이터 집합의 외생 변수 탐색하기 208 / 9.1.2 SARIMAX 사용 시 유의사항 211
9.2 SARIMAX 모델을 사용하여 실질 GDP 예측하기 212
9.3 다음 단계 221
9.4 연습 222
__9.4.1 SARIMAX 모델에 모든 외생 변수를 사용하여 실질 GDP 예측하기 222
요약 222
CHAPTER 10 다중 시계열 예측하기 223
10.1 VAR 모델 살펴보기 225
10.2 VAR(p) 모델에 대한 모델링 절차 설계하기 227
__10.2.1 그레인저 인과관계 테스트 살펴보기 229
10.3 실질 가처분 소득과 실질 소비 예측하기 230
10.4 다음 단계 242
10.5 연습 243
__10.5.1 VARMA 모델을 사용하여 realdpi와 realcons 예측하기 243 /10.5.2 VARMAX 모델을 사용하여 realdpi와 realcons 예측하기 244
요약 244
CHAPTER 11 캡스톤 프로젝트: 호주의 항당뇨제 처방 건수 예측하기 245
11.1 필요한 라이브러리 임포트하고 데이터 로딩하기 247
11.2 수열과 그 구성요소 시각화하기 248
11.3 데이터로 모델링하기 250
__11.3.1 모델 선택 수행하기 253 / 11.3.2 잔차 분석 수행하기 254
11.4 예측을 수행하고, 모델 성능 평가하기 256
11.5 다음 단계 260
PART 3 딥러닝을 활용하여 대규모 예측하기
CHAPTER 12 시계열 예측을 위한 딥러닝 소개하기 263
12.1 시계열 예측에 딥러닝을 사용해야 하는 경우 264
12.2 다양한 유형의 딥러닝 모델 살펴보기 265
12.3 예측을 위한 딥러닝 적용 준비하기 268
__12.3.1 데이터 탐색 수행하기 268 / 12.3.2 특징 엔지니어링과 데이터 분할 272
12.4 다음 단계 277
12.5 연습 277
요약 278
CHAPTER 13 딥러닝을 위해 데이터 윈도잉하고 베이스라인 모델 만들기 279
13.1 데이터 윈도우 만들기 280
__13.1.1 시계열 예측을 위한 딥러닝 모델을 훈련하는 방법 살펴보기 280
__13.1.2 DataWindow 클래스 구현하기 284
13.2 베이스라인 모델 적용하기 292
__13.2.1 단일 단계 베이스라인 모델 292
__13.2.2 다중 단계 베이스라인 모델 295
__13.2.3 다중 출력 베이스라인 모델 299
13.3 다음 단계 303
13.4 연습 303
요약 304
CHAPTER 14 딥러닝 첫걸음 305
14.1 선형 모델 구현하기 306
__14.1.1 단일 단계 선형 모델 구현하기 307 / 14.1.2 다중 단계 선형 모델 구현하기 309 / 14.1.3 다중 출력 선형 모델 구현하기 311
14.2 심층 신경망 구현하기 312
__14.2.1 단일 단계 모델로 심층 신경망 구현하기 314 / 14.2.2 다중 단계 모델로 심층 신경망 구현하기 317 / 14.2.3 다중 출력 모델로서 심층 신경망 구현하기 319
14.3 다음 단계 320
14.4 연습 321
요약 322
CHAPTER 15 LSTM으로 과거 기억하기 323
15.1 순환 신경망 살펴보기 324
15.2 LSTM 아키텍처 살펴보기 326
__15.2.1 망각 게이트 327 / 15.2.2 입력 게이트 329 / 15.2.3 출력 게이트 330
15.3 LSTM 아키텍처 구현하기 332
__15.3.1 단일 단계 모델로서 LSTM 구현하기 332 / 15.3.2 다중 단계 모델로서 LSTM 구현하기 335 / 15.3.3 다중 출력 모델로서 LSTM 구현하기 338
15.4 다음 단계 341
15.5 연습 342
요약 343
CHAPTER 16 CNN으로 시계열 필터링하기 344
16.1 CNN 살펴보기 345
16.2 CNN 구현하기 349
__16.2.1 CNN을 단일 단계 모델로서 구현하기 350 / 16.2.2 CNN을 다중 단계 모델로서 구현하기 354 / 16.2.3 CNN을 다중 출력 모델로서 구현하기 356
16.3 다음 단계 359
16.4 연습 359
요약 361
CHAPTER 17 예측으로 더 많은 예측하기 362
17.1 ARLSTM 아키텍처 살펴보기 363
17.2 자기회귀 LSTM 모델 구축하기 364
17.3 다음 단계 370
17.4 연습 371
요약 371
CHAPTER 18 캡스톤 프로젝트: 가정의 전력 소비량 예측하기 372
18.1 캡스톤 프로젝트 이해하기 373
__18.1.1 캡스톤 프로젝트의 목표 375
18.2 데이터 랭글링 및 전처리하기 376
__18.2.1 누락된 데이터 처리하기 377 / 18.2.2 데이터 변환 379 / 18.2.3 데이터 리샘플링하기 379
18.3 특징 엔지니어링 382
__18.3.1 불필요한 열 제거하기 383 / 18.3.2 계절적 기간 식별하기 383 / 18.3.3 데이터를 분할하고 규모 조정하기 386
18.4 딥러닝으로 모델링할 준비하기 387
__18.4.1 초기 설정 387 / 18.4.2 DataWindow 클래스 정의하기 389 / 18.4.3 모델 훈련을 위한 유틸리티 함수 391
18.5 딥러닝으로 모델링하기 392
__18.5.1 베이스라인 모델 392 / 18.5.2 선형 모델 396 / 18.5.3 심층 신경망 397 / 18.5.4 장단기 메모리 모델 398 / 18.5.5 합성곱 신경망 399 / 18.5.6 CNN과 LSTM 결합하기 401 / 18.5.7 자기회귀 LSTM 모델 402 / 18.5.8 최적의 모델 선택하기 404
18.6 다음 단계 406
PART 4 대규모 예측 자동화하기
CHAPTER 19 Prophet으로 시계열 예측 자동화하기 409
19.1 자동화된 예측 라이브러리들에 대한 개관 410
19.2 Prophet 살펴보기 412
19.3 Prophet을 사용하여 기본적 예측해보기 414
19.4 Prophet의 고급 기능 살펴보기 420
__19.4.1 시각화 기능 421 / 19.4.2 교차 검증과 성능 지표 425 / 19.4.3 하이퍼파라미터 튜닝 429
19.5 Prophet으로 견고한 예측 절차 구현하기 432
__19.5.1 예측 프로젝트: 구글에서 ‘chocolate’ 검색의 인기도 예측하기 434 / 19.5.2 실험: SARIMA가 더 나을 수도 있을까? 442
19.6 다음 단계 446
19.7 연습 447
__19.7.1 항공 승객 수 예측하기 447 / 19.7.2 항당뇨제 처방 건수 예측하기 447 / 19.7.3 구글 트렌드에서 키워드의 인기도 예측하기 447
요약 448
CHAPTER 20 캡스톤 프로젝트: 캐나다의 스테이크 월평균 소매 가격 예측하기 449
20.1 캡스톤 프로젝트의 이해 450
__20.1.1 캡스톤 프로젝트의 목표 450
20.2 데이터 전처리와 시각화 451
20.3 Prophet을 사용한 모델링 453
20.4 선택사항: SARIMA 모델 개발하기 459
20.5 다음 단계 464
CHAPTER 21 한 단계 더 나아가기 466
21.1 배운 내용 요약하기 467
__21.1.1 예측을 위한 통계적 방법 467 / 21.1.2 예측을 위한 딥러닝 방법 468 / 21.1.3 예측 절차 자동화 469
21.2 예측이 실패하면 무엇을 해야 할까? 470
21.3 시계열 데이터의 다른 응용 분야 472
21.4 계속 연습하기 473
APPENDIX A 설치 지침 475
찾아보기 479
Author
마르쿠 페이셰이루,동동구
캐나다 대형 은행의 선임 데이터 과학자다. 데이터 과학을 독학했고, 금융 업계에 취업하고 일하기 위해 알아야 할 것들에 대해 다양하게 공부했다. 실습에 기반한 학습법을 추구하며, 미디엄 블로그, 온라인 강좌 등으로 지식을 전파하고 있다.
캐나다 대형 은행의 선임 데이터 과학자다. 데이터 과학을 독학했고, 금융 업계에 취업하고 일하기 위해 알아야 할 것들에 대해 다양하게 공부했다. 실습에 기반한 학습법을 추구하며, 미디엄 블로그, 온라인 강좌 등으로 지식을 전파하고 있다.