데이터 사이언스와 수학&통계학 (1)

2달 전 수업을 듣고가신 그 철학자님께서 가끔 재미난 글을 찾으시면 메일을 보내주신다. 필자와 핀트가 맞아서인지 (감히 철학자님께 핀트가 맞는다는 표현이 적절한지는 모르겠지만) 좋은 글들이 많은데, 어제는 요즘 필자의 관심사를 어떻게 알아내셨는지 “‘수포자’의 잘못된 원인 분석이 잘못된 해법을 부른다.”라는 글을 보내주셨다. 링크를 따라가면 꽤나 장문의 분석글을 읽을 수 있는데, 핵심 포인트를 두 개 잡아내면, “수학이 필요하지 않다는 생각에 수포자가 된다”“자신감을 상실했기 때문이다”로 요약할 수 있을 것 같다.

글 자체가 굉장히 분석적이어서 여러 군데 마음에 드는 구절들이 많지만, 일단 오늘 필자가 집중하고 싶은 부분은 “수학이 필요하지 않다는 생각”이다. 최근에 만나고 있는 자칭 “머신러닝 경험자”인 개발자들과 “데이터 분석은 그래프만 예쁘게 그리면 된다”고 주장하던 옛 직장 동료들에게서 꾸준히 오랫동안 지속적으로 봐왔던 생각이기 때문이다.

 

1. 수학으로 만들어진 세상

필자는 수학 이름이 들어간 높은 학위를 갖고 있어서가 아니라, 어릴 때부터 굉장히 수학을 좋아하고 즐겁게 공부하는 사람이었다. 필자의 고교 진학과 대학 진학은 모두 수학, 과학이 역사상 최고 난이도로 나온 시험이었던 덕분이라고해도 과언이 아니고, 고교 시절에는 야자 시간에 잠을 깨려고 수학책을 꺼내서 문제를 풀었던 정도로 수학을 즐기면서 공부했었다. 그런 필자도 박사시절 Functional Theory를 이용해서 우리 학문의 문제들을 증명하는 지도 교수님 수업을 “포기”하고 싶더라. 굳이 Functional Theory 아니라 대수나 기하학으로 충분히 같은 증명을 할 수 있다는 생각도 들었고, 더 나아가서는 굳이 저걸 증명해야할 필요가 있을지에 대한 확신이 별로 없었기 때문이다. 사실 박사과정 중에 배우는 많은 증명들을 그렇게 무조건 암기만하고 넘어갔던 적이 많았다. 나중에 논문 쓰면서 다시 그 증명들을 찾아볼 때야 비로소 그 증명의 가치를 늦게나마 깨닫고 필자의 게으름을 탓하기는 했었지만.

(A joke: An Aztec math problem set. Archaeologists have hard time locating a solution plate.) 

일상 생활에서 수학의 가치를 발견하기란 참 쉽지 않다. 가깝게 지내던 변호사 친구는 수학은 아무짝에도 쓸모없는 지식인 것 같다면서, NASA가 우주선 만들어서 쏘아올리는거 전부 다 공학으로 만들어내는거 아니냐고 그러더라. 그 말의 의도는 공감하지만, 사실 그 우주선의 부품 생산부터 조립까지 모든 단계의 밑바닥에는 무시무시한 수학들이 숨어있다. 비전공자들은 모르겠지만, 로켓의 속도에 따라 공기저항이 생기고 이때 생기는 열을 어떻게 차단하는지 여러 물질을 놓고 테스트하기 전에 수학/물리학 이론을 바탕으로 대부분의 랩 내 실험을 생략한다. 금융위기를 가져왔던 복잡한 파생상품들을 기억하시는가? 그 상품들의 적정가격을 계산하는 석사 프로그램 이름은 “Financial Engineering“인데, 정작 배우는 내용은 1900년대 초반에 프랑스 수학자가 만들고 일본인 수학자가 완성시킨 Stochastic Calculus와 불확실성 모델링에 도입할 수 있도록 식을 적절하게 변형한 경제학자들의 수학적인 연구 성과물들이다.

