2017-06-07

FAQ – 뒷이야기

Q. 데이터 사이언스가 뭔가요?

한쪽에서는 데이터, 좀 큰 데이터 다루고 있으면 데이터 사이언티스트라고 주장하고, 다른 한쪽에서는 머신러닝 적용하는 사람이 데이터 사이언티스트라고 그러는데, 둘 다 제 생각과는 많이 다릅니다. 크건 작건 데이터로 직관적인 내용을 검증하거나 숫자를 그래프로 만드는 분들은 예전에는 Business Intelligence Analyst라고 불렸고, 요새는 (Big) Data Analyst라고 불리더라구요. 머신러닝 “적용”하는 사람은 개발자죠. 개발자도 프론트 엔드, 백 엔드 나누고 모바일, 웹 나누고 등등 담당 업무에 따라 나누니까, 머신러닝 코드쓰는 개발자라고 하는게 맞겠죠.

데이터 사이언티스트는 유저 행동같은 패턴이 담긴 데이터, 즉 빅데이터를 활용하는 (수리통계) 모델을 만들 줄 아는 사람입니다. 쇼핑몰에 들어오는 유저들의 행동 패턴을 보고 유사한 패턴을 보이는 신규 유저에게 비슷한 상품을 보여준다고 하는 온라인 광고 모델을 예로 들어볼까요? 무슨 근거로 행동 패턴이 유사하다고 판단하나요? 상품 A,B,C부터 Z까지 총 26개가 있는 쇼핑몰에서 10개 상품을 똑같이 봤으면 비슷한건가요? 유저 별 데이터를 N차원의 벡터로 놓고 벡터간 근접성을 코사인(Cosine)으로 계산하는 모델이 2000년대 초반부터 미국에서 쓰이기 시작했습니다. 빅데이터가 없던 시절에 못하던 일이고, 머신러닝 없이는 효과적인 상품으로 못 만드니까 최근 들어서야 사람들이 관심을 갖는거겠죠. 요새는 단순히 코사인 값만 비교하지도 않습니다. 데이터가 넘쳐나는 미국 대형 온라인 쇼핑몰들에서 다양한 변수들을 고려해서 재밌는 테스트를 많이 하더라구요.

이제 데이터 사이언티스트가 데이터 분석가나 머신러닝 개발자와는 좀 다른 직군이라는 점에 공감하시나요?

 

Q. 제가 알고 있는 데이터 사이언스와는 다른데요?

실리콘 밸리에 즐비한 IT회사들 면접가면서 저도 의아했던 적이 있었습니다. Data Analyst 일을 하고 있는 학부/석사 출신 후배들의 타이틀이 Data Scientist더군요. 들어보니 회사 안에서 제가 위에 언급한 일을 하는 분들은 따로 있더라구요. 그 동네가면 이런 농담도 있습니다. “Data Scientists are Data Analysts working in Silicon Valley.” 데이터 사이언스 석사 프로그램들을 봐도 더 어려운 일을 하려면 수학, 통계학 지식을 너무 많이 가르쳐야되니까 기초적인 내용만 가르치는 쪽으로 방향을 잡았더라구요. 시장이 데이터 사이언스가 뭔지 제대로 감을 못 잡는 이유 중 하나가 아닌가 싶네요.

데이터 사이언스 학회가면 이런말이 나옵니다. “The Keyword in Data Science is not ‘Data’ but ‘Science’.” 학문하는 자세로 수학,  통계학을 제대로 쓸 줄 알아야 진짜 데이터 사이언스라는 걸 강조하기에 더할나위없이 좋은 표현이 아닐까 싶습니다.

 

Q. 저는 개발자도 아니고, R을 한번도 사용해본 적이 없는데 수업을 들어도 괜찮을까요?

우선 R은 개발용 언어가 아닙니다. 학부에서 통계학 관련 강의를 들으면 E-views, STATA, Matlab, SAS, SPSS 등등의 패키지를 이용해보신 적이 있을 겁니다. 같은 점이 있다면 모두 개발용 언어가 아니라 데이터를 다루는데 쓰이는 통계 패키지라는 점이고, 다른 점이 있다면 R이 커스터마이징에 매우 편리한 패키지라는 점인 것 같습니다. 저도 학부시절에 앞에 언급한 3개 패키지를 썼었고, 직장 생활하던 중이나 외부 프로젝트를 하던 중에 SAS, SPSS 등의 패키지를 쓴 적이 여러번 있었습니다만, R을 쓰는 것이 데이터 사이언스를 좀 더 수준 높게 이해할 수 있는 가장 적절한 방법이라고 생각해서 언어를 골랐습니다.

