데이터 사이언스 석사 – 필요한 기초 지식

224

아래는 New York University (NYU)의 Data Science 석사 프로그램에서 지원자에게 요구사항으로 제시해놓은 글을 바탕으로 했다.

GRE, TOEFL, SOP, 추천서 등등의 상식적인 서류들은 다 제쳐놓고, Educational Prerequisites 라는 부분만 살펴보자.

 

듣고와야하는 과목 (Educational Prerequisites)

학부 전공을 보면 통계학, 컴퓨터 과학 (컴퓨터 공학 아니고), 수학, 공학, 경제학, 경영학, 생물학, 물리학, 심리학 등이다. 학점이 좋아야 한다는 말을 빼놓고 나면, 학부 전공에 관계없이 높은 수준의 수학적인 훈련 (specific and substantial knowledge of certain mathematical competencies)기본적프로그래밍 지식을 요구 (some training in programming and basic computer science)하는 걸 볼 수 있다. 한국에서 공학 (특히 컴공) 전공자들이 Data Science에 적합한 교육을 받았다고 생각하거나, 심지어는 개발자가 Data Science에 적합하다고 착각하는 것과 엄청나게 다르다는 걸 바로 눈으로 확인할 수 있다.

필자가 영미권에서 겪었던 Admission 을 떠올려볼 때, 일단 수학 훈련이 거의 안 되었을 보통의 개발자들이 저런 석사 프로그램에 지원하면 애시당초 Resume Screening 작업에서 탈락할 것이다. 공대에서 수학을 깊게 공부하는 전공들, 특히 통계학 지식을 많이 활용하는 컴퓨터 과학이나 산업공학 정도가 요구조건을 충족하고, 나머지 공학 전공들은 본인이 학부 과정을 어떻게 밟았느냐가 굉장히 중요해보인다.

구체적으로 명시한 조건들을 보면, 미분방정식, 선형대수학, 확률론 등에 대한 지식을 기본적으로 갖춘 상태에서, 약간의 프로그래밍 지식, Python과 R에 대한 깊이있는 경험을 제시해놨다. 혹자들은 오해할수도 있겠지만, 프로그래밍 지식Python/R을 이용한 “Serious Academic” 지식은 완전히 별개의 경험이다. R/Matlab/Mathematica를 이용한 “Serious Academic” 경험이 있는 필자는 (어린시절 GW-Basic, Q-Basic, Visual Basic 로 했던 걸 제외하면) 프로그래밍을 한번도 해본적이 없고, 할 줄 아는거라고는 Android Studio로 간단한 앱 만들기 밖에 없기 때문이다. (코딩이 중요한게 아니라, 수학이 중요하다는 Pabii 데이터 사이언스 수업 홍보글도 같은 맥락이다. “머신러닝이라는 것도 결국은 코딩이라고 생각하고~”라던 개발자들 우르르 떠오르네.)

위의 그림에서 가장 흥미있는 부분은 맨마지막에 있는 “Econometrics course with heavy mathematical content” 라는 문구다. 필자가 경제학부 시절 들은 계량경제학 수업이 딱 여기에 해당한다. 우리과에서 고시 안 치고 박사 유학가겠다던 친구들 사이에서 필수였던 수업이기도 하고. 이런 문구를 보면, 한국적인 관점에서 문과/이과 구분해서 공대 출신이면 더 잘할 수 있다고 착각할게 아니라, 학부 과정에서 수학을 통계학 모델링에 썼냐 안 썼냐로 데이터 사이언스 예비 전공을 했냐 안 했냐를 구분하는게 미국의 스탠다드라는게 느껴지는가? (필자가 블로그에서 줄곧 공대 출신보다 통계학 공부 열심히 한 경제학과 출신이 더 Data Science에 적합하다고 주장하는 근거이기도 하다. 물론 수학 안 듣고 졸업한 경영학과스러운 경제학과는 제외한다ㅋ)

 

계량경제학, 수리통계학, 계산통계학

