[리뷰] 행동 데이터 분석
in Review on Review, Book, Python, R, 행동, 데이터, 분석, 인과관계, 다이어그램, 결측치, 부트스트랩, 실험, 설계, 군집, 조절효과, 매개효과
한빛미디어
출판사의"행동 데이터 분석(플로랑 뷔송 저/시진 역)"
를 읽고 작성한 리뷰입니다.
데이터 분석 그 중에서 특히 인간의 의도가 무엇인지 분석하는 행동 데이터 분석을 다룬 책으로 현대적 인과관계 분석 방법 및 엄밀하진 않지만 구전으로 전해오는 실무 비법들을 공개한다.
상관관계는 인과관계
가 아니다.
아이스크림이 많이 팔릴수록 상어가 사람을 많이 공격하니, 아이스크림을 덜 팔면 상어가 인간을 덜 공격할 것이다.
말도 안되는 명제임에 틀림없음에도 분명 데이터 분석 세계에서는 흔히 일어날 수 있는 결론이다. 아이스크림 판매량과 상어의 공격 빈도는 계절별로 놀라울 정도의 상관성을 갖기 때문이다.
두 데이터의 패턴은 일치하지만 저런 어리석은 결론이 도출된 결정적인 이유는 인과관계가 결여되어있기 떄문이다. 무엇 때문에 아이스크림이 많이 팔렸는지, 무엇 때문에 상어에게 공격을 당하는지 찾아본다면 쉽게 위 결론을 부정할 수 있다.
문제는 위 명제가 상식에 의해 참이 아니라는 나름의 믿음이 있기에 오류를 발견할 수 있다는 점이다. 이 책에 등장하는 예제처럼 무엇때문에 매출이 증가했는지, 혹은 할인 프로모션이 과연 매출 상승에 도움을 준 것이 사실인지와 같은 결론을 알지 못하는 명제를 맞딱드린다면 저런 우를 범하기 쉬워진다.
이런 문제를 해결하고자 이 책에서 도입한 기법이 인과관계 기법이다. 위에 언급한 "무엇"이 무엇인지를 찾기 위해
즉, 원인을 찾기 위해 데이터 분석에서 사용할 수 있는 다양한 실용적인 실무 기법이 소개된 것이 이 책의 가장 큰 장점이다.
교란
데이터를 찾아내는 기법이 그 중 하나이다. 단순히 아이스크림의 판매량이 기온이라는 원인에 의해 영향을 받는 것으로 분석하여 모델을 만들고 계절 특성이 타지 않는 갑작스런 기온 상승에 본 모델을 활용하여 재고량을 비축하는 과정에서 모델의 예측이 어긋나는 경우를 그 예시로 들고 있다.
사실 판매량은 기온 외에도 특정 계절에 학생들이 방학을 맞이하여 판매량이 늘었다는 또 다른 원인이 숨어있었다는 사실을 밝히고 교랸 변수를 찾다보면 인과관계를 찾아내는 과정은 결코 쉬운 일이 아님을 깨닫게 된다.
인간의 복잡한 마음이 단순하게 규명되긴 쉽지 않기에 그 과정을 도식화 하는 과정을 통해 모델의 정확성을 높이고 단순화하여 이해하기 쉽게 만들 수 있는 여러 기법이 소개되는데 그 중 가장 먼저 등장하는 것이 인과관계 다이어그램
이다.
특히 사슬, 분기, 충돌
이라는 세가지 기본 구조의 소개가 인상적이었다. 사슬이란 기온이 아이스크림 매출을 올리고, 아이스 크림 매출이 도넛 매출을 따라 올리는 연쇄적인 유발 관계를 의미한다. 이러한 사슬은 확장도 가능하고 축소도 가능하다.
분기란 기온이 아이스크림 매출을 올리기도 하지만 아이스커피의 매출을 올리기도 하는 관계를 의미한다. 반면 충돌은 2가지 이상의 변수가 동일한 결과를 유발한다. 여름철 여부라는 변수가 기온에도 영향을 주고 매출량에도 영향을 주면서도, 기온이 또 매출량에도 영향을 주는 셈이다.
이런 복잡한 매커니즘을 단순화하는 방법으로 피처를 분할하거나 집계를 내거나 순환을 관리하는 방법들이 존재하는데 기법 자체로도 중요하지만 데이터를 분석하는 사람이라면 철학적으로도 반드시 알아둬야 할 기본 교양이라 생각한다.
이를 토대로 4장에서는 인과관계 다이어그램을 만들어보는 예제가 여럿 등장하는데 한 과정씩 따라하다보면 구체적으로 인과관계 다이어그램을 어떤 방식으로 그릴 수 있는지 감을 잡을 수 있다.
아울러 앞서 언급한 교란 해소 방법으로 DCC(분리 인과 기준)
과 BC(백도어 기준)
은 반드시 읽어볼 것을 권하고 싶다. 이런 교란은 실무에서는 본능적으로 애써 외면하게 된다. 별다른 성과없이 엄청난 시간과 노동력을 잡아 먹을만한 주제라는 것을 알기 때문이다.
하지만 대부분의 문제는 먼 길을 돌다보면 결국 이 교랸 문제의 모순을 해결해야 풀리는 경우를 자주 발견한다. 비록 구체적인 예제가 등장하지 않아 아쉽지만 그럼에도 좋은 예시와 해결방법이 소개되어 있다.
이 책은 인과관계만 다루는 것은 아니다. 또 하나의 주제로 그동안 입문서나 교과서에서 다루지 않던 또는 수학과 같이 엄밀함을 보장할 수 없어 어두운 그늘에서 실무자 사이에만 구전으로 전해오던 현실에서의 실전 분석 방법도 상당수 소개되고 있다.
그 중 대표적인 것이 결측치
처리이다. 결측치를 처음 접했을 때만 해도 어차피 없는 데이터 따위는 없애거나 대체하면 그만이라 쉽게 생각했는데 그 없다는 것도 나름의 정보이다. 이를 무시하면 절대 성능좋은 모델을 만들 수 없다.
보이지 않는 데이터가 때로는 보이는 데이터보다 결정적인 결과를 도출하기도 한다. 교양서이지만 통계학의 대가 데이비드 핸드가 저술한다크데이터라는 책을 읽어본다면 결측치를 결코 만만하게 볼 수 없음을 깨달을 수 있다.
아무튼 MCAR, MAR, MNAR 등을 인과관계 다이어그램과 결부시켜 실습해보는 것이 인상적인 부분인데 비교적 적은 코드로 결측치의 숨은 진실을 쉽게 파악할 수 있게 잘 정리되어있다 생각했다.
부트스트랩을 이용한 불확실성 측정
또한 놀라웠다. 그동안 그저 모델이 정확도를 높이기 위해 부트스트랩을 활용해 왔는데 p-value의 남용 이슈와 관련된 부분에서도 큰 도움을 받을 수 있다는 사실을 직접 실습할 수 있어 유익했다.
p값 남용 문제
는 통계학회의 권고 외에도 무수히 많은 책에서 확인해 온 내용이지만 그래서 결론은 어쩌라구? 라는 내 질문에 나름의 해법조차 전달한 책을 찾기는 드물었다. 분명 분석가 나름의 방법이 있을텐데 엄밀하지 않아서 확실하지 않아서 명예가 훼손될까 감춰진 경향이 강했다. 저자는 그 기법을 쿨하게 밝히고 있다. 물론 서문에서 다른 학자 및 전문가와 견해를 달리할 수 있음을 밝혀두었다.
그 외에도 실험을 직접 설계해보며 조절효과나 매개효과를 측정하는 방법 또한 매우 유익했다. 논문을 읽을 때마다 확실한 이해가 부족하여 막혔던 부분인데 이 책을 읽고 어느정도 감을 잡고 자신감을 얻을 수 있었다.
실습 언어는 R, Python 두 언어를 모두 사용하고 있다. 예제에 따라 두 언어 중 보다 적합한 언어를 선택하여 예제를 구성하고 있다.
다만 실습 위주의 책은 아니다. 크게 얻을 것이 없는데 실습 량이 많아 질 것 같은 부분은 예시로 대체하고 있으며 짧은 실습으로 언어적 기술보다 이해에 도움이 될 부분만 예제를 도입하고 있는데 그 완급조절
이 가히 예술이다. 최대한 적은 분량으로 많은 것들을 알기 쉽게 전하는 책이다.
이렇듯 이 책은 99%의 입문서나 교과서가 담고 있지 않은 현실에서의 더럽고, 복잡하고, 자신있게 주장하기 힘든 데이터 분석 문제에 대하여 저자 나름의 해법을 용기있게 전달하는 책이다. 아울러 이 책에서 소개한 큰 주제 중 하나인 인과관계는 개인적으로 강인공지능(AGI)을 위한 열쇠라고 생각한다.
저자의 경험에서 얻은 노하우의 공유에 감사드리며 데이터 분석에 임하는 모든이들에게 꼭 한 번 읽어볼 것을 권하고 싶다.