인과관계 vs. 상관관계 – Granger causality

데이터 사이언스 강의를 하다보면, 통계학이 뭐가 중요하냐고, 그냥 “빅”데이터 전부를 “딥”러닝 모델에 다 집어넣으면 알아서 답 가르쳐주는거 아니냐고, 왜 자꾸 고등학교 이후로 보지도 않은 수학 이야기하면서 수업을 진행하냐고 불편한 기색을 못 감추는 분들이 있다.

아무 변수나 막 집어넣는 걸 피하려고 여러가지 작업을 해 놓은 현업 머신러닝 적용 논문 (“합리적으로 변수 추출하기” 참조)을 소개시켜줘도 그런 말씀을 하시는 분들을 보면, 고교시절 수학 공부를 제대로 안 했고, 학부시절 수학을 자기 전공 공부에 제대로 안(or 못) 써본 경우가 대부분이다. 그런 분들이 통계학 수업을 할 때 꼭 묻는 질문들이 있다. 원인과 결과를 구분해야한다는 말은 알겠는데, 그런식으로 “달걀이 먼저인지, 닭이 먼저인지” 모르는 철학적인 질문에 통계학이 무슨 답을 해 줄수 있냐고 하시더라.

사실 이런 철학적(?)인 질문이 오랫동안 학문하는 사람들, 특히 인과관계로 상관관계를 구분하는 데이터 모델링을 해야하는 사람들에게 큰 과제였다. 그리고, 예전에는 “논리적”으로 순서를 따져보면 원인과 결과관계인지, 단순하게 시간의 선후 관계인지 구분할 수 있지 않냐고 애매모호(?)하게 넘어가는 경우도 많았다. 그러다 1969년에 Clive Granger라는 영국인 통계학자가 경제학계 최고 권위의 저널인 Econometrica에 낸 논문에서 이 문제를 다룰 수 있는 큰 전환점을 만들어 냈다. Granger causality라고 일반에 알려진 모델이다.

(Granger는 이 논문를 비롯한 다른 시계열 데이터 모델링에 대한 공헌을 바탕으로 2003년에 노벨 경제학상을 수상했다. 통계학자의 논문이 경제학 저널에 나오고, 노벨 경제학상을 받았다는 부분에서 경제학이 얼마나 통계학과 밀접하게 연관되어 있는지 이해하실 수 있을 것이다.)

(참고로, 많은 경제학자 & 경제학 관련 전공 연구자들이 Econometrica에 논문 한번 내 보려고 평생을 연구에 바친다. 한국에는 서울대학교 경제학부의 황윤재 교수님을 비롯한 극소수 경제학자들만 Econometrica에 논문 실적이 있을만큼 논문 한 편 내기 굉장히 힘든 저널이다.)

“합리적으로 변수 추출하기” 에서 이미 확인하신 분도 있겠지만, “빅”데이터를 다루다보면 많은 경우에 인과관계와 상관관계가 헷갈리는 경우가 있다. 위의 예시는 상어가 인간을 공격하는 사건 (빨간색)과 아이스크림 판매량 (파란색)이 매우 높은 상관관계를 가지는 것을 보여준다. 이 그래프만 보면, 아이스크림이 많이 팔릴수록 상어가 사람을 많이 공격하니, 아이스크림 판매량을 억제하면 상어가 인간을 덜 공격할 것이다는 성급한 결론을 내리게 된다. (더 심하게는 상어가 인간 몸 속에서 소화되어버린 아이스크림을 좋아하는게 아닌가는 생물학적인 실험을 하는 경우도 있을것이다. OMG!!!)

그러나 조금이라도 “상식”이 있는 사람이라면, 여름에 더워서 아이스크림을 많이 사먹는 것과 해변에 여행을 많이가다보니 상어에 노출되는 경우가 많은 경우를 놓고, 더위로 인한 두 가지 다른 파생결과라고 해석할 것이다. 이걸 하나로 묶어서 보는 어리석음은 단순히 숫자 (정확하게는 그래프 모양)에 집착했기 때문인데, Granger causality는 이런 문제를 논리적으로 인식할 수 있는 좋은 생각의 틀이다.

 

1. Granger causality

논문의 아이디어는 간단하다. 원인과 결과가 시간 순서에 따라 발생했다면, X와 Y간 시간의 선후가 서로에게 영향을 주었는지를 살펴보는 것이다.

위의 식에서 X의 과거 값이 X의 현재 값에 영향을 주었다면 X는 시계열 데이터다. 그런데, 과거의 Y값이 오늘의 X에게 영향을 주었다면? 위의 식에서 Beta값이 0이 아닌 다른 값이 나왔을 것이다. 과거의 Y값이 오늘의 X에게 전혀 영향을 주지 않았다면? 모든 Beta값이 0이 나왔을 것이다. 이렇게 과거의 Y가 현재의 X에게 전혀 영향을 주지 않은 경우에 “Granger causality”가 없다고 표현한다.