경제학과에서 통계학을 배우다보면, 크게 2갈래의 방향이 나눠지는걸 보게된다. 첫번째는 “응용통계학”이라고해서, 다른 사회과학 학문에서 쓸법한 수준의 통계학 지식을 실용적으로 활용하는 부분이 강조된다. 간단한 예시는 선거 전 여론조사할 때 적정한 샘플 추정 및 여론조사의 결과 해석이라고 보면 된다. 두번째는 “수리통계학”이라고해서, 수학을 이용한 모델링을 하는 학문에서 두루두루 쓰이는 지식인데, 이게 바로 NYU DS에서 요구하는 “Econometrics (계량경제학) with heavy mathematical content”라고 생각하시면 되겠다. LSE에서 경제학 석사시절, 박사과정의 Econometrics까지 다 듣고, 그 위로 어떤 수업이 있는지 살펴보니 이해 불가능해 보이는 수학 증명들 몇 십개를 달달 외우지 않고는 기말고사를 칠 수가 없어 보이는 수업들만 있길래 좌절하고 포기했던 기억이 난다. (제대로 된 학문이면 주제에 상관없이 수학 못하면 많은 걸 포기해야한다…)

우리나라에서 공부 좀 잘한다는 학생들이 가는 대학으로 유명한 K대와 Y대에는 문과 전공 중에 통계학과가 있다. 필자가 다녔던 S대를 비롯한 많은 대학들이 통계학을 이과, 특히 수학과 옆에 배치해놓는데 비해, K대와 Y대는 경제학 전공, 심하게는 경영학 전공의 연장 선상에서 통계학에 접근하는 것 같은 학과 체계와 수업 커리큘럼을 갖고 있다보니, 가끔 이런 질문을 받는다.

“인공지능이라는거, 통계학만 잘하면 된다면서요? 그러면 K대나 Y대 (응용)통계학과 가면 되겠네요?”

꼭 틀린 말은 아닌데, 굳이 정답을 말해라면 이렇게 답하고 싶다. 데이터 사이언스는 응용통계학 Line이 아니라, 수리통계학 지식을 기반으로 한 계산통계학이라고. (여담으로 K대쪽 통계학이 좀 더 수리통계학을 강조하는걸로 알고 있지만, Y대에도 엄연히 수리통계 I, II가 학부 과정에 있다.)

도대체 뭐가 다른지 이해가 잘 안 된다고? 계산 통계학이라는거 그냥 평균, 분산 같은 주제를 빨리 계산하는 “응용”통계학 같은거 아니냐고?

 

계산통계학 (Computational Statistics)이란?

10^n 개의 가능한 Path를 이용해서 내일의 주가 수익률이 10% 이상일 확률을 시뮬레이션 하는 문제를 푼다고 생각해보자. 대략 10억개 정도의 가능한 Path를 정규분포 기반의 Markovian process로 생성한 다음, 아주 작은 확률로 대폭락이 있는 경우를 포아송 분포를 이용해 모델에 추가해서, 정규분포 + 포아송 분포 두 가지 Source에 기반한 Path들 중 주가가 10% 이상 뛴 경우의 수를 잡아내고, 그 주식을 밑바탕에 깔고 있는 파생상품의 가격을 계산하는 교과서적인 기본 문제에서 쉽게 볼 수 있는 사례다.

이 계산의 포인트는 10^n개의 데이터 포인트 묶음 (가능한 path 1개는 최소 몇 백만개의 작은 랜덤 데이터들의 결합으로 만들어진다) 때문에 발생하는 Computational cost다. 어떻게든 빨리 계산해서 결과값을 찾고 싶은데, 거기다 예상하는 기간이 1일이 아니라 1주일, 1달, 1년 등등으로 늘어나서, 혹은 고려해야하는 요소들이 추가되는 탓에 가능한 Path가 더 복잡해지면, 시뮬레이션 데이터를 더더욱 많이 생성해내야 한다.

이런 계산을 좀 빨리해보려고 10^n개의 데이터를 2^n개 형태로 재배열하고 (직관적으로 설명하면, 2^3 = 8이니까 10-8 정도의 약간의 손실이 발생하기는 한다), 10진법이 아니라 2진법으로 이 계산을 바꿔서 접근하면 계산에 필요한 시간을 상당히 줄일 수 있다. Fast Fourier Transform (FFT) 계산법이라고 한다. 물론 정확도에는 손실이 있고, 이런 상충관계에서 시간 vs. 정확도의 타협점을 찾기위해 샘플 데이터로 여러차례 계산하는 과정이 뒤따른다. (FFT말고도 비슷하게 시간을 줄여주는 계산법들로만 두꺼운 교과서 몇 권 만들 수 있다)

