"국내에서 빅데이터 활용이 부진한 이유로 제일 먼저 전문가 부족이 꼽힌다. 한국IBM에서 빅데이터 분석 및 최적화 사업을 총괄하는 이상호 상무는 '제 아무리 재료(빅데이터)와 도구(분석장비)를 갖췄다 해도 요리할 사람(빅데이터 전문가)가 없으면 무용지물'이라며 '국내 기업에서 빅데이터 활용이 안 되는 가장 큰 이유는 바로 전문가를 구할 수 없기 때문'이라고 말했다.” 2013년 12월, 동아일보
글을 읽는 독자들 대다수가 공감하겠지만, 빅 데이터 시대는 벌써 왔다. 이미 오래전부터. 심지어 윗 글은 무려 2013년 12월 기사에서 발췌한 글이다. 3년도 더 전 이야기다. 그런데 현장에서 빅 데이터를 보유하고 무슨 분석을 하고 있다는 회사들을 만나서 필자가 진짜 빅 데이터의 시대가 왔다고 느낀적은 별로 없다. 전문가가 없어서? 윗 글대로 전문가가 양성이 안 되어 있다는 느낌을 많이 받는데, 왜 지난 3년간 전문가가 양성이 되지 않았을까 궁금해하다가 최근에 그 원인을 찾았다는 생각이 든다. 굳이 필자의 판단을 외람되게 표현하자면, 빅 데이터 시대가 온 게 아니라, 내 데이터가 빅 데이터라고 우기는 시대가 온 것 같다.
정작 무슨 데이터가 “빅” 데이터인지도 개념 정립이 안 되어 있고, 그렇다보니 그 데이터를 어떻게 활용해야 진짜 가치를 뽑아낼 수 있는지, 그리고 어떻게 남들에게 보여줘야하는지 감을 잡고 있으신 분들이 드물다. 백보 양보해서, 어쩌면 빅 데이터도 있고, 분석, 활용하는 능력도 뛰어난데, 정작 외부에 공개하는 방식이 문제였을수도 있겠다는 생각이 얼핏 들었다. 그러면 빅 데이터로 얻은 Insight란 어떤 종류가 있고, 그 내용을 남들에게 보여줄 때는 어떻게 해야할까?
데이터 사이언티스트들 대부분이 데이터 분석에 필요한 새 지식과 신기술을 배우기에 바빠 정작 분석 내용을 보여줄 도구와 방법에 대한 고민을 간과하고 산다. (필자도 예외는 아니다.) 그러나 빅 데이터를 활용하는 지식, 기술의 진짜 가치는 그 Insight를 공유할 수 있을때 발생한다. 그리고 그 공유 방법은 말처럼 쉽지 않다. 내 Insight를 듣는 사람이 나와 같은 지식과 기술에 대한 이해와 경험이 없기 때문에?
글쎄다. 경험상, Data visualization을 담당하는 데이터 사이언티스트가 가장 깊게 고민해야하는 부분은, 얼마나 많은 데이터를 보여줄 것인가, 어떤 아이디어를 보여줄 것인가가 아니라, 인간의 인지 능력이 2차원의 스크린과 3차원의 생활 공간에 국한되어 있다는 사실이다. 안타까운 사실이지만, 극히 일부의 인류만 평면에 그려진 3차원 그래프를 쉽게 이해하고, 대부분은 4차원 이상의 그래프를 시각적으로 이해할 수 없는 인지적 한계 속에 산다. 시리즈 글 두번째에는 그로 말미암아 발생하는 문제, 필자의 극복 사례들, 그리고 관련되는 통계학 지식들을 간단하게 나열해보겠다. 보잘 것 없는 글이지만, 글을 읽으시는 데이터 사이언티스트 분들께서 빅 데이터를 어떻게하면 잘 보여줄 수 있을지 다시 한번 생각해볼 수 있는 계기가 되었으면 좋겠다.
위에서 언급한대로, 인간은 가로, 세로, 높이로 이루어진 3차원의 생활 공간을 기반으로 살고, 대부분의 경우 2차원의 평면(모니터, 스마트 폰, 스마트 폰, 그리고 스마트 폰…... 그리고 거의 안 보지만 책...)에 배열된 지식을 습득하고 있다.
1997년작 콘택트(Contact, 2016년작 아님)를 보다보면 인간의 인지 능력의 한계에 대한 흥미로운 장면이 하나있다. 베가성에서 날아온 모스 부호 같은 메세지를 소수(Prime Number)라는 연결 고리를 이용해서 겨우 해석해놓았더만, 화면상에 띄워보니 도무지 면과 면을 연결할 방법을 찾지 못해 난관에 부딪혀 있는 장면이다. (아래 사진 왼쪽) 우리의 상식으로는 사각형의 종이에 프린트된 면을 90도 각도로 주욱 이어 붙이면 전체의 큰 메세지를 담은 도면을 찾을 수 있을 것이라고 생각했는데, 도무지 어느 그림을 어떤 순서로 붙여야할지 감을 못 잡고 있던 와중, 발상을 완전히 전환해 베가성 사람들처럼 생각해서 3개 그림을 120도 각도로 연결해 붙이는 방식으로 문제를 풀어낸다. (아래 사진 오른쪽)
(From Contact, 1997. Reformated by Hipzoep)
아마 인류가 평소에 육면체로 이루어진 지면으로 (즉, 3차원으로) 지식을 습득하고 있었다면 위의 퍼즐은 외계인이 보내준 “암호”를 상징하는 영화 속 도구로 등장하지도 않았을 것이다. 당장 종이 접기로 정육면체를 만들어보라. 3개 면이 90도로 만나면서 위 사진 오른쪽에 있는 (조디 포스터의 지적인 매력이 풀씬 풍기는 얼굴 바로 오른쪽에 있는) 녹색 육면체 마크형태의 접점을 만들어 낼 수 있을 것이다. 다차원 공간 인지 능력에서 가장 뛰어난 학생들만 살아남는다는 수학, 물리학 박사도 모자라 거기서도 교수님들이 가려뽑는다는 천체 물리학 박사를 했다고 나온 주인공 엘리도 인간이 가진 인지 능력의 한계는 쉽게 극복할 수 없었나보다. (엄친딸도 못하네 휴~)
Data visualization에서 필자가 첫번째로 강조하고 싶은 점이 바로 여기에 있다. 매우 진부하지만 우리가 항상 실패하는 그것, 생각의 틀을 깨자.
2차원의 평면에서 벗어나자 - 안장점 (Saddle Point)
2차원의 지면으로 지식을 받아들이는 우리는 3차원의 세계에서는 거짓인 내용을 2차원의 세계에서 진실로 받아들이고 있는 경우가 허다하다. 아래 왼편의 3차원 그래프을 보자. 점 (c)는 안장점 (Saddle Point)라고 불리는 지점이다. 참고로 여기서 “안장”은 말 안장을 말한다. 우리가 말에 올라타면 아마도 점 (c)에 엉덩이가 닿을 것이고, 점 (d)와 (e)에 다리가, 그리고 점 (a)나 (b)에 손을 얹게 될 것이다.
3차원 그래프가 잘 이해하기 어려울까봐 오른편에 2차원으로 스냅샷을 배치해보았다. A. x-z axis는 3차원 그래프를 a-c-b 점으로 자른 것이고, B. y-z axis 그래프는 3차원 그래프를 d-c-e 점으로 자른 것이다. y축과 z축만을 놓고보면 점 (c)는 최대점이다. 반면 x축과 z축만을 놓고보면 점 (c)는 최저점이다. 2차원의 세계에 사는 사람이 y축과 z축만을 놓고 세상을 인식하고 있으면, y값을 움직여 점 (c)에 도달하면 z 값이 최대치를 찍었다고 생각할 것이다. 학교 성적이라고 보면, 학생 x-z는 점 (c)에 있을 때 어떻게든 노력해서 성적을 올리자고 생각할 것이고, 학생 y-z는 점 (c)에 도달하면 자신의 최대치를 달성했다고 만족할 것이다. 실적을 내야하는 세일즈맨도 아마 같은 생각을 할 것이다. 누군가는 점 (c)에서 만족감을 느끼고, 또 다른 누군가는 같은 지점에 있으면서 더 나은 성과를 내기위해 안간힘을 쓸 것이다.
(당연하겠지만 필자가 고용주라면 세일즈맨 x-z를 고용하고 싶다.)
(Saddle point illustration. Reformatted and edited by Hipzoep)
광고 성과 분석을 할 때도 같은 관점에서 시장을 바라봐야한다. 어떤 광고를 집행했더니 매출액이 크게 늘었다. 그래서 그 광고를 더 집행하면 매출액이 더 늘어날까? 꼭 그렇지만은 않을 것이다. y-z처럼 y축 기준에서는 성장은 이미 끝났을 수 있다. 이럴 때는 새로운 변수를 하나 추가해 광고 집행 성과를 3차원으로 바라보면서 사업 전략을 새로 짜야하지 않을까? 사실 3차원만으로는 부족하다. 변수를 바꾸면서 다양한 3차원 그래프를 볼 수도 있고, 또 4개 이상의 변수들간 상관관계를 보여줄 수 있는 아이디어도 필요하다. 실력있는 데이터 사이언티스트라면 다양한 조합들로 얻어낸 광고 성과를 살펴보면서 현재 상태를 확인하고 다른 채널을 추가로 집행했을 때, 어떤 변화가 있을지 공간적인 이해를 할 수 있어야한다.
인식의 한계, 모델의 한계, 그리고 머신 러닝의 한계
처음 안장점 개념을 소개하고 광고 성과에 연계시켜 설명했더니, 고작 변수 몇 개 빼먹어서 광고 성과를 극대화 못하는게 그렇게 큰 문제냐는 질문을 받았다. 사실 맞는 말이다. 마케터가 고려해야하는 사항은 비단 데이터로 얻은 결론만이 아니다. 광고 목표 (KPI)는 수시로 변하고, 다양한 광고 채널과의 관계도 언제나 가변적이다. 변수 하나를 고려하지 않아 분석이 좀 부족하다는 것만으로 다차원적인 분석을 반드시 해야한다고 설득하기는 어렵다.
그러나 데이터 사이언티스트의 관점에서 볼 때, 누락변수(Omitted variable) 문제는 모델 전체의 적합성에 대한 근본적인 도전이다. 문제는 변수 한 개 빼먹어서 점 (c)를 최대점으로 생각하는 것이 측정 오차, 분석 실패만으로 끝나지 않기 때문이다. 시리즈 글 1. 오해에서 밝혔듯이, 머신러닝 모델도 디자인의 한계를 극복하고 새로운 부분을 Learning 하지는 못한다. 모델 디자이너가 다른 차원의 변수를 제대로 입력하지 않았다면 머신러닝 엔진도 기계적으로 Saddle point를 최대값으로 도출하는 Learning만 반복할 것이다. 아마 이것이 광고 효율 극대화를 이뤄준다고 마켓 여기저기에 알려져 있는 대부분의 리타게팅 솔루션들이 갖고 있는 근본적인 문제일 것이다. (물론 Perturbation을 이용해서 안장점 문제를 부분적으로 해결하는 방법이 있기는 하다. 시리즈 후반부에 자세하게 소개하겠다.)
틀을 깨야한다. 그러나 위에 말햇듯이 인간은 3차원의 세계에 살고 있고, 2차원의 지면으로 정보를 습득한다. 안장점(Saddle point) 하나를 설명하기 위해서 필자도 3차원 그래프 옆에 다른 2차원 그래프를 2개나 더 그려야했다. 말을 바꾸면, 틀을 깨더라도 2차원의 지면을 넘어서면 이해를 시키기가 쉽지 않다. 하나의 예를 들어보자.
크로스 디바이스 매칭 (Cross-Device Matching) 이라는 기술이 있다. 한 사람이 스마트 폰, 타블렛, 데스크 탑, 랩탑 같은 여러기기를 활용해서 온라인 활동을 하는데, 기존 기술은 X명의 유저가 1개씩의 기기를 사용한다는 가정아래 데이터를 모았다면, 크로스 디바이스 매칭 기술은 X개 기기를 사용하는 1명의 유저로 인식할 수 있도록 연결고리를 만들어준다는 것이다. (기술 상세 내용은 연재 후반부에 따로 다룰 것이다.) 이 기술의 필요성에 대해서 필자가 광고 시장 마케터, 대기업 DB 관리자, 벤쳐 투자자 등 다양한 배경을 가진 분들께 열심히 설명한 적이 있었는데, 솔직히 말하면 필자의 능력 부족탓에 설명에 어려움이 많았다. 지면을 통해서 독자들 여러분께도 한번 더 도전을 해 보자.
필자는 사무실에 맥프레, ThinkPad, 자택에 데스크탑, 스마트 폰 2대, 타블렛, 그리고 장난감 구형 노트북 2대까지 도합 8개의 기기를 쓴다. (맞다, 전자기기 덕후다…) 웹 환경에는 크롬이나 익스플로러만 쓰는게 아니라, 사파리나 엣지, 파이어폭스, 심지어 스윙 브라우저도 목적에 맞게 나눠쓴다. 안드로이드 기기에서는 어도비 플래쉬 때문에 돌핀 브라우저도 쓴다. 필자 같은 사람은 기기 숫자와 브라우저 숫자에서 나오는 경우의 수를 합하면 20개 이상의 기기 아이디를 DB가 갖추고 있어야 추적할 수 있을 것이다. 예를 들어 필자 같은 사람이 회사서 퇴근전에 맥프레에 사파리로 그것도 Private mode로 쇼핑몰 상품을 보고, 집에가서 데스크탑 파이어폭스로 같은 상품을 한번 보고, 리타게팅되어서 한번 더 보았다가, 다음날 출근길에 스마트폰 돌핀 브라우저로 다시 한번 더 상품을 본 다음에 그 날 저녁에 스마트폰의 앱으로 10% 할인 쿠폰을 받아서 이틀만에 처음으로 로그인하고 결제했다면?
크로스 디바이스 매칭이 없는 데이터로 분석을 한다면 어떻게 될까? 아마 4명의 유저가 검색을 했고, 두번째 유저는 한번 리타게팅이 되었지만 구매가 없었고, 마지막 유저는 할인 쿠폰을 보고 들어와서 구매했다고 기록할 것이다. 이렇게 파편화 시켜 추적하는게 맞는 방법일까? 이 때 검색 광고 3개는 전환과 아무런 연관이 없었고, 리타게팅 광고도 아무런 효과가 없는 것처럼 기록이 남는다. 아무리봐도 광고 성과가 제대로 측정될 것 같지 않다. 비효율적이다.
4명이 아니라 한 명이 고민하다 전환에 이르렀다는 걸 알아내면 어떤 장점이 있을까? 어떤 정보가 전환을 유도했는지도 알 수 있고, 어떤 광고가 효율적인지도 좀 더 심도깊게 파악할 수 있다. 그럼 정확하게 추적하겠다면 어떻게 추적하면 좋을까? 필자같은 전자기기 덕후를 추적한다는 것이 가능한 일일까? 예외적인 사례니까 제외하면 안 될까? 아마 한국의 많은 IT 업체들, 특히 웹-앱 연계 플랫폼을 갖추고 있는 회사라면 최소한 한번쯤 고민해봤을 문제라고 생각한다. (사실 글로벌 선두업체들 일부는 이미 시장이 놀랄만한 기술로 멀티 디바이스 매칭을 하고 있다.) 이런 내용을 여러가지 도구를 이용해가며 손짓발짓을 다 동원해서 설명했는데, 아무래도 성과가 좋지 못했다.
Sunburst - 등고선의 미학
고민끝에 새로운 그래프 모양으로 설명을 시도해봤다. 아래는 최종 결제에 이른 유저들이 사용했던 기기를 모두 추적해서 만든 그래프이다. 제일 바깥쪽은 처음 상품에 노출된 기기, 가운데 원은 추가적으로 상품에 노출된 기기, 제일 안쪽은 상품 결제를 한 기기다. 편의를 위해서 최대 6개 기기만 추적했다. (참고로 ab180 광고주의 정보 보호를 위해 모든 데이터는 시뮬레이션으로 생성되었다.)
(https://d3js.org/, Reformatted by Hipzoep)
(Github Link)
(R 문서 Link)
필자의 모자란 설명력을 보완하려고, 한 명의 유저가 다양한 기기를 거쳐가면서 인터넷 서핑을 하고, 정보를 얻는지를 잘 보여줄 수 있는 방법이 무엇일까 긴 고민을 했다. 아마 더 좋은 표현법이 있을지도 모르겠지만, 필자가 알고 있는 그래프 모양 중에 가장 적합하다고 생각되는 Sunburst라고 알려진 그래프를 이용해 보았다. 결제한 플랫폼만 놓고보면 데스크탑 (+ 랩탑)과 앱의 비중이 절대적이지만, 결제 직전에 모바일 웹을 사용했던 비중이 상당했다는 것을 알 수 있고, 앱에서 검색을 시작했다가 최종적으로는 데스크탑으로 결제하는 유저들의 비중도 대단히 높다는 것을 알 수 있다. 데이터 추적 에러로 “Unknown”으로 표시된 회색 부분에 대한 데이터를 좀 더 정확하게 추적하면 지금보다 더 정확하게 유저들이 어떤 기기를 사용해서 정보를 얻는지 잘 알 수 있을 것이다.
위의 그래프로 모바일 웹의 결제 시스템을 고쳐야겠다는 아이디어를 얻을 수도 있고, 유저들이 정보는 앱으로 얻고 결제는 데스크탑으로 주로 한다는 결론을 얻을 수도 있다. Unknown으로 추적되는 부분을 보고 SDK를 잘못 설치했는지, 혹은 SDK에 기술적인 문제가 있는지에 대한 고민을 해 볼 수도 있다. 사실 회사의 비지니스 내용에 따라서 얻을 수 있는 결론은 무궁무진하다. 다음번에 누군가에게 크로스 디바이스 매칭 (Cross-Device Matching) 이 어떤 기술인지 쉽게 설명해야되면 위의 그래프를 써볼까 한다. 백번 듣는 것보단 한번 보는 것이 더 나을테니까.
필자의 가장 취약한 영역인 Data visualization에서 고민이 생기면, 미련없이 여기를 찾아본다. 혹시나 더 좋은 정보가 있으신 분들이 있으면 아래에 댓글로 공유해주시면 어떨까?
현대 카드 정태영 대표이사님이 2012년에 신용 카드 사용 실적을 보고 남녀간 소비 패턴의 차이를 알아볼려고 했더니 여성향 음식점마저도 모조리 남자들이 카드로 지불했더라면서 “한국 남자들이여, 언제까지 이러고 사실건가^_^”라고 글을 쓴 적이 있다. (워워워~ 이 글은 남녀/여남 차별을 강조하는 글이 아니다.) 실제로 우리나라 카드 회사들, 보험 회사들, 유통업체들은 고객들의 결제 데이터를 바탕으로 어떤 상품이 최근 유행을 타고 있고, 어떤 상품을 위주로 라인업을 구성해야겠다는 정보를 얻고, 이를 바탕으로 전략 회의를 진행한다(고 들었다). 입소문, 판매자의 직관에만 의존하는 기존의 경영전략 수립방식(Faith-driven)에 비하면, 데이터에 기반한 사업 전략(Data-based)이라는 점에서 매우 합리적이고, 진일보한 경영방식이다. 하지만, 우리가 빅 데이터 시대에 살고 있는데, 이런 “뻔한” 정보말고, 좀 더 고급 정보를 뽑아낼 수는 없을까?
(그나저나, 필자에게 현대 카드 결제 내역 정보가 있으면 남녀/여남 차별을 말할게 아니라, 여친이 “있는" 남성과 “없는" 남성을 구분해서 맞춤형 광고를 뿌리겠다.)
외람되지만, 데이터 사이언티스트인 필자의 눈에 이런 경영방식은 지나치게 1차원적이다. 신용 카드 결제 데이터는 그 유저가 구매에 이르기까지 겪었던 유저 행동 (User journey)에 대한 정보를 사실상 하나도 고려하지 않은채, 결과값만 볼 수 있는 데이터다. 이 글을 쓰고 있는 필자는 지금 모 프랜차이즈 인스턴트 버거 집 2층에 앉아 있다. 사실은 여기서 글을 쓰고 싶지 않았고, 조용한 카페, 그것도 3층으로 된 건물의 꼭대기 창가 측에서 글을 쓰고 싶었다. 그러나 3층까지 꽉 찬 카페에서 자리를 둘러보다 포기하고 한 블럭 건너에 있는 좀 시끄러운 카페에 들렀다가, 그곳마저도 글 쓸 자리가 여의치 않아보여서, 그나마 식사 시간이 지나 좀 조용해진 인스턴트 버거집 2층에 자리를 잡았다. 아마도 필자의 신용카드 거래 정보를 보는 분석팀은 30대 중반의 남자가 주말 오후 3시에 건강에 나쁘다고 알려진 고열량의 인스턴트 버거를 먹고 있다고 기록할 것이다. 그러나 필자의 이동 경로를 모두 알고있는 분석가라면 필자가 조용하게 쉴 수 있는 공간과 주말 오후의 여유로운 차 한잔을 찾아다녔을지도 모른다는 가능성에 무게를 두고 필자의 유저 행동을 분석할 것이다.
Sankey - 어디”에서”가 아니라 어디를 “거쳐서”
시리즈 글 1. 오해에도 썼듯이, 빅 데이터는 최종 결과값 데이터를 수백만건, 수천만건 갖고 있는데서 출발하는 것이 아니라, 그 데이터로부터 유저의 이동 경로를 추적할 수 있는지의 여부에서 결정된다. 아래는 전력을 어떻게 생산해서 어디로 전달되었다가 누가 소비했는지를 보여주는 표다. 왼편 가장 상단에 있는 핵(Nuclear) 발전의 경우 Thermal generation을 거쳐 50% 이상이 Losses로 흘러들어가고, 친환경 에너지(Wind, Wave, Solar 등)는 Electricity grid를 거쳐 일부는 Losses로, 나머지는 산업용 (Industry)이나 가정용 (Homes)으로 공급되는 것을 볼 수 있다. (원래는 온라인 광고 채널들로 표현하려했으나 특정 채널이 두드러지게 나오는 문제로 에너지 흐름표로 대체했음을 밝힌다.)
위의 표는 흐름을 강조할 때 자주 이용되는 Sankey라는 표인데, 온라인 광고 시장을 볼 때 필자는 같은 방식으로 데이터에 접근한다. 광고 시장 마케터들 대다수는 어디**”에서”** 전환이 일어나는지에 집중하는데, 사실 더 중요한 것은 어디**"를 거쳐서”** 전환이 일어나는지에 대한 정보다. 위의 유저 행동(User Journey) 정보는 마케터들이 어떤 광고 채널을 계속 쓰는 것이 합리적인지 아닌지에 대한 판단을 하기 위해서 더할나위 없이 좋은 도식화가 아닐까 싶다. 기존의 온라인 광고 시장은 대부분의 경우 세션(Session)내에 일어난 최종 클릭 (Last Click)에만 기여분(Credit)을 인정해줬다. 그렇다고해서 최초 클릭과 중간 클릭을 많이 일으켜 궁극적으로 최종 클릭에 도움을 이끌어내는 광고 채널을 무턱대고 끌 수도 없어서, 마케터들은 일정부분 감에 의존한 마케팅을 할 수 밖에 없었다. 그러나 Sankey 도표 하나면 유저들이 어느 채널에서 유입되고, 어느 채널이 광고 효과를 끌어올리고, 또 어떤 채널이 다른 채널을 통한 전환에 큰 기여를 하고 있는지 쉽게 추적할 수 있다.
Sankey 그래프 한줄 요약: 과정없는 결과없다.
'거짓말에는 세 가지 종류가 있다. 그냥 거짓말, 새빨간 거짓말, 그리고 통계’
마지막 거짓말은 종종 그래프라는 형태로 화려함까지 갖추고 나타난다. 특히 위의 섹션 2와 3에서 나왔던 Sunburst나 Sankey 그래프같은 화려한 모양을 갖추면 내용이 설령 비합리적이라고해도 깜빡 속아넘어갈 수도 있다. 검색창에 통계의 함정을 치면 “평균의 함정”이 최상단에 등장한다. 평균값만보고 데이터의 특성을 파악했다고 착각하지말고, 중앙값(Median), 최빈값(Mode) 같은 다른 대표값들도 고려해야 한다는 내용이다. 방금 나온 대표값 3가지가 모두 같은 분포, 가운데가 볼록하게 솟아있고 좌우가 항상 대칭인 분포, 우리가 일상 생활에서 너무나 일반적으로 받아들이고 있는 분포, 통계에서 나오는 모든 거짓말의 바탕이 되는 분포가 바로 정규 분포(Normal Distribution) 이다.
기초 통계학 이론의 대부분은 데이터의 분포가 정규 분포를 따른다고 가정한다. 설령 모집단의 데이터가 정규 분포가 아닐지라도, 중심극한정리(Central Limit Theorem, CLT)에 따르면 샘플에서 뽑은 평균의 숫자가 늘어날수록 그 평균값들은 정규 분포에 근접한다. (이렇게 엄청난 이론을 한 줄로 정리하려니 좀 무섭다.) 보통 우리가 다루는 빅 데이터는 샘플 숫자가 무한대에 가까워서인지, 빅 데이터 강의를 가 보면 정규 분포 이외의 분포는 크게 고려하지 않는 것 같아서 분포에 대한 가정이 얼마나 큰 오차를 낳는지, 그 부분을 데이터 시각화로 어떻게 보완할 수 있는지 간단하게 정리해본다.
첫째, 온라인 마케팅 데이터는 이항(Binomial) 혹은 포아송(Poisson) 분포를 따른다
어느 빅 데이터 분석팀에서는 자기네 웹 사이트 유저들의 데이터를 가지고 A/B test도 해 보고, Regression도 돌려보고, 어쩌면 Machine learning을 적용해보고 있을 것이다. 쓰고 있는 방법론에 정규 분포라는 가정이 깔려있다는 사실은 잘 모른채.
배너에 대한 클릭율(Click-Through-Rate, CTR)을 볼 경우, 언제 누가 어떻게 내 배너를 찍을 지 알 수 없지만, 배너를 찍으면 1이고 아니면 0인 2진법의 숫자가 지속적으로 나열되는 배열이다. 이런 데이터는 정규 분포일까? 0과 1이 반복되니 가장 합리적인 가정은 이항(Binomial) 분포라고 생각된다. 언뜻 안 와닿는다면, 고교시절에 동전을 몇 번 던졌을 때 앞면이 나올 확률 같은 분포를 말한다.
유저당 구매율(Transactions Per User, TPU)은 어떨까? 클릭율과 유사하지만, 이번엔 0과 1만 반복되는게 아니라, 1이상의 숫자가 나올 수도 있다. 이런 분포를 포아송(Poisson) 분포라고 한다. 아래는 정규분포, 이항분포, 포아송 분포를 도표로 나타낸 것이다.
(정규분포는 평균 1, 분산 1, 이항분포는 100개 시도, 0.6의 확률, 포아송 분포는 Lambda = 10이다)
클릭율이나 유저당 구매율을 놓고 A/B Test를 하는데, 정작 Z-test (정규 분포에 적용하는 테스트)로 통계 검증을 했다면 어떻게 될까? A/B Test를 할 때, Z-test는 그룹 A와 그룹 B간 평균값 차이가 통계적으로 유의미한지, 아니면 0이라고 판단해야하는지에 대한 테스트이다. 여기서 포인트는 “평균값 차이”다. 위의 그래프들에서 볼 수 있듯이, 평균이 가장 적절한 대표값인 경우는 정규분포 밖에 없다. 나머지 경우는 다른 대표값들이 데이터를 더 잘 표현한다.
Regression이나 머신러닝도 데이터의 분포에 대한 고려없이는 무의미한 결과값을 줄 수도 있다. 당장 Regression은 Non-linear fit 함수를 찾는 작업, 데이터 측정 오류를 수정하는 작업, 결과를 해석하는 작업 모두에서 비정규분포에 맞는 방법을 적용해야한다. 나아가 데이터가 시계열로 구성되어 있을 경우, 일반적인 계량분석으로는 과거가 현재를 잘 설명한다는 결론에만 얽매일 수 밖에 없다. 머신러닝에서 Gradient descent를 직접 데이터에 적용시켜 본 사람들은 한번쯤 겪어본 적이 있지 않을까 싶다. 모델이 Convergence가 안 일어나서 결과값이 틀릴 수 있다는 경고 메세지. 어떤 R blogger는 이런 경우에 데이터들을 강제로 0과 1, 혹은 -1과 +1 사이로 재배치해서 다시 머신러닝을 돌릴 것을 추천하기도 하더라.Link
둘째, 급하게 통계분석이나 머신러닝을 적용하기 전에, 데이터의 분포를 한번 살펴보고 시작하는 건 어떨까?
좀 더 필자가 다루는 데이터에서 보는 문제들에 가까이 가보자. 만약 위의 괴상망측한 분포를 3차원으로 보면 어떻게 될까? 거기에도 안장점(Saddle point)이 있다면? 클릭율(CTR)을 예측하는 모델을 만들면서 변수들 몇 개를 잘못쓰는 바람에, 한쪽 차원에서는 최대점인데, 다른 차원에서는 최소점이고 그걸 필자가 간과했다면? 시리즈 다음글 클릭율 최적화 모델 (CTR Optimizer)에서 더 자세하게 소개하겠지만, 데이터의 특성을 잘못 이해해서 엉뚱한 결론을 얻고 다시 수정하는 Trial-and-error는 필자의 일상이다.
수많은 실패와 좌절의 경험으로 필자는 처음 데이터 셋을 만나면 일단 그 데이터가 정규 분포와 얼마나 닮아있는지 확인부터한다. R에서 Quantile-Quantile(Q-Q) plot이라는 함수를 활용하면 편리하다. 어떤 데이터 포인트를 45도 (y=x) 그래프 위에 Quantile로 나타내는 그래프이다. (Quantile. 데이터 전체를 크기에 따라 순서를 매기는 개념. 예. 50개 중 10등이면 20%, 20등이면 40%) 45도 그래프에 가깝게 배열되면 정규 분포, 멀리 떨어져 있을수록 정규 분포가 아니라고 보면 된다. 위의 세 그래프를 Q-Q Plot에 얹어 보았다.
예상대로 첫번째는 거의 45도선에 가깝게 나왔다. 이항분포와 포아송분포는 의도적으로 x축을 re-scaling 했지만, 그래도 45도선에 가깝게 나오는 모양을 보기가 힘들다.
필자는 이런 경우 이항분포와 포아송 분포에 맞는 Test (P-test, C-test, T-test 등)를 활용한다. 자세한 내용은 아래 링크를 참조하시기를 권유드린다.
(Binomial case)
(Poisson case)
(More detail)
데이터 시각화는 Insight를 찾아다니는 분석용으로도 쓰이고, 찾은 정보를 남들에게 보여주는 발표용으로도 쓰인다. 그러나 더 중요하게는 데이터 사이언티스트 자신이 제대로 분석을 하고 있는지를 뒤돌아볼 수 있는 거울로도 쓰일 수 있다. Q-Q Plot은 필자에게 거울이다.
데이터 사이언스 석사 프로그램을 가보면 빠지지 않고 Data visualization 이라는 수업이 있다. 수업 대부분은 R의 ggplot과 Shiny를 이용해 화려한 그래프를 그리거나, Tableau, Qilk 같은 고가의 유료 소프트웨어를 쓰는 방법을 가르쳐준다. 학생들의 취업률을 높여야하는 프로그램이 회사에서 바로 쓰일만한 내용을 가르치는 것에는 필자도 이견이 없다. (우리 회사 면접오는 사람들이 둘 다를 잘 쓰면 필자도 참 좋겠다. 안 가르쳐도 되니까ㅋ) 그러나 그렇게 주어진 소프트웨어만 쓸 줄 알면 진짜 데이터 “Scientist”가 될까?
분석의 힘은 좋은 알고리즘에서 나오는게 아니라, 좋은 데이터에서 나온다. 좋은 데이터의 힘은 뛰어난 도구(Tools)을 만날 때 빛을 발한다. 그리고 그 도구들은 그 데이터를 훌륭한 Insight로 바꿔줄 수 있는 센스를 만날 때 화려한 꽃을 피울 수 있다. 데이터 관리 플랫폼 (Data Management Platform, 이하 DMP) 서비스들을 쓰는 마케터들 입장에서 가장 핵심적인 부분은 DMP 서비스가 얼마나 많은 데이터를 받아서 처리해주느냐가 아니라, 어떤 도구를 이용해서 어떤 방식의 Visualization으로 보여주느냐에 달려있다고 본다. 데이터를, 특히 빅 데이터를 본다는 것은 누군가가 “감”으로 처리하고 있는 일을 “데이터”로 처리하고, 이해하고, 분석하고, 예측하기 위해서가 아닌가?
최근 빅 데이터 분석으로 소문난 강의를 하나 갔더니 데이터를 보는 “눈”을 키워야된다고 수업을 끝 맺으시길래 필자도 흉내를 한번 내보고 싶다. 필자는 데이터를 볼 줄 아는 “눈”, 남에게 잘 보여주는 “눈”, 남들이 못 보는 걸 찾아내는 “눈”, 그리고 데이터로 나 자신을 돌아볼 수 있는 “눈”을 키워야한다고 조금 장황하게 설명했다. 그 모든 “눈”은 지식과 경험, 노력, 그리고 스스로의 잘못을 끊임없이 고치며 Learning을 계속하는데서 비롯된다고 생각한다. 시리즈 글 내내 강조하는 바대로, 머신은 절대로 혼자서, 알아서, 잘 Learning 하지 않는다. 머신러닝의 Learning은 모델 디자이너가 얼마나 많은 Learning을 담아 디자인하느냐에 달려있다. 다음 시간에는 필자의 고통스럽고 부끄러운 Learning 프로세스를 잘 보여주는 주제로 찾아뵙겠다.