R에 따라 붙은 패키지들이 많아져서 쓰기가 좋아졌거든요. 개발자들이 많이 쓰는 머신러닝 오픈소스인 TensorFlow도 R에서 돌릴 수 있고, Java Script가 뒷단에서 돌아가도록 만들어서 화려한 그래프도 그릴 수 있습니다. 데이터 베이스 접근하는 SQL도 R에서 다 돌릴 수 있을 정도입니다. 거기다 그래픽 패키지들이 많아서 데이터 시각화만 놓고보면 경쟁자가 없습니다. 데이터 시각화로 돈 벌고 있는 비싼 프로그램들도 R로 그래프 그린 다음에 상품 개발팀에 넘긴다더군요. 무슨 말인지 모르시겠다구요? 하하하 걱정마세요. 저도 학교 떠나서 직장 처음 들어가서 그런 시절이 있었습니다. 몇 번 줏어들으면 다 알게되는 내용입니다. 다른 내용은 몰라도 R만큼은 절대로 어렵지 않습니다. 모든 걸 다 떠나서 코드 다 쳐서 주는데 겁 먹을 이유가 없죠. 코딩은 언어지 수학이 아니거든요.

 

Q. 수업을 따라가기 버거운 경우에는 어떻게 해야할까요?

수업 동영상 강의를 제공해서 여러번 반복해서 들으실 수 있도록 해 놨습니다. 백번 읽으면 무슨 뜻인지 알게된다는 옛 이야기까지 굳이 언급하지 않더라도, 여러번 반복 학습하는게 어려운 내용을 이해하는데 제일 좋은 학습법이지 않을까요?

물론 그 전에 본인이 준비가 안 되었다면 포기하시는 걸 강추합니다. “모두가 다 할 수 있다”, “세상에 불가능이란 없다”는 말은 적어도 수학의 세계에서는 통용되지 않는다는걸 어린시절부터 경험적으로 알고 있습니다. 세상에 재밌는 일 많은데, 왜 못하는 수학 붙잡고 굳이 데이터 사이언티스트 될려고 자신을 갉아먹어야할까요?

 

Q. 이 수업을 만든 취지는 무엇인가요?

어느 벤쳐 투자자를 만났더니 데이터 사이언스는 컴퓨터 공학과 출신 아니면 못하는거 아니냐고 하더군요. 근데, 위에 썼듯이 코딩 좀 배웠다고 “데이터”로 “사이언스”를 할 수 있는건 아니거든요. 영어 원어민이면 영문학도보다 세익스피어나 찰스 디킨스에 대해서 더 잘 알까요? 데이터 사이언스는 코드로 구현되는 수리통계학 모델이에요. 수리통계학 모르는데 코드만 칠 줄 알면 구현이 되나요? 영문학을 읽어본 적도 없는데, 영어만 원어민이라고 영문학 교수할 수 있을까요?

머신러닝이라고 불리는 내용은 사실 수학과 통계학을 바탕으로 모델을 만들고 그 모델을 검증하는 여러 프로세스 중 하나에 불과합니다. 이걸 몇몇 IT 학원들이 개발자가 코드만 쉽게 copy & paste하면 되는 것처럼 홍보를 하고, 그 탓인지 많은 개발자들이 “내가 할 수 있는 영역”이라고 착각하는 경우를 많이 봤습니다. 죄송합니다만, 데이터 사이언스는 개발자들이 할 수 있는 부분이 아니라, 수리통계학 모델링을 배운 Quantitative 전공 출신이 할 수 있는 부분입니다. 시장의 이런 오해를 해결하고자 수업을 만들게 되었습니다. 시장이 제대로 돌아갈 수 있을 때까지, 최소한 저와 비슷한 깊이로 강의할 수 있는 선생님이 학계에라도 나타날 때까지는 강의를 지속할 생각합니다.

 

Q. 이론 위주로 어려운 수업이 되지는 않을까요?

그랬다가는 학생들 다 떨어져나가고, 저는 빈 강의실에서 강의해야 됩니다ㅋㅋ 걱정마세요. 제가 박사 수업 때 들었던 수학은 안 쓸 겁니다. 굳이 수학을 써야된다면 학부 저학년 수준에서 딱 멈추겠습니다. 