너무 4차원적인 예제만 든 것 같은데, 자연과학 이론이 검증되고 공학적으로 적용된 사례가 결국 우리가 평소에 쓰는 상품이라는 아주 가까운 예시 하나만 더 들어보자. 유학시절, 화학 전공 형님이 다 말라붙은 밥을 버리려는 우리를보고 “잠깐, 이상기체방정식을 적용해서…”라고 그러더니 잠시 후, 그 말라 붙은 밥이 김이 모락모락나는 밥으로 바뀌었다. 근데, 나중에 알고보니 똑같은 작업을 우리나라 유명 밥솥 회사들이 자기네 상품에 적용해서, 장시간 밥솥에 보관된 밥이 말라붙지 않도록 유지시키는 기술 특허를 내놨더라.

더 가까운 예제를 하나만 더 들면,  신축 아파트들의 Ergonomic 부엌이라는 컨셉도 인간의 동선을 넣고 시뮬레이션 모델링을 해서 최단거리 이동을 만들어 낼 수 있는 조합들을 골라낸다. 웃기게 들릴지 모르지만, 중학시절에 한 붓 그리기, 여러 점 연결하기 같은 작업 했던 내용이 이 모델에 정확하게 같은 논리로 적용된다. 이런 걸 보면, “우리 생활 속에 숨어있는 수학”이 아니라, “내가 관심없어서 몰랐던 수학”이라고 표현하는게 더 적절할 것 같다.

 

2. 통계학 렌즈로 본 세상

데이터 사이언스에 적용되는 수학과 통계학도 마찬가지다. 위에 잠깐 언급한대로 데이터 분석은 그래프를 예쁘게 그리는 거라는 정도에서 인식적 한계가 있는 사람들이 있는데, 그 분들께 필자의 석사 논문을 한번 공유해보고 싶다.

우리나라 제약업계에 공공연한 비밀은 제약사들이 유명 병,의원들에게 막대한 금액의 “리베이트”를 뿌리고 있다는 사실이다. 대놓고 우리회사 약을 처방하면 얼마만큼의 수수료를 챙겨주겠다고 나서는 경우부터 주요 고객들에게 의학 컨퍼런스를 가장한 해외여행권을 준다던가, 명절 선물이라는 핑계로 고가의 그림을 보낸다던가 하는 것 등이다. 이런 사례가 너무 많았는지 공정거래위원회가 2009년부터 단계적으로 규정을 개정해서 리베이트 관례가 많이 줄어들었다는 기사를 봤다.

이 기사를 보고 필자가 두 가지 생각을 해 봤다. 리베이트가 줄어들어서 의사들이 좀 더 소신껏 약을 처방하게 된 게 맞을까? 리베이트에 돈을 안 써도 된 상황이 온 제약사들은 경영상에 무슨 선택을 했을까?

첫번째 질문에 대한 답을 찾기 위해서 필자는 한국 제약업계가 가격 경쟁으로 움직이는 시장인지, 아니면 다른 경쟁 요소에 의해 좌지우지되는 시장인지에 대한 확답이 필요했다. 일반적으로 경제학 모델에서 가격 경쟁을 Bertrand 모델, 생산량 경쟁을 Cournot 모델이라고 하고, 좀 더 공부해보면 상품 퀄리티에 대한 경쟁 모델로 Quality competition 모델이 있다. 셋 중 어떤 모델이 더 맞을지 한국 제약회사 매출액 상위 30개 업체의 리베이트, 매출액, 상품별 매출액 등의 정보를 리베이트 규제 이전과 이후로 나눠놓고 Panel Data Regression을 했다. 보통은 산업별로 특징이 있는지를 잡아내는 변수를 하나 놓고, 그 변수가 유의미한 변수인지를 테스트하는 방식으로 진행한다.

당시 필자가 몇 줄 코드로 친 통계 분석의 결론은 (예상했던대로) 리베이트 이전의 한국 시장은 가격 경쟁 (정확하게는 리베이트 경쟁) 모델로 설명할 수 있었고, 리베이트 규제가 들어가면서 모델의 무게중심이 Quality competition으로 옮겨갔다. 한국인 입장에서 좀 자존심이 상해서 다른 선진 시장들 데이터를 찾아서 똑같은 작업을 해보니 (자존심이 두 배로 상하게도) 가격 경쟁은 우리나라 2010년 이전 데이터에만 나타나더라. 외국 초대형 제약사들은 신약 개발에 어마어마한 금액의 R&D 투자를 하고 있기 때문에, 그 중 하나가 대박이 나면 굳이 리베이트 영업을 하지 않아도 충분히 매출액 신장을 얻어낼 수 있기 때문일 것이다.

