[리뷰] 실전에서 바로 쓰는 시계열 데이터 처리와 분석 in R



제이펍 출판사의 "실전에서 바로 쓰는 시계열 데이터 처리와 분석 in R(이기준 저)"를 읽고 작성한 리뷰입니다.

표지


R과 통계 중심의 시계열 분석 입문서이다. R의 패키지 및 시계열 모델들을 실전에서 활용하기 용이하게 잘 정리되어 있으며 각 특징들을 한 눈에 비교하기 좋다는 장점이 있다.

각 장마다 다루는 책의 내용을 간략히 요약해보겠다.

1장은 시계열 데이터가 무엇인지 소개한다. 시계열 데이터에는 동일한 간격으로 측정된 시간이 독립변수 존재한다. 시계열 분석은 이러한 데이터를 시계열 패턴과 백색잡음으로 탈곡하는 과정으로 비유한다.

과거가 현재에 영향을 주는 자기상관, 장기적으로 점차 증감하는 경향성, 고정된 기간에 주기적으로 반복하는 계절성, 변동적 기간에 주기적으로 반복하는 순환성, 확률분포나 신뢰구간 등 확률의 성질을 갖는 불확실성 등 시계열 데이터가 가지는 특성을 소개한다.

2장은 날짜, 시간을 다루는데 용이한 클래스 등 R에서 제공하는 도구를 살펴본다. date, POSIXct, POSIXlt, yearmon, yearqt 등의 클래스부터 ts, xts, tsibble 등 데이터프레임과 유사한 기능의 시계열에 특화된 데이터 객체를 소개한다.

그 외 xls, csv 등 외부 파일을 읽어들이고 변환하는 방법도 간단히 살펴본다. R이 제공하는 기능들을 체계적으로 정리하여 한 번에 장단점들을 비교해 볼 수 있다는 점이 책의 장점인데 이런 기조는 책이 끝날때까지 지속된다.

3장은 시계열 데이터를 시각화하는 방법을 다룬다. 개인적으로 시계열 분석은 다른 분석에 비해 시각화에 더욱 의존하게 되는 경향이 있다. 시계열에 숨은 패턴을 찾는데 시각자료를 활용한 직관보다 빠르고 쉬운 방법이 없기 때문이다.

data.frame은 ggplot2 혹은 timetk, xts은 자체 패키지, ts는 forecast, tsibble은 feasts 등 데이터가 담긴 객체에 따라 어떤 시각화 패키지를 활용해야 하는지 2장에서 언급한 바와 같이 일목요연하게 정리되어 있다. 덕분에 프로젝트 성격에 따라 유리한 객체와 문법을 골라쓰기 좋다.

4장에는 데이터를 가공하고 처리하는 다양한 유형을 다룬다. 개인적으로 가장 도움이 되었던 장이기도 하다. 시계열 데이터를 가공하다보면 주간, 월간, 분기, 연간 등 특정 기간별로 그루핑, 증감량, 백분율, 비중, 누적합을 구하는 것은 기본이다.

조금 더 나아가면 롤링 윈도우를 활용하거나 동기별 비교, 연산이 필요하기도 하다. 주말이라는 특성도 존재하기에 반올림이나 시간 연산도 필요한데 코로나 확진자 수 등의 데이터를 활용하여 가공해보고 시각해본다.

5장은 시계열 분석에 필요한 핵심 개념들을 코드로 통해 느끼고 데이터를 통해 만지고 그려보도록 구성되어 있다.

ACF, PACF 등 통계 분야에서 전통적으로 자주 활용하는 자기상관, 부분 자기상관 관계를 분석하는 기법에서부터 lag 함수를 이용하여 지연, 차분을 처리하는 방법을 다룬다.

분석에서 가장 자주 활용하는 시계열 분해도 다룬다. 개인적으로는 정상성 테스트나 계절설 검정같은 시계열 분야의 검정에 약했는데 덕분에 자신감을 얻을 수 있었다.

6장에는 현존하는 거의 모든 시계열 모델을 총체적으로 정리한다. 통계학 전공자가 아니다보니 딥러닝의 RNN, LSTM, GRU 등으로 시계열을 먼저 접했고 때문에 통계 관련 모델이 등장하면 해메기 일수 였는데 이 참에 궁금증을 많이 해소할 수 있었다.

특히 컴퓨터 공학에 디자인 패턴이 파생되는 것처럼 모델 간 특징이 결합되어 새로운 시계열 모델이 등장한 배경을 알고나니 생소한 모델도 쉽게 이해가 된다.

예를 들면 계절성 단순 모델은 단순 모델에 계절성을 추가한 모델이며, 홀트 윈터 모델의 경우 단순 지수 평활 모델을 확장하여 추세와 계절성을 추가한 모델이다.

ETS, ARIMA 정도만 다뤄본 나로써는 시계열에 이렇게 많은 모델이 존재하는지 몰랐는데 이번 기회에 쉽게 잘 정리할 수 있었다. 또 그동안 다뤄보지 못한 페이스북에서 만든 prophet 모델이나 TBATS과 같은 모델도 활용하도록 구성되어 있어 만족스러웠다.

7장은 시계열 분석 프레임워크를 다룬다. 개인적으로 가장 마음에 든 장이며 실전에서 많은 도움이 될 것 같다는 생각이 들었다.

fable 프레임워크를 활용하면 아래 그림에서와 같이 다양한 모델들이 예측한 결과를 한 눈에 확인해 볼 수 있다. 모델별 예측 결과를 시각화 비교해 볼 수 있음은 물론 수치를 통한 성능 지표도 확인할 수 있다. fable은 tidy 기반이기에 다중 시계열을 동시에 여러 모델에 적용해볼 수 있으며 앙상블 기법도 가능하다. fable

이와 유사한 modeltime 프레임워크도 소개한다. 머신러닝 진영에서 주로 활용하는 워크플로를 활용할 수 있다는 장점이 있다. workflow

마찬가지로 모델별 예측 결과를 비교해 볼 수 있다. modeltime


이처럼 시계열 분석을 위해 주로 활용하는 R의 패키지, 객체, 모델 등이 활용하기 좋게 잘 정리되어 있다는 점이 책의 가장 큰 장점이다.

또, 코드와 시각화를 통해 직접 데이터와 모델을 만져볼 수 있어 실전 중심으로 쉽게 개념을 익힐 수 있다는 점도 장점이다.

반면 아쉬운 점도 두가지 있다. 하나는 직접 만든 데이터 혹은 잘 정리된 예제 데이터로 모델과 전처리를 수행했다는 점이다. 현업에 살아있는 거친 데이터로 시작했다면 보다 실전에 많은 도움이 되었을 것이다.

다른 하나는 실전 프로젝트 분석 과정이 하나 정도 담겨 있었다면 더 좋았겠다는 생각이 들었다. 부분 부분 체계적으로 잘 정리되어 있는 장점이 유기적으로 연결되지 않는 느낌이 들어 아쉬웠다.

하지만 책의 분량이나 타깃 독자층을 생각했을 때 두마리 토끼를 모두 잡는 일이 쉽지 않음을 알기에 전체적으로 이 책은 입문서라는 목적에 충실하게 잘 만들어진 책이라는 생각이 든다.

시계열이 너무 어려워 기초를 다지고 싶은 입문자라면 이 책을 처음으로 접해보는 것도 좋은 선택이 될 것 같다.







© 2019.04. by theorydb

Powered by theorydb