항상 제 부족한 점을 지적해서 채찍질하는 친구가 그러더군요. 박사가서 도대체 뭘 겪고 왔는지는 모르겠는데, “어려운 걸 상당히 쉽게 말할 수 있는 능력”이 생겼답니다ㅋ (아.. 민망 ;;;;)

수학/통계학 이론을 제 방식으로 이해해서 소화하는 프로세스가 “이론적”이기보다 “직관적”이어서 그런 평가를 들었던 것 같습니다. 수업에도 수식은 들어갈지 몰라도, 말로 설명하는 부분은 “직관적”이게 만들려고 많이 노력 중입니다.

 

Q. 선수 과목이 있나요?

누구나 다 할 수 있다, 문과생도 할 수 있다, 어렵지 않다는 이야기하는 분들 많고, 저도 유사한 표현을 씁니다만, 내 돈내고 수업 듣는데 현실적으로 이야기해야되지 않겠습니까?

수강생들의 피드백을 모아보면, 최소한 고교수학의 수I 정도의 지식이 필요하고 (함수, 지수/로그, 통계, 미분, 적분 등), 강의에서 많은 내용을 얻어가려면 학부 수준의 선형대수학, 회귀분석을 이해하고 오시는 것이 좋을 것 같습니다. 수업 오시는 분들이 모든 내용을 생생하게 다 기억하고 있다고 생각하질 않기 때문에 수업 시간에 간단하게 리뷰는 합니다만, 그래도 미리 알고 있는 상태에서 리뷰를 듣는 것과, 전혀 모르는 상태에서 시작하는 것은 엄연히 다르니까, 미리 준비를 하시고 오시는 것을 권유드립니다.

데이터 사이언스에 쓰는 거의 대부분의 통계학/머신러닝 기술들이 회귀분석에서 출발하는데, 회귀분석이 무슨 말인지 조차도 모르시는 분이라면 관련 강좌를 듣고 오시는 쪽을 추천드리겠습니다. 제가 경제학부 출신인데, 학부 때 들은 경제 수학, 경제 통계, 계량경제학 정도의 지식은 있어야 제 수업의 120%를 얻어갈 수 있지 않을까 생각합니다.

몇 마디 덧붙이면, 이 수업은 개발자를 위한 머신러닝 강의도 아니고, 통계학 석박사들이 모델 검증하는 학회도 아닙니다. 더도말고 덜도말고 일반인을 대상으로 데이터 사이언스에 관련된 지식을 개괄하는 강의입니다. 데이터 사이언스 석사 프로그램을 가시면 배울 수 있을만한 내용 중 일하는데 가장 필요하다 싶은 내용만 알짜로 빼놓았다고 보시면 되겠습니다. 머신러닝을 많이 다루기는 하지만, 프로그래밍을 직접 하는 부분은 없고, 머신러닝을 R이라는 언어로 구현해보면서 머신러닝을 쉽게 이해할 수 있도록 도와주는 수업이 될 것 입니다.

 

Q. 타 기관의 유사한 수업 대비 장점은 무엇일까요?

첫째, 데이터 사이언스에 필요한 수학/통계학에 대한 직관적인 설명을 제공합니다. 외부에 돌아다니는 많은 수업들이 수식을 아예 설명을 안 하고 코드만 칩니다. 수학이 무서운 수포자들에게 강의를 팔겠다는 욕심일 수도 있고, 가르치는 사람조차도 수학을 이해 못하니 쉽게 보이는 코드만 치는 걸수도 있겠죠. 머신러닝의 여러가지 테크닉들이 발전해 온 역사를 보면 특정 스텝에서 함수 하나를 살짝 바꿔서 모델의 설명력을 크게 끌어올리는 “혁신”이 일어난 경우가 많은데, 왜 그 스텝에서 함수를 바꿀 수 있는지 알려면, 모델 아래에 깔려있는 수학/통계학을 이해할 수 있어야합니다. 그래야 모델 도입해놓고 문제 생기면 Trouble-shooting도 할 수 있게 되겠죠. 수식만 나열되면 무슨 말인지 모르겠고, 수학적인 이해없이 넘어가면 피상적인 수준으로만 모델을 알게되는데, 그 중간의 타협점을 찾으려고 항상 노력 중입니다.