정리하면, 리베이트 규제 때문에 단순한 카피약보다는 의사들의 경험에 기반해서 좀 더 효과적인 약을 처방하는 방향으로 시장의 균형이 이동했다는 판단을 내릴 수 있었다.

두번째 질문에 대한 대답은 2010년 이후에 제약사들의 지출 내역과 투자 내역에서 나타났다. 매출액이 급격하게 줄어든 회사들은 운신의 폭이 좁아졌기 때문에 제외하고, 다른 회사들의 투자 내역을 보면 공장을 짓거나 공장 시설을 업그레이드하는데 큰 비용을 쓴 정보들을 확인할 수 있었다. 여기서도 간단한 회귀분석을 통해 가격 경쟁 -> 퀄리티 경쟁으로 이동하는 걸 인덱싱해서 한국의 상태를 그래프 상에 배치하고, 투자가 성과를 내는 시점에 어디로 이동하게 될지 방향 설정도 해볼 수 있었다.

시간에 쫓겨 한 달만에 급하게 완성했던 저 위의 석사 논문에 필자가 쓴 수학&통계학은 그렇게 많지 않다. 다만, 그런 작업을 거치면서 데이터 분석이라는건 단순히 그래프만 그리는게 아니라 “뇌피셜”을 논리와 데이터를 이용해 증명하는 작업이라는 걸 깨닫게 됐다. 그 이후로 누군가 필자에게 데이터 분석이라는건 그래프를 얼마나 설득력 있게 그리는 작업이니 사실 수학이나 통계학이 그렇게 필요하지않다고 주장하면…… 비웃는다. 안타깝다.

 

3. 데이터 사이언스로 본 세상

요즘 데이터 사이언스 공부한다는 사람들이 하는 작업들을 보면 크게 두 가지다. 하나는 K-means, KNN, Logit, SVM, PCA 같은 “이론”을 배우고 그걸 간단한 데이터에 적용해서 “몇 %만큼 맞.춘.다.”는데 초점을 맞추는 내용이고, 다른 하나는 CNN을 이용해서 이미지가 얼마나 완벽하게 인식되는지를 보고 유사한 걸 복사해내려고 몇 백만원이나 되는 고가의 수업을 찾아다니는 걸 볼 수 있다.

박사 재학시절 옆 전공에서 졸업 준비를하던 모교 과 선배 분이 “한국 사람들이 보면 수학이 약한 것 같애. 다들 Robust (엄밀함)하질 않고, 논리에 구멍이 많아.”라고 하셨는데, 비슷한 맥락에서 필자도 “한국 사람들이 깊이가 없어. 다들 피상적인 지식에 쉽게 휩쓸리는 것 같애.”라는 표현을 자주 쓰곤 한다. (솔직히 말하면 필자도 Robust 부분에서 부족함이 많은, 학자로는 낙제점인 인간이라고 생각한다.)

요즘 시장에 나온 머신러닝 수업들이 구성된 방식이나, 그런 수업들을 소비하기 위해서 찾아가는 수강생들 대부분에게서 흔히 찾을 수 있는 특징이라고 말하면, 너도 한국인이면서 너무 한국인 비하하는거 아니냐고 말하실텐가?

이미지 인식을 하는데 요즘이야 CNN으로 이미 완성된 코드가 돌아다니니 그냥 코드 복사해서 쓰면 된다고 생각하는 분들이 많겠지만, 저걸 대학 수업에서 처음 봤던 필자는 CNN 설명하는 외부 강의들을 보면서 좀 아쉬운 점이 많다. 필자가 처음 이미지 인식 과정을 공부할 때 썼던 통계 모델은 PCA였다. 데이터에서 Feature extraction을 한다고 할 때, 이미지를 255 x 255 x 255 (흑/백이면 마지막은 0/1)의 숫자 조합으로 바꾸고 그 숫자들이 몇 백장의 사진에서 모두 유사하게 나타난다면 그게 아마도 얼굴 모양, 코, 눈, 입 같은 부분의 모양일 것이다. 개중에는 눈이 동양인처럼 작은 경우와 서양인처럼 크고 둥글지만 안와상융기 때문에 안으로 쑥 들어간 것처럼 보이는 경우로 구분이 될 것이고, 또 코가 펑퍼짐하거나 한쪽으로 휘었거나 등등 여러가지 개인별 특징들 때문에 기본적인 PC값들로 잡아낼 수 없는 비공유적인 특징들이 또 뽑혀나올 것이다.