반대로 X의 과거 값이 Y의 현재 값에 영향을 주었다면 어떻게 될까? 아까 식으로 잡아낼 수 있었던거 아니냐고? 위의 식은 “과거”의 Y가 “현재”의 X에게 영향을 주는지만 따지는 통계 검증이다. X의 “과거”가 Y의 “현재”에 주는 영향은 확인할 수 없다. 그래서 보통은 아래와 같은 식을 이용해서 쌍방향 테스트를 진행한다.

상대방 변수의 과거가 타겟 변수의 현재 값에 전혀 영향을 주지 않지만, 타겟 변수는 시간이 지남에 따라 특정한 수열을 보이는 경우, Granger causality 테스트를 통해 X와 Y는 시계열 데이터일 뿐이지 서로간 인과관계는 볼 수 없다고 결론을 내린다.

첫머리에 들었던 아이스크림 판매량과 상어의 공격을 놓고 보면, 각각은 여름에 폭발적으로 증가하는 시계열 데이터의 특성을 보이지만, 서로가 서로에게 영향을 주는 관계는 아닌, 인과관계가 없다는 결론을 내릴 수 있는 것이다. 

(물론 위의 테스트만으로 무조건 인과관계를 단정지을 수는 없다. 시간의 선후가 유의미한 맥락을 갖는 시계열 데이터에만 적용할 수 있고, 시간의 선후를 나눌 때 데이터 처리방식에 따라 교묘하게 인과관계가 있는 것처럼 보이게 할 수도 있기 때문이다. 더더군다나 통계 검증은 언제나 데이터에만 의존하므로 오직 귀납적으로만 맞을 뿐이다. 덕분에 Granger가 노벨상 수상식에서 “Of course, many ridiculous papers appeared”라고 모델의 오용에 대한 불편한 감정을 표현하기도 했다.)

Granger causality의 가치에 대해서 여러가지 말들이 많지만, 시계열 데이터의 상관관계를 놓고 인과관계가 없다는 사실을 확인하는데는 이렇게 간단한 테스트를 찾아내기가 힘들다고 생각한다. 반대로 인과관계가 있다는 주장을 하기 위해서는 숫자 뒤에 숨어있는 눈에 보이지 않는 요소들도 고려해야하므로 선뜻 적용하는 경우가 적다. 

 

2. Post hoc, ergo propter hoc

인간이 뭔가 대단히 똑똑한 존재라고 착각하는 경우가 많지만, 우주 속 천체의 움직임을 이해할 수 있는 수학과 물리학을 만들어낸 인류 역사상 희귀한 대천재 Issac Newton도 정작 회중시계를 마실 차 대신 끊는 물에 넣거나, 남들따라 South Sea 버블에 투자해서 평생 번 돈을 잃는 등 “멍청한 짓”도 많이 하고 산다. 인간의 생각하는 방식을 복사한다는 머신러닝의 Neural network 모델 (외부인에게 “딥러닝”으로 알려져 있다)이라고해서 별 다를 바 있을까? 한편으로는 이세돌과 바둑에서 이길 수 있을만큼 복잡한 수 계산을 할 수 있지만, 정작 패턴이 없는 데이터, 잘못된 패턴을 집어넣은 데이터에서는 그 힘을 발휘하지 못한다.

대표적으로 위의 경우처럼 시간적 순서가 인과관계를 담보하는 것 같은 데이터를 입력하면 모든 통계 기반 모델들이 마치 인과관계가 있는 것 같은 결과를 내놓을 것이다. 인간의 인식 한계가 모델링 작업에 그대로 반영되어 있기 떄문이다.

이런 오류를 논리학에서 “Post hoc, ergo propter hoc” 오류라고 한다. 영어로 직역하면, “After this, therefore because of this” 정도가 될 것 같은데, X 다음에 Y가 일어났으므로 X가 Y의 원인일 것이라고 생각하는 오류를 말한다. (Post hoc fallacy라고도 한다.)

징크스가 대표적인 예일텐데, 머리를 염색했더니 시험 점수가 100점이 나오더라는 우연한 사건을 바탕으로, 앞으로 시험 전에는 항상 머리를 염색하겠다고 생각하는 사람을 보고, “나도 머리를 염색해야겠다”고 생각하는 오류가 딱 여기에 해당된다. 아마 상식적인 사람이라면 머리를 염색하는 대신에 공부를 해야 시험점수가 100점 나올 확률이 높아진다는 것, 머리 염색은 개인적인 긴장 완화와 연관관계가 있을지 몰라도 시험에 나오는 문제를 더 맞출 수 있는 “실력”을 길러주지는 않는다는 것을 잘 알 것이다.