당연하겠지만 위의 교과서 같은 예제로 일을 하는건 아니고, 증권사에서 파생상품 가격 계산을 위해 돌아가는 모델은 수학적으로 굉장히 복잡한 형태를 갖추고 있다. FFT가 효율적인 계산법이라는걸 배웠다면 단지 계산을 좀 더 빨리 해줄 수 있을 뿐, 정작 Stochastic calculus에 기반한 수학 모델링은 또 다른 차원의 문제다.

딱 위의 내용을 금융공학 석사 2학년 학생들에게 가르쳤고, 학생들이 기말 프로젝트를 위해서 FFT를 다양하게 응용하는 걸 봤던 기억이 난다.

그 FFT는 계산통계학과의 여러가지 “계산법” 중 하나에 불과하다. 계산통계학의 궁극적인 목표는 시간 vs. 정확도의 적절한 타협점을 찾고, 시간적으로 좀 더 빠른 계산을 위한 수학적인 개선법을 찾아가는 과정이기 때문이다.

왠지 Machine Learning이랑 비슷한 이야기하는거 같지 않나?

질문1. 위에 나온 FFT를 더 배우고 싶다는 말을 들으면 어떤 생각이 드는가?

그냥 여러가지 계산법 중 하나인데, 아예 FFT라는 계산법을 수학적으로 엄청나게 깊게 파겠다는 이론적인 연구가 아니라면, 굳이 “더” 배워야할 필요는 없다. 왜? FFT는 계산통계학의 수많은 계산법 중 하나에 불과하니까. 그런 수업에서 배운 10개 남짓한 계산법 중 하나에 불과하고, 교과서 밖에는 수없이 많은 계산법들이 있으니까. 특별히 그 계산법을 깊게 판다고해서 Dramatic하게 바뀔 구석도 별로 없으니까.

질문2. 그렇다면 Deep Learning을 더 배우고 싶다는 표현은 어떻게 생각되나?

이런 계산법들은 “더” 배워야할 주제가 아니라, 그냥 여러개의 계산법을 배운 다음에 내가 쓰는 데이터사용 목적에 맞게 골라쓰는 도구에 불과하다.

(한국에서 요즘 Deep Learning이라는 주제를 소화하는 분위기가 계산 구조를 이해하고 응용하는 방식이 아니라, 딥러닝에 대한 맹목적인 광신과 데이터 입력해서 나오는 결과값의 Matching rate만 보는 상황이니 퐝당할 뿐이다. “딥러닝을 배우고 있는데요” 라는 표현을 들으면 필자 같은 사람이 얼마나 무시할지어떻게 반응할지 대충 짐작이 되시는가?)

 

NYU Data Science 프로그램의 교수진들

위의 섹션 제목에 걸린 링크를 따라 들어가면 NYU Data Science 프로그램의 교수진들을 볼 수 있다. 그리고 25명의 주요 교수진들의 전공을 보면 컴퓨터 공학(Computer Engineering) 타이틀이 달린 분이 1명이다. 1명 Yann Lecun (그것도 박사가 아니라 학부 때만 전공했더라)

나머지 교수진 전원은 Computational stat을 활용하는 연구자들이 했을법한 전공 출신들이다. (Statistics, Applied Math, Computer Science, Neural Science, Physics 같은 전공들) 필자가 Financial Math하면서 수학쪽 대형 학회인 SIAM에서 발표했던 적 (링크의 Keith Lee )이 있는데, 그 때 흔히 봤던 전공 사람들이고, 나중에 실리콘밸리에서 Data Scientist 면접보겠다고 찾아다닐 때 경쟁자(?)로 or 면접관으로 볼 수 있었던 사람들 전공이기도 하다.

 

머신러닝 vs. 계산통계학

통계학, 특히 수리통계학을 하던 사람 입장에서보면 머신러닝은 Non-linear approximation을 하는 다양한 방법들을 수학으로 해결하기보다 계산으로 해결하는 지식이다. 처음 머신러닝이라는 단어를 들었을 때가 MIT에서 머신러닝을 이용해 사람이 내일 어디에 있을지를 95%의 정확도로 예측할 수 있다고 주장하는 PT에서 였는데, PT 내내 그 때까지 필자가 연구에 썼던 계산통계학 방법론을 그대로 쓰고 있다는 느낌을 받았다.

