데이터 사이언스 인터뷰를 위해 필수적으로 알아둬야 할 통계적 개념 (사실 더욱 중요한 것은 업무에 이러한 개념들을 녹여내는 것..)
- 확률변수, 통계량, 추정량에 관한 이해
- 표준편차와 표준오차에 관한 이해
- 약대수의 법칙(Weak Law of Large Numbers)
- 중심극한정리(Central Limit Theorem) (특히 원자료의 왜도가 큰 경우엔?..)
- 통계적 가설검정의 원리
- p값과 신뢰구간의 의미
- 검정력 (특히 검정력이 낮은 경우 Type S error, Type M error rate이 증폭되는 이유)
- 다중검정 문제와 그에 따른 해결책
- 상관관계와 인과관계 관한 차이 이해 (왜 RCT가 최고의 인과추론 도구인가?)
- 확률과 가능도에 관한 이해
- 바람직한 추정량이 갖춰야할 4가지 성질에 관한 이해 (일치성, 불편성, 유효성, 충분성)
당장 생각나는 큰 축들은 위와 같다. 특히 첫번째 항목에서 제시한 확률변수에 관한 이해는, 확률변수는 분포를 갖는다라는 개념을 받아들이는 것이 매우 중요하고 이는 통계학을 이해하기 위한 첫 걸음이라고 할 수 있다. 그외 막 떠오르는 개념들은 Simpson’s Paradox, Spurious correlation/regression, 베이지안 관점에 관한 이해, Outlier elimination이 필요한 때 정도?..
위 키워드들에 대해 답을 내놓는 퀄리티에 따라 그 사람이 가지고 있는 통계학적 지식의 수준을 가늠해볼 수 있지 않을까 싶다. 일단 나부터 각 항목에 관한 답변을 잘 정리해두는 것으로..😅
사실 여기서 더 중요한건 이러한 기본적인 통계 지식의 이해를 넘어, 이 지식을 현업에 잘 녹여내는 것에 있다. 조직에 필요한 기술/방법론 등의 필요성에 대해 이야기할때, 또는 통계적 지식이 상대적으로 적은 동료가 왜 꼭 이렇게 해야하는건지? 왜 이러한 추정/분석 방법이 필요한건지 물어올때.. 가지고 있는 통계적 지식들을 녹여내 그들을 충분히 이해/설득 시킬 수 있어야 할 것이다.
단언컨데 이는 단기간에 키워낼 수 있는 능력이 아니다. 축적이 필요하다. 예를 들어 나는 이러한 습관을 가지고 있었던 것 같다.
-
평소에 실험설계, 통계분석 등을 진행하며 생긴 여러 논점 중 위 키워드와 관련한 부분이 있는지 생각해본다.
-
관련한 부분이 캐치된다면, 그 논점과 키워드를 연결지어 여기에 왜 이런 키워드가 떠올랐고.. 통계 비전공자라면 이 논점에서 어떤 것들을 놓칠 수 있는지 생각해본다.
-
스스로 충분히 음미하며 답변을 내놓아본다.
이러한 습관이 업무에 자연스럽게 통계적 역량을 녹여내는데에 큰 도움이 된 것 같다. 늘 그렇듯 도구는 쓰일 때 의미가 있다. 내가 가진 도구가 있다면, 누가 시키지않더라도 늘 도구를 꺼내보고 대보는 노력을 하자.😊
p.s. 전에 시계열 자료 분석/모델링을 위해 필수적으로 알아둬야할 개념을 링크드인 포스팅으로 정리했던 적이 있는데 댓글에 링크 남겨두겠습니다.
[시계열 자료를 모델링하기 위해 알아둬야할 본질 - I]
팀 내 분석가 분께서 시계열 자료에 관한 해석적 모델링(X가 Y에 미치는 영향에 관심이 있는)을 진행하고 계신데, 시계열 전공자는 팀 내에 나 뿐이라 몇 번 도움을 드렸다. 여기서 해석적 모델링의 1차적 목적은 우리가 그간 반복해온 실험으로 쌓아온 도메인 지식, 지표 간의 상관성(인과성이라고 까지 말하긴 어렵고)이 정량적으로 검증이 되는지를 살펴보는 것이다. actionable한 모델링인가에 대해서는 차후의 문제이고.
아무튼 이렇게 요 며칠간 시계열 모델링의 본질에 대해 팀원분들께 몇번 설명을 드렸는데, 말 나온김에 시계열 모델링과 관련해 팀 내부적으로 그간 드렸던 이야기들을 한 번 쭉 정리해보려고 한다.
-
시계열(time series) 자료란 시간 순서대로 관측된 자료를 말한다. 생존 자료(survival data)가 사건-시간이라는 2가지 특성 하에 중도 절단이라는 본질적 특징을 갖게 되듯, 시계열 자료 또한 시간 순서대로 관측되었다는 특성 하에 여러가지 본질적인 특성을 갖는다.
-
자기상관(auto-correlation, 자기 자신과의 상관), 추세(trend), 계절성(seasonality)이 바로 그것이며, 이러한 시계열의 본질적인 특성을 이해하는 것은 모델링에 있어서 굉장히 중요하다.
-
먼저 자기상관은 자신이 관심이 있는 Outcome/Output variable에 해당하는 시계열의 ACF, PACF 그림을 그려봄으로써 체크해볼 수 있다. ACF란 쉽게 말하면 현재 값이 과거 시차의 값과 얼마나 상관이 있느냐를 나타내며, PACF는 Partial ACF로 현재 값과 내가 관심있는 과거 시차 사이에 존재하는 시차에 의해 발생되는 간접적인 상관성은 제거한, 현재 값과 내가 관심있는 과거 시차 간의 직접적인 상관성만을 나타내는 값이라고 보면 된다. 좀 더 이해하기 쉽게 PACF의 필요성을 얘기해보면. 예를 들어 현재 값 y_t가 y_{t-1}과 자기상관이 있다고 해보자, 그런데 이때 y_{t-1}은 y_{t-2}와 상관이 있다. 그렇다면 y_t는 y_{t-1}과의 상관성에 의해 y_{t-2}에도 간접적인 영향을 받을 것이다. 이때 ACF 그림은 시차 1과 2 모두에서 유효할테지만, PACF 그림을 그려보면 시차 2에서는 유효하지 않을 것이다. 왜냐하면 시차 1의 효과가 given되어 구해지는 값이기 때문이다. 이러한 ACF, PACF를 잡아주기 위해선 전자의 경우 ARIMA 구조에서 MA 요소(자기자신의 과거 예측오차)을, 후자의 경우 AR 요소(자기자신의 과거 값)를 모델링에 반영해줄 필요가 있다
-
두 번째로 추세, 계절성의 파악을 위해선 시계열 분해(decomosition)를 실시해야 하고, 시계열을 분해하는 방법론에는 STL decomposition을 포함한 여러가지 방법론이 있다. 시계열을 분해해봤을 때 추세와 계절성이 자명하다면 이 또한 모델링에 반영이 되어야할 것이다. 숫자를 쪼개어지지 않을때 까지 소인수분해를 해보면 해당 숫자의 본질적 특성을 파악할 수 있듯이, 행렬의 고윳값분해, 특잇값분해를 통해 본질적 특성을 파악할 수 있듯이 시계열 자료도 “분해”를 해보면 추세와 계절성과 같은 본질적 특성을 파악할 수 있다.
-
지금까지 설명한 “자기상관”, “추세”, “계절성”은 모두 우리가 관심있는 Outcome 시계열 Y_t 자기 자신으로부터 나오는 요소들이라고 할 수 있다. 이렇게 시계열 자기 자신만으로 모델링하는 기법들을 고전적인 통계학에서 “시계열 자료분석”이라고 칭한다. ARIMA 모델, 해당 모델의 차수를 결정하기 위해 등장하는 고전적 방법론인 Box-Jenkins method, 비정상 시계열을 정상 시계열로 만들기 위한 차분, 분산에 대한 더 정교한 모델링을 위한 ARCH, GARCH 모델 등이 다 여기서 소개되는 것들이다.
-
여기서 한 발자국 더 나아가보자. 시계열 자기자신의 성분인 자기상관, 추세, 계절성 만으로는 남는 잔차가 너무 많다면? 남은 변동을 충분히 설명하기 위해 다른 외부 input variables을 가져와서 모델에 반영을 해줘야할 것이다. 이러면 이제 time series regression으로 종목이 바뀐다. ARIMA 구조를 error term으로 갖는 Regression with Arima errors 모델이 가장 간략한 예 중 하나이다. 자기 자신에 의해 발생하는 변동은 error term에 ARIMA 구조를 반영하여 잡아주고 동시에 회귀 식에 깊은 도메인 지식을 바탕에 둔 새로운 Input variables을 반영해주어 남은 변동들을 잡아나가는 것이다. 여기서 무작정 많은 변수를 집어넣는 것은 의미가 없고, AICc, BICc 등 모수 개수에 페널티는 주는 모델 평가 측도와 함께 잔차 분석을 동시에 진행해야 올바른 모델링을 수행할 수 있게된다. 그래서, 해석적 모델링은 굉장히 어렵다. 이것말고도 해석적 모델링에서 겪는 본질적 어려움, 한계에 대해 이야기해보라고 하면 할 말이 참 많은데 이만 줄이겠다.😂
-
위에서 소개한 간단한 형태의 time series regression에서 좀 더 나아가 얘기를 해보면. 복잡한 계절성을 갖는 시계열의 경우 회귀식에 여러 Fourier term을 반영해볼 수 있고 이는 Dynamic harmonic regression이라 불리운다. 또한 만약에 X 변수들이 Y와 동시차 t에 영향을 미치는 것이 아닌 지연된 형태로 영향을 미친다면 x_{t-k}를 모델에 넣어줄 수 있는데 이는 distributed lag model이라 일컬어 진다(예를 들면 미세먼지가 특정 질병의 발생 건수에 영향을 미치는 것과 같이, 또는 구독 서비스에 의해 발생하는 매출에 영향을 미치는 X들과 같이). 여기서 만약 X들이 지연 효과와 동시에 비선형적 효과를 미친다면 X들에 대해 smoothing function을 적용해줄 수 있는데 이는 또 distribtued lag non-linear model의 형태에 해당한다고 볼 수 있다.
-
결국 시계열 모델의 본질은 우리가 관심있는 시계열을 다음의 두 요소로 설명하는 것이라 할 수 있다: (이것만 기억해도.. 시계열 자료의 특성에 관한 아무런 이해없이 Input variables만 때려넣고 모델링하는 일을 피할 수 있다)
우리가 관심있는 시계열이 가지고 있는 변동 =
자기자신의 본질적 특성(자기상관성, 시계열 분해가 중요한 이유) + 깊은 도메인 지식을 동반한 다양한 Input variables(복잡한 계절성, holiday effect, 지연효과, 개입효과 등을 통한 나머지 변동 해결)
-
여기서 본질적 특성, Input variables 들을 모델링하는 세부적 방식에 따라 다양한 모델이 존재하게 되는 것이다. 이렇게 시계열 자료에 관한 모델링이 어렵고 복잡하니까.. 이거를 도메인 지식이 풍부하고 분석 역량을 충분히 갖추고 있는 DS/DA 라면 쉽게 모델링할 수 있도록 모든 과정을 자동화시켜서(모델 적합, 하이퍼파라미터 튜닝, 검증까지) 나온게 Facebook에서 제안한 Prophet(특히 복잡한 Business time series에 대해)이라고 보면 된다. Prophet이 태어난 이유를 논문에서 명확하게 명시하고 있다.
-
도메인 지식은 갖추었으나, 시계열을 다루는 지식이 부족한 실무자를 위해
-
유연성(flexibility), 확장성(scalable)이 뛰어나며 Business time series에 유연하게 적용할 수 있는 모형의 필요성
-
시계열 자료에 관한 모델링은 공부해야할 것들이 워낙 방대해서 학부생이나 대학원생 시절 각 잡고 시계열 자료분석에 대해 공부한 상태가 아니라면, 쉽사리 진입하기 힘들다. 내가 앞서 쭉 설명한 것들만 봐도 시계열 자료가 갖는 본질적 특성에 관한 이해 + 남은 변동을 다른 Input variables(regressor라 칭하기도 함)로 처리하기 위한 회귀모델에 관한 본질적 이해 까지 어느정도 갖추고 있어야하기 때문에.. 진입장벽이 꽤 높다. Prophet을 공부할 적에는 논문에서 제시한 니즈에 대해 크게 공감하기 어려웠는데, 실무에서 이러한 상황을 목격하니 정말 그 필요성을 뼈저리게 절감할 수 있었다.
-
시계열 자료의 모델링에 관심이 있는 사람들을 위해 위에서 언급한 것들을 이해할 때에 도움될만한 자료들을 몇개 던져놓고 가본다.
ARIMA 모형: https://lnkd.in/gujnND2X
ARIMA 오차 회귀모형: https://lnkd.in/gWuhEp_5
R 유저들을 위한 단변량 시계열 예측 모형 Prophet 소개: https://lnkd.in/gGGpbPX6
Prophet 이론 간략 소개: https://lnkd.in/g3FeC6DK
시계열 모델링에 관한 전반적 이해를 위해 읽어보면 좋은 책: https://otexts.com/fpp3/ (이 책을 정독하면 어디가서 시계열 얘기나왔을 때 충분히 안꿀릴만할 정도의 지식을 갖출 수 있음)
-
여담으로.. 동료 분석가분께서 지난 수개월간 진행해 온 실험 결과들을 바탕으로 파악한 도메인 지식, 지표 간 상관성의 정량적 모델링을 위해 바닥부터 회귀모델을 빌딩하고, 회귀분석의 꽃이자 해석적 모델링의 큰 어려움이라 할 수 있는 잔차분석까지 정교하게 수행하기 위해 노력하시는 모습을 옆에서 지켜보며 같은 통계학 전공자로서.. 해석적 모델링, 회귀적 접근을 좋아하는 사람으로서 지켜보는 그 자체만으로 기분이 좋았다.
-
오늘도 시계열 모델링에 대해 이것저것 물어보셔서, 이런저런 답변을 드리며 의도치 않게 여러 to do list들을 드린 것 같은데.. 이 작업 자체에 큰 흥미를 느끼고 계시다고해서 참 다행스러운 마음이 들었다. 재밌다. 모델링이 더 잘 되어서, 우리가 쌓아올린 도메인 지식, 지표간 상관성에 관한 추상적 생각을 데이터를 기반으로 정량적인 뒷받침을 할 수 있게 됐으면 좋겠다.
p.s. 학부를 졸업할 무렵 ML, DL에 관한 대중적 관심이 뜨거워 지면서, 전통적인 형태의 모델링인 회귀적 접근이 사라지면 어찌할까 싶었는데.. 실무에 나와서 이런저런 상황들을 겪다보니 사람들이 “왜”에 관한 질문을 더이상 던지지 않는 세상이 오는게 아니고서는.. 회귀모델에 관한 니즈는 사라지지 않을 듯 하다.