CausalImpact는 시계열 데이터에서 의도적인 개입으로 인한 인과 효과를 추정하기 위한 방법론입니다.
인과 효과를 확인하려면 A/B 테스트처럼 실험을 하는 것이 제일 좋습니다. 하지만 마케팅, 광고, 웹 서비스 등을 운영하다보면 실험을 수행하는 것이 어려운 경우가 많습니다. 특히 다음과 같은 상황에서는 이상적인 randomised design이 어려운 경우가 많이 발생합니다.
“광고 캠페인을 적용했을 때 일별 클릭수는 얼마나 증가했을까?” 같은 질문은 실험이 불가능한 상황에서 답변하는 것이 매우 어렵습니다. 이러한 상황에서 우리는 CausalImpact를 통해 신제품 출시나 광고 캠페인의 시작/종료 등 특정 시점에 발생한 이벤트가 목표로 하는 지표에 미친 영향을 측정하고자 합니다.
이전에는 위와 같은 상황에서 보통 어떤 방식으로 문제를 해결했을까요? 기존에는 실험군과 대조군에 대해서 개입 전후의 인과 효과를 설명하기 위한 방법으로 Difference-in-differences (DiD) 라는 방법을 많이 사용했습니다. 시작하기 전에 DiD 방법론에 대해 가볍게 살펴보겠습니다.
이벤트가 적용된 실험군과 이벤트가 적용되지 않은 대조군이 있습니다. DiD 모형은 실험군과 대조군의 개입(이벤트) 전후를 설명하는 선형 모형을 구성합니다. (1) 실험군과 대조군 각각의 개입 전후 차이를 비교합니다. (2) 그리고 실험군과 통제군의 차이를 비교합니다. 차이 안에서 한 번 더 차이를 비교하면 이벤트로 인한 효과를 분리할 수 있습니다.
굉장히 심플하고 직관적이기 때문에 많이 사용되지만, DiD 방법론에는 한계점이 있습니다.
CausalImpact 에서는 DiD 방법론의 한계점을 해결하기 위해, 상태-공간 모형에 유연한 회귀 모형 컴포넌트를 결합하여 관측 결과가 시간에 따라 어떻게 변했는지 설명했습니다.
개입이 발생하지 않았을 경우를 예측하기 위해 사용할 수 있는 접근법으로 여러 예측 변수를 모아 하나의 가상 대조군 데이터를 추정하는 방식이 있습니다. 그러면 가상의 대조군과 실제 시계열의 차이를 인과 효과로 볼 수 있습니다.
CausalImpact 에서는 결과 변수에 해당하는 시계열과(예. 클릭수) 통제 변수에 해당하는 시계열 (예. 개입이 적용되지 않은 영역의 클릭수 또는 다른 사이트의 클릭수)가 주어졌을 때, 베이지안 구조적 시계열 모형(Bayesian Structural time-series model)을 구축합니다. 학습한 시계열 모형을 통해 만약 특정 시점에 개입이 일어나지 않았다면 그 이후에 지표가 어떻게 되었을지(counterfactual)를 예측합니다. 이 예측 결과를 가상의 대조군으로 두고 인과 효과를 추정하게 됩니다.
CausalImpact 모형은 다음과 같은 가정을 포함합니다.
CausalImpact 내부에서 가상의 대조군을 추정하기 위한 방법으로 베이지안 구조적 시계열 모형을 사용합니다. 이번에는 베이지안 구조적 시계열 모형에 대해 간단히 살펴보려고 합니다.
구조적 시계열 모형은 시계열 데이터를 위한 상태-공간 모형입니다. 현재 상태를 바탕으로 관측 결과를 설명하는 식(Observation equation)과 현재 상태를 통해 다음 상태를 설명하는 식(State equation)으로 구성되어 있습니다.
구조적 시계열 모형은 유연하고 모듈화가 가능하기 때문에 매우 실용적입니다. ARIMA 모형을 포함하여 다양한 계절성과 특정 공휴일 또는 이벤트로 인한 효과까지 모형으로 표현할 수 있습니다.
CausalImpact 내부에 사용된 모형은 크게 트렌드, 계절성, 회귀 모형이라는 3가지 상태 컴포넌트로 구성되어 있습니다.
Local Linear Trend
컴포넌트는 drift term을 포함하는 랜덤 워크로 구성되어 있습니다. drift term에 해당하는 부분이 트렌드의 기울기를 표현하게 됩니다.Local Linear Trend
는 단기 트렌드 예측에 유리하도록 구성되어 있습니다.bsts
라이브러리에서는 해당 컴포넌트를 Semilocal Linear Trend
라고 부릅니다.S=4
로 설정하여 사계절의 효과를 확인할 경우, 겨울의 효과는 -1 x (봄 + 여름 + 가을)
이 됩니다.S=7
로 두면 됩니다.모형 구성이 완료되면 데이터를 통해 파라미터를 추론합니다. 파라미터 추론은 크게 다음과 같은 세 가지 단계로 이루어집니다.
파라미터 추론이 완료되면 추론 결과를 바탕으로 인과 효과를 계산합니다.
CausalImpact 라이브러리의 공식 문서에 따르면 다음과 같은 방법으로 시작해보면 좋다고 합니다.
최근들어 인과 추론과 관련된 내용이 이전보다 많이 알려지게 되면서, 업무적으로도 활용할 기회가 많이 생겨나고 있습니다. CausalImpact 같은 모형의 경우에는 이벤트 등 개입이 적용되지 않았으면서 실제 목표 시계열을 예측하는데 도움이 되는 지표를 찾아야 하는데요. 지표를 찾는 과정에서 오히려 도메인 지식에 대한 중요성을 깨닫게 되었습니다. 데이터가 어떻게 만들어지는지, 비즈니스나 사이트의 특성에 따라 지표 추이에 어떤 영향을 미치는지 고민하는 시간이 많아졌습니다. 분석을 하는 입장에서 내가 분석하려는 대상에 대해 잘 알고 있어야 한다는, 당연하지만 잠시 잊고 있던 내용을 새삼 느끼고 있습니다.
인과 추론과 관련하여 현업에서 일하면서 경험했던 것들을 정리하여 2021년 네이버 DEVIEW 에서 발표하게 되었습니다. 활용 사례가 궁금하신 분들은 다음 링크에서 발표 내용을 확인해보세요!
https://deview.kr/2021/sessions/423