NYU의 Educational requirements에 나오는 내용을 봐도, Machine Learning, Computational Statistics, Data Mining 같은, 경험자의 눈에 사실상 같은 지식, 다른 이름인 내용들이 나열되어 있다. 그 뒤에 따라나오는 Large-scale computing은 필자가 연구실에서 매일같이 하던 작업이고, Operations research 하던 친구들이 다루던 데이터도 어마어마한 대용량(+Pattern)이었었던 기억이 난다. 한 예로, 2개의 다른 Risk source에서 나온 결과값을 3차원 그래프로 그려서 Copula를 만들고 있던 중이었는데, 같은 연구실에서 Operations research하던 중국인 박사 과정 친구가 Alibaba의 구매 데이터로 비슷한거 그리고 있다면서 경험담을 공유했던 기억이 있다.

 

나가며 – Not 공학 But 수학

경제학을 공부하다보면, 수학 모델링을 잘하는 사람들 (미시경제학 Line)과 통계학 모델링을 잘하는 사람들 (계량경제학 Line)로 교수 사회가 구분이 되는 걸 볼 수 있다.  (거의 대부분의 Quantitative 전공들 사정이 비슷할 것이다.) 물론 둘 다 잘하면서 자기가 좋아하는 주제를 잡는 천재들이 많긴 하지만, 재능이 부족한 필자는 좀 만만(?)해 보이는 금융시장 문제 하나를 잡고 통계학 모델링으로 그 문제를 풀려다가 시뮬레이션이라는, 수(리통계)학을 쓰는 사람들이 절대로 손을 대지 말아야하는 금기를 범했다. (수학적으로 Elegant하지 않으면, 시뮬레이션 같은 “꼼수”를 쓰면 논문이 Publish되기 힘든 전공이니까…)

시뮬레이션에 손을 대면서 만났던 계산통계학 때문에 연구 주제의 방향과 연구용 지식 도구가 경제학 중심의 학계에서는 받아들여지기 어려운 방향으로 흘러갔고, 뜻하지 않게 Financial Mathematics를 공부하게 됐다. 당시엔 뭔가 잘못된 방향으로 인생이 꼬인 것 같은 생각도 들고, 항상 마음 속 깊은 곳에 찜찜함이 남아있었는데, 요즘 Machine Learning에 대한 열광을 보는 눈이 달라지게 된 점을 생각하면 한편으로는 전화위복이 아닌가 싶다.

우리나라야 아직까지 머신러닝이 계산통계학과 같은 지식이라는 사실을 인지 못해서 정부 프로젝트가 여전히 (수학아니라 계산 중심인) 공대 출신들에게 가고 있기는 하지만, 의사 결정권자들이 바보도 아니고, 근시일내에 미국에서 그런 것처럼 공학대신 수학 지식, 통계학 훈련을 탄탄하게 받은 사람들이 Data Science 분야를 이끌고 갈 수 있는 길이 열릴 것이라고 생각한다. Pabii에서 이야기하는 대로 통계학 기반으로 공부했다가 지금처럼 공대 출신만 Data Scientist로 뽑고 있으면 취직 못하는거 아니에요? 라는 질문 하시는 분들이 가끔 있던데, 한국 시장이 느리고 멍청하다는 생각을 많이 하지만, 그래도 전 세계를 기준으로 하면 꽤나 빨리 변하는 축에 속한다. 당장 홍보없이 돌아가는 이런 블로그 1달 평균 방문자가 1년 반 사이에 0명에서 2만명으로 뛴 걸 보시라… 통계학 중심으로한 Data Science 저변이 빠르게 넓어지고 있다는 증거가 아닐까?

처음에 강의 시작했을 때만해도 필자더러 “저 사람 뭐하는 사람이냐?”는 황당하다는 반응과 “인공지능 쓰는 코드만 주시면 됩니다”고 하던 사람들을 엄청나게 만났는데, 1년이 좀 넘은 이 시점에 벌써 수학이 중요하다는 사실을 인지했다는 다양한 종류의 Feedback을 여러 경로로 받고 있다. 이런식의 지식 선도 산업에서 미국이 틀리고 한국이 맞았던 적이 단 한 차례도 없었기 때문에(ㅠㅠ), 한국이 언제나 Follower였기 때문에(ㅠㅠㅠㅠ), 근시일내로 인력에 대한 요구 조건이 빠르게 바뀔 것이라고 생각한다. (이미 많이 바뀌기도 했고.)

아직도 Data Science 공부를 하고 싶은 분, 석사 과정에 진학하고 싶으신 분들은 위의 Data Science 석사 입학 조건에서 보신것처럼 수(리통계)학 공부에 열정을 쏟으실 것을 추천한다.

 

데이터 사이언스 석사 시리즈