이렇게 전체적인 특징, 개인별 특징을 잡아내는 작업을 PCA로 진행하고, 예를 들어 이 사람이 동양인인지, 서양인인지 구분하는 경우, 또는 남자인지, 여자인지 구분하는 경우 등등 0/1을 놓고 Classification 작업을 할 때 KNN을 쓰곤했다. 이런 작업 전반을 CNN이라는 대형 알고리즘 하나 안에 넣어놓고 모델이 어떻게 돌아가는지를 설명하기 어렵다보니 (복잡하니 설명 못하고, Black box라서 설명 못하고, 자기도 사실 코드만 카피해와서 설명 못하고 등등) 다들 이 코드를 쓰면 92%, 95% 맞출 수 있다고 하는 결과값에만 집중하는 사태가 발생하는 것이다.

매 번 하는 이야기지만, 모델이 어떻게 돌아가는지 모르면 그냥 copy & paste 하는 인간 밖에 안 된다. 가끔 구글링하다가 보는 초보자용 Neural net 블로그를 가 보면, “내 인생 최초의 Deep learning 모델이 돌아갔다~ 만세!!!” 같은 글들을 여럿 볼 수 있다. 그들 중 과연 얼마나 많은 숫자가 자기가 복사해온 Neural net 코드를 제대로 이해하고 돌렸을지는 의문이지만.

 

나가며

지난달 수업에 경영학과 출신인 분이 한 분 오셨다. 사실 그 동안 경영학과 출신인 분이 여러번 오셨다가 힘들어하시는 모습을 많이 봐서 잘 따라오실 수 있으려나 걱정이 많았다. 수업 중반을 넘기면서 혹시 따라오기 버겁지 않으시냐고 여쭤보니, 필자가 이전에 모비 아카데미를 통해서 강의했던 “데이터 사이언스를 위한 수학&통계학” 수업을 들으셨단다. 그 때 봤던 수학들이 계속 나와서 이해를 못하고 가지는 않는데, 아무래도 더 많이 준비된 사람이 오면 더 많이 얻어갈 수 있지 않을까는 생각이 든다고 하셨다. 그래서 시간있으시면 돈 안 받을테니 1월에 한 번 더 들으시라고, 이해 안 되는 부분 있으면 너무 스트레스 받지 말고 편하게 들으시라고 그랬다.

수업 막판에, 배운 이론들이 실제 사례에 적용되는 스토리들 몇 개를 들려드리고, 논문을 하나 살짝 리뷰하면서 배운 내용이 적용되는 방식을 소개해드렸는데, 왜 자기가 코드만 돌리고 0과 1을 70%, 80% 맞추는 수업을 듣고 답답했었는지를 깨달을 수 있어서, 눈이 번쩍 뜨이는 거 같아서 좋았다고 하시더라. 전체 스토리를 한번 따라오셨으니 아마 한 번 더 수업을 들으시면 더 깊이 이해하실 수 있을 것이다.

반대로, 광고 시장에서 Last click에만 집중하는 현재의 시장이 잘못되었고, 주먹구구식이 아니라 합리적인 기준으로 광고 성과를 분배해야한다고 Shapley value를 소개했던 어느 대기업 강의에 오셨던 직급 높은 (개발자로 추정되는) 분은 그런 수학 모델을 어떻게 써먹냐고 얼굴에 비웃음을 띄우시더라. 머신러닝으로, 정확하게는 Neural net으로 이미지 인식하는건 그렇게 쫓아가며 코드 베끼는데 혈안이 되신 분이, 사실은 Neural Net 코드가 아무런 관련 없어보이는 기본 통계 모델링 기술인 PCA와 KNN을 단지 대형 모델로 바꾼거라는 걸 아신다면 어떻게 될까?

글 서두에 수포자가 생기는 이유는 수학이 필요하다고 느끼지 않기 때문이라고 그랬는데, 위의 경영학과 수강생과 대기업 개발팀 고위직 분의 사례가 딱 맞게 해당되는 것 같다. 수학이 필요하다는 걸 깨닫고 나니 필자의 수업을 다시 찾아오겠다는 생각을 하시는거고, 반대로 코드에 안주하고 있으니 자기 코드가 어떤 원리로 돌아가는지 전혀 관심이 없으신 게 아닐까?

 

2편 링크: https://pabii.co/data-science-math-statistics-2/

 

X