아무런 인과관계가 없는데, 우연히 특정 데이터 셋에서 100%의 상관관계를 갖는 변수를 이용하는 머신러닝 모델을 만들었다고 치자. 시간이 흘러 새롭게 들어오는 데이터에서는 더 이상 그런 상관관계가 안 나타난다면 내가 만든 모델은 어떻게 될까? 언뜻보면 Over-fitting과 비슷한 맥락으로 오해할 수도 있지만, Over-fitting은 인과관계가 있는 데이터에서 좀 더 샘플 데이터에 치우져버린 모델을 이야기하고, Post hoc fallacy는 아예 아무런 인과관계가 없는 데이터로 모델을 만드는 경우를 말한다. 

글 서두에 살짝 언급한대로, 모든 “빅”데이터를 다 집어넣고 머신러닝 모델을 만들면, “합리적으로 변수 추출하기” 에 나왔던대로 User ID값으로 그 User의 전환율을 예측할 수 있다는 식의 엉뚱한 모델을 만들게 될 것이다. 정작 User ID는 웹페이지에 들어오는 순서대로 생성되는 변수일 뿐이고, 그 값이 홀수인지, 짝수인지와 그 User의 전환율은 아무런 관계도 없지만, classification 모델은 마치 두 변수가 엄청나게 큰 연관관계를 가진 것처럼 인식하기 때문이다.

 

3. Spurious Regression

위의 예시는 지난 40년간 미국에서 핸드폰 사용자의 숫자와 암 환자의 숫자 변화를 놓고 학자라는 사람이 얼마나 엉뚱한 결론을 내리고 있는지를 풍자하는 만화다.

1970년대 이후 암 환자가 꾸준히 늘었는데, 아마 이유는 식습관의 변화, 평균 수명의 증가 등을 꼽을 수 있을 것이다. 최소한 1990년대부터 늘어난 핸드폰 사용자의 숫자 증가와 암 환자 숫자 증가간 논리적인 연관관계를 찾기는 어렵다. 당장 검은색 그래프와 빨간색 그래프간 증가하는 시점이 15년 이상 차이가 나고, 그 사이에 변화한 내용들 (식습관, 평균 수명 등)이 너무 많다. 가장 중요하게는 핸드폰에서 나온다는 그 전자파가 암 발병, 특히 어떤 종류의 암 발병에 영향을 주는지 논리적인 근거를 먼저 찾아봐야 한다. 핸드폰에서 나오는 전자파가 TV나 모니터의 1/10도 안 될텐데, 왜 TV나 모니터는 놔두고 핸드폰만 범인이라고 몰아세워야할까?

(솔직히 저런 경우 많이보고, 필자도 항상 조심한다.)

위의 사례에서 뽑아낼 수 있는 메세지가 많겠지만, 필자는 크게 두 개를 본다. “지나치게 데이터에 집착할 필요는 없다”, “데이터 모델링은 정말 어려운 작업이다”

회귀분석을 기반으로 한 연구 결과물을 발표하는 학자들이 가장 두려워하는 공격이 “Spurious regression”이라는 말이다. X와 Y로 놓은 대상이 서로 아무런 관련이 없거나, 그 스토리가 전혀 논리적으로 맞지 않는데도 불구하고 단순하게 상관관계만 높게 나왔다는 공격인데, 그래서 모델을 만들 때 위의 Granger causality를 비롯해 다양한 아이디어들을 활용해서 자신의 모델을 검증하는 작업을 거친다. 겪어보면 알겠지만, 그렇게 쓴 논문 하나 좋은 저널에 낼려면 “토할 것 같은” 검증 작업을 거쳐야 한다.

(Spurious라는 단어의 영어 사전 뜻을 찾아보면 “사기”, “허위”같은 뜻이 나온다. 학자 입장에서 저런 논문 발표하고나면 연구 인생은 그걸로 끝이라고 봐야한다.)

 

나가며

(요즘보면 개발자들도 저런 “비아냥” 좀 들어야 될 것 같다)

“토할 것 같은” 검증 작업이나 모델 만들기 힘들다는걸 모르는 것도 이해하고, 몰라도 좋은데, 제발 “그냥 다 집어넣으면 되는데 왜 통계학…?” 같은 질문은 안 해줬으면 좋겠다. 머신러닝은 남들이 만들어 놓은 코드만 Copy & Paste하는거 아니고, 적용 환경이 달라지면 모델도 그에 맞게 달라져야한다.

자기 회사에 무조건 Neural net 기반 머신러닝 모델만 (Copy & Paste해서) 얹으면 모든 게 해결되는 것처럼 말하는 사람들에게 묻고 싶다. 모델들이 항상 똑같다면 왜 “토할 것 같은” 검증 작업을 거쳐야만 논문이 출판될까?

코딩 경력 X년으로 쉽게 데이터 사이언티스트 되는 거였으면, 실리콘 밸리에서 저렇게 데이터 사이언티스트 기근 현상이 일어나지도 않았다. 

 


글 아이디어를 주 김수진님, 2017년 10월 강의에 Granger causality를 상기시켜주신 김재준 님께 감사드립니다.

X