둘째, 매 시간 400줄이 넘는 코드를 직접 쳐서 드립니다. “숙제”를 내고 학생들의 소화 수준을 볼려고 고민한 적이 있었는데, 당장 복습할 시간도 빠듯하신 분들께 무리한 요구를 하는 것 같아서 아예 제가 모든 문제에 대한 해설을 담은 코드를 드리고, 이론적으로 습득한 모델을 직관적으로 이해하는 수준에서 그치는 것이 아니라, 아예 데이터 셋에 적용시키면서 코드로 구현해냅니다. 이 데이터 셋도 데이터 전처리가 깔끔하게 끝난 Kaggle 데이터 셋만 쓰고 몇 %의 설명력을 만들어냈습니다~ 와 같은 1차원적인 이해에서 끝나는 것이 아니라, 직접 데이터 클리닝도 해보고, Feature engineering도 해보고, 중요한 변수들만 골라내는 Feature selection도 해 봅니다. 또 R의 다양한 패키지들이 활용하는 데이터 포맷으로 데이터 포맷을 바꿔보면서 데이터 사이언스에서 데이터를 어떻게 활용하는지 다양한 경험을 해 볼 수 있습니다. 수강생들에게서 가장 피드백이 좋은 부분은, 코드에 설명을 다 달아놔서 바로바로 이해할 수 있는 부분이라고 하더라구요.

셋째, 아마도 제일 중요한 포인트일 것 같은데, 어디서 들을 수 있는 내용이 아닌 내용, 제가 공부하면서 고민했던 부분, 실제로 데이터로 모델링하면서 느꼈던 부분들을 최대한 반영한 수업을 구성해 놨습니다. 덕분에 KAIST에서 로봇공학 석사하고 논문이 몇 개나 있으신 분이 “한국에서는 찾기 힘든 수업이다”는 평을 주셨고, 관련 전공으로 현직 교수로 재직 중이신 분이 제 수업의 몇몇 주제는 3수강을 하셨습니다. 온라인에 많이 돌아다니는 교양 수준의 수업을 듣고 의기양양했던 공대생들이 버~엉~찐 표정으로 “잘못 배웠다는 걸 이제서야 알았다, 다시 배워야겠다”는 말을 하고 가기도 했고, 대학원 준비하던 공대생이 “모델이 어떻게 구성되는건지 이해하고 나니 대학원이 필요한 이유를 알게되었다”며 커리어 결정에 도움이 되었다는 이야기를 하고 가기도 했네요.

간단히 요약하면,

  • 대학원에서 배울만한 내용을 학부 2-3학년 수학으로 재구성하고,
  • 코드로 그 수학이 어떻게 구성되는지까지 볼 수 있는데,
  • 정작 내용 자체의 깊이는 관련 전공자들이 혼자서 다시 보고 끝낼 수준이 아니라
  • 다시 찾아와서 들어야겠다는 생각이 드는 수업

이라고 하겠습니다. (너무 자랑이 심하군요 ㅎㅎㅎ)

 

Q. 잘 가르치시나요?

부끄럽지만 박사 재학 시절, 저희 과 석사 60명으로부터 압도적인 지지를 받아 교내 “Best TA of the Year” 상을 받은 적이 있습니다. 학교 백년 역사상 처음으로 그 상 수상식에 학장님이 “Landslide”라는 표현을 쓰셨다고 들었습니다. (자랑이 더 심해지고 있습니다 ㅎㅎㅎ)

연구실에 중국인 박사생들이 중국인 석사생들한테 중국어로 가르쳐줬는데도 정작 영어로 강의했던 저한테 “몰표”가 나왔다고, 저희 프로그램 매니저가 비법 전수를 해달라고 농담까지 하더군요 ;;;; 매주 금요일 오후에 3시간씩 강의한다고 한 주일 내내 열심히 준비했던 걸 학생들이 알아줬기 때문이겠죠. 언급할 때마다 낯 뜨거워지는 상이라서 여기까지만 하겠습니다.

제 수업의 수학을 이해할 수 있는 정도의 실력을 갖춘 학생들의 공통적인 평가는

  • “수식만 풀어쓰고 아무도 안 가르쳐주는 Why를 가르쳐 준다”,
  • “수학을 이렇게 직관적으로 이해할 수 있는 수업이 흔치 않을 것 같다”,
  • “머신러닝 이론들이 어떤 고민들을 거치며 발전되었고, 그래서 어떻게 고민하면서 활용할 수 있을지에 대한 직관을 얻을 수 있다”

인데, 박사 시절부터 언제나 어려운 수학을 직관으로 바꿔서 강의하려는 노력을 수강생분들이 잘 이해해주시는 것 같습니다.

 

Q. 스펙 좀 가르쳐 주세요.

서울대 경제학부 02학번이고, 졸업하면서 멋모르고 외국계 투자은행 IBD 팀에 들어갔었습니다. 들어갈 때는 우리 학번 중에 제일 좋은 직장 갔다는 평가를 듣는 직장이어서, 사실 그것보단 제가 고교 1학년 때부터 꿈꾸던 직장이라 정말 너무너무 좋았는데, 막상 가보니 머리 쓰는거라고는 엑셀로 덧셈, 뺄셈 밖에 없고, 맨날 밤새고, 음주가무로 접대의 연속인 일상 속에 살았습니다. 비참하더군요. 그래도 내가 똑똑한 걸로 먹고 살았는데… 그런 헛된 망상을 품고 경제학 박사하겠답시고 런던으로 떠났습니다.

수학 공부는 대충한데다, 직장에서 머리가 푹~ 썩은 상태로 공부하러 간 탓에 첨에는 참 많이 힘들었습니다. 그렇게 꾸역꾸역 공부하고, 연구 주제를 찾다가 금융위기에 은행들이 도미노처럼 무너지는 걸 보고 간 경험을 바탕으로 은행들의 포트폴리오가 유사하면 자산가격 폭락이 한 개 은행에서 여러 은행으로 퍼져나간다는 이른바 시스테믹 리스크 (Systemic risk) 모델을 연구하게 되었는데, 저를 아껴주시던 Jon Danielsson 교수님 덕분에 ECB 프로젝트에 들어가서 스페인 은행들이 얼마나 외부 충격에 취약한지 모델도 짜고 그래봤습니다. (논문엔 제 이름 안 올려주셔도 교수님이 쓰신 교과서에 제 이름을 올려주셨네요) 문제는 금융기관들이 자기네 포트폴리오를 외부에 공개하질 않아서 항상 시뮬레이션으로 연구 작업을 했었습니다. (데이터로 증명이 안 되니 경제학 저널에 논문 내기 참 힘들더군요ㅠㅠ) 그러다 교수님이 “너 제대로 연구할려면 시뮬레이션에 집중된 프로그램으로 가라”고 추천서를 써 주셔서 결국 대서양 건너에 보스턴 대학으로 박사 학교를 옮기게 됐네요.

보스턴에서 처음에는 MCMC Simulation으로 금융위기 때 은행들이 어떻게 동시에 위기에 빠지는지 모델링하는데만 집중했었는데 (나름 자신있는 논문도 있습니다. 이 논문 쓰라고 연구소에서 지원금 $47,800도 받았습니다;;), 우연히 찰스 강 건너에 MIT에서 하는 머신러닝 학회를 들어갔다가 생각이 많이 바뀌었습니다. 쓰는 수학이나 통계학은 시뮬레이션이나 머신러닝이나 비슷비슷한데, 정작 시장 수요는 머신러닝 쪽이 훨씬 더 많더군요. 좀 씁쓸했습니다. 내가 지난 몇 년간 머리 쥐어짜면서 공부한 건 시장에서 별로 관심없고, 똑같은 지식을 다르게 적용하니 못 배워서 서로 안달이라니….

결국 직장 잡을 때 뉴욕에 있는 금융기관들 말고 실리콘밸리 쪽에 있는 IT 회사들에서 찾는 Data Scientist 포지션들에 집중하게 됐습니다. 신용평가모델에 머신러닝 적용하는 어느 스타트업에 잠깐 몸 담았다가, 크리테오라는 리타게팅 광고 (머신러닝을 광고에 적용) 회사에 Senior Data Scientist로 조인하면서 귀국했고, 한국의 데이터 인프라와 데이터 사이언스에 대한 오해를 여러번 접하다가 강의 한번 해 보자고 결심하게 됐습니다. 중간중간에 여러 헤지펀드들에서 몇 차례 유혹을 받았습니다만, 왠지 한국에서 MarTech 스타트업하면 될 것 같은 느낌에 아직도 한국을 못 떠나고 있습니다^^ 스타트업 운영 중에 업무 외 시간에 짬을 내서 데이터 사이언스 강의를 하고 있고, 사업이 더 커져서 시간을 못내기 전까지 최대한 많은 분께 제가 익힌 데이터 사이언스를 전달해드릴 계획입니다.

 

 

X