[리뷰] 실전 시계열 분석



한빛미디어 출판사의 "실전 시계열 분석(에일린 닐슨 저/박찬성 역)"를 읽고 작성한 리뷰입니다.

표지


본 도서는 업무 도메인 측면(의료-금융-공공-물리학 등)에서 기술적인 측면(통계-상태공간-머신러닝-딥러닝)에 이르기까지 시계열을 집대성한 책이다.

책에서 다루는 내용을 크게 나눠보면 다음과 같다.

  • 발견, 전처리, EDA, 시뮬레이션, 저장 및 처리, 피처 엔지니어링
  • 모델링 : 통계, 상태공간, 머신러닝, 딥러닝
  • 오차 측정, 배포, 성능
  • 사례연구 : 의료, 금융, 정부(공공데이터)
  • 그 외 기본 지식 : 시계열의 역사, 대규모 예측을 위한 패키지, 전망

내용에서 알 수 있듯 이 책은 폭넓은 도메인 영역과 기술을 다루고 있다. 이 점은 책의 큰 장점이자 단점이 될 수도 있는 부분이다. 눈에 띄는 장점은 일단 거의 전 분야에서 활용되는 시계열의 지식이 잘 정리되어 있다는 점이다.

시계열을 활용할 때 항상 어려웠던 부분은 지식이 분야별로 흩어져 있다는 것이다. 혹시라도 다른 진영 혹은 다른 도메인에서 유용하게 활용할 수 있는 기법이나 아이디어를 찾아보려 하면 그 영역까지 진입하기에 너무 오랜 시간이 걸린다.

R을 써야할지 Python을 써야할지 자주 고민이 생긴다. 세월이 흐르며 상호 보완되고 있긴 하지만 여전히 둘의 교집합에 제외된 어느 한 영역에만 속하는 독립적인 집합의 영역이 항상 존재한다. 예를 들면 롤링 조인과 같은 기술의 경우 Python에 비해 훨씬 사용하기 쉽고 직관적이다. 시계열 데이터를 처리할 때는 시점간의 연결 작업이 빈번한데 딱 맞게 매칭하는 작업이 너무 어려운 일이기 때문이다. 롤링조인

또 R은 단 한 줄의 코드로 계절성, 추세, 잔차 등으로 분해가 가능하다. 왕초보 시절 이 기능을 Python으로 구현해보려고 덤벼들었다가 좌절 한 적이 있는데 찾아보면 언제나 유용한 기법들이 있다.

거인의 어깨 위에 올라가야 할 필요가 있는데 문제는 거인의 어깨에 어떤 것이 있는지 없는지 조차 몰라 검색 자체를 못하기 쉽상이다. 그런 측면에서 이 책은 각 언어별로 자주 활용되는 기술들의 핵심들이 잘 정리되어 있고, 각 도메인들이 잘 정리되어 있어 잘 모르는 분야의 아이디어의 메타 지식을 정리하기에 좋다. 시계열분해

또 다른 장점으로는 초반 1 ~ 5장에 해당하는 부분이 마음에 들었다. 시계열은 전처리나 시뮬레이션이 꽤나 까다롭다. 책에서도 볼 수 있듯 결측치의 개념이 시간축에 의존한다. 그냥 일반 Tabular 데이터에서 빈값을 찾는 정도로 넘어갔다간 엉망이 된다. 전체 자료의 시간축을 살펴봐야 한다. 이런 사소한 부분부터 시뮬레이션이나 피처 엔지니어링에 이르기까지 모델링 이전에 필요한 작업들이 일목 요연하게 정리되어 있다.


반면 이런 장점을 수용하기 위한 트레이드 오프로 단점도 상당하다. 일단 너무 폭넓은 영역의 지식을 책 한 권에 담으려다 보니 그 깊이가 얕다. 난이도의 깊이가 얇은 것은 아니지만 한정된 지면에 너무 많은 지식을 다루다보니 추상적인 관점에서 바라봐야 하는 경우가 흔하다.

하지만 통계에서 활용되는 MA, AR, ARIMA 등의 모형만 예로 들어도 깊이 있게 알기 위해선 상당량한 학습이 필요하다. 책에서는 코어 부분에 해당하는 코드만 다루고 있으며, 수학도 추상적인 수준으로 설명이 되어 있고, 이론은 상당히 축약 설명되어 있어 이해하기 어려운 영역이 많다. 아무리 뛰어난 사람도 머신러닝, 딥러닝, 통계, 상태공간 등의 정보를 모두 깊이 있게 알고 있는 사람은 드물 것이다.

취약한 부분이 있게 마련일텐데 그런 파트를 만나면 진땀 빼며 읽어야 한다는 단점이 있다. 그렇기 때문인지 번역 수준 또한 어느 파트는 매우 매끄러운데, 어느 파트는 난해하기 그지 없다.

또 하나의 단점으로는 R과 Python의 코드가 왔다갔다 한다. 이것은 저자를 탓할 문제는 아니다. 앞서 언급했듯 각 언어별 제공하는 기능이나 편의성에 차이가 현격한 부분도 존재하기 때문이다. 더불어 이를 완벽하게 정리, 파악할 수 있는 사람은 매우 드물 것이다. 사람의 수명에 한계가 있는데 어떻게 수 많은 API나 기능을 다 정리할 수 있을까? 그래서 십분 이해가는 부분이긴 하지만 독자의 입장에서는 영 불편한 것이 사실이다. 그래서 R과 Python의 연동에 관한 경험에서 우러나온 Tip도 수록되어 있었다면 어땠을까 하는 아쉬움도 있다.

코드 역시 실전 중심적이진 않다. 만약 구현 과정을 따라하며 배우고 싶은 독자는 이 책이 적합하지는 않을 것이다. 상당히 추상화 된 레벨에서 큰 그림을 그려 나가야 하는 책이기 때문이다. 연구 중심의 서적이라고나 할까? 대부분의 예제 코드는 실전 데이터 셋을 활용하기 보다는 각 이론을 설명하기 쉬운 형태의 가상 데이터를 가공하여 활용한다.

덕분에 모델을 이해하는데 도움이 상당하지만 실전에서 봉착할 수 있는 다양한 케이스에는 취약하다고 할 수 있다. 그래도 사례연구 파트에서 실전과 유사한 데이터를 활용하여 감을 잡는데 조금은 도움이 되었다. 시계열분해

그럼에도 이 책을 추천하고 싶은 이유는 시계열과 관련된 메타 지식이 체계적으로 정리되어 있다는 매력을 떨치기 어렵기 때문이다. 타 도메인 혹은 기술 분야에는 어떤 해법들이 숨겨져 있는지 전체적인 시야로 조망해보고 필요할 때 쉽게 참조할 수 있다는 장점은 무시 못할 매력이라 생각한다.

각 장 말미에 굵직한 획을 그은 유용한 시계열 논문이 잘 정리되어 있는 것도 장점 중 하나이다. 기존 책들이 시계열을 어느 특정 기술의 부분집합으로 다뤘다면 이 책은 시계열을 중심으로 전반적인 기술들을 엮어 보는 횡적 관점에서 접근한다. 타 분야의 유용한 아이디어를 빠르게 살펴보고 싶다면 본 도서를 살펴보길 권유한다.


한빛미디어 “나는 리뷰어다” 활동을 위해서 책을 제공받아 작성된 서평입니다.






© 2019.04. by theorydb

Powered by theorydb