문과 출신으로 선수 과목 없이 데이터 사이언스 석사를 취득하는데 힘든 부분들이 많았다. 그런 부분들을 채워준 것이 아래의 사이트들이었다. 한번 정리해 본다.



1. 선수 과목

데이터 사이언스라는 것이 광범위한 개념이긴 한데, 내 기준에서 짧게 요약하면 선수 과목은 다음과 같다.


A. 미적분: 사실 미적분은 기본적인 머신러닝/딥러닝을 하는데 있어 금융공학에서 중요한 수준으로 그렇게 대단히 많이 필요하지는 않다. 기본 개념만 숙지하면 되고, Gradient Descent 개념 공부할 때 미분이 곧 기울기라는 것 정도만 알면 큰 무리가 없다. 물론 깊이 들어가면 끝도 없지만..


B. 선형대수: 미적분보다 선형대수가 굉장히 중요하다. 길벗에서 히라오카 카즈유키 저로 번역서로 나온 "프로그래머를 위한 선형대수"가 굉장히 좋다고 해서 샀는데, 사실 난 다 읽어보진 않았는데 설명이 좋은 것 같다. 일본인들이 쓴 책인데, 항상 느끼는 것이지만 일본인 저자들이 굉장히 꼼꼼하고 친절하게 설명을 잘 해주는 부분들이 많다. 


C. 통계: 만약 완전한 입문자라면 세상에서 가장 쉬운 통계학 입문, 고지마 히로유키 저가 굉장히 쉽게 설명이 잘 되어 있다. 하지만 기초만을 다루기 때문에, 데이터 사이언스를 공부하고자 한다면 기본 통계수업은 하나라도 듣는 것을 추천한다. O'Reilly에서 나온 빨간 표지의 Practical Statistics for Data Scientists가 나중에 나의 가려운 부분들을 굉장히 많이 긁어주었다. 데이터 사이언스 석사를 하면서 많은 머신 러닝 알고리즘은 배웠지만 사실 통계학적인 기초가 부족해서 고민이 있었는데 이 책이 큰 도움이 되었다. 


D. 코딩: 코딩은 파이썬과 R 기본을 하면 되는데, 주로 파이썬을 하면 된다고 생각한다. 나는 파이썬 관련해서 정말 입문부분은 https://www.dataquest.io/ 에서 시작했고, 기본적인 문법에 익숙해지고 나서부터는 http://projecteuler.net 에서 하루에 1개씩 문제를 풀었다. 스터디그룹을 해서 아는 동생 두명과 매주 만나서 7문제 코딩을 비교해보는 시간을 가졌다. 그러다 http://codeforces.com/로 넘어가서 여기에 있는 문제들을 풀기 시작했다. https://www.hackerrank.com/ 도 굉장히 좋은 사이트다. 마지막 두 사이트는 그 사이트에서 문제가 주어지고, 거기서 코딩을 하면 그 코딩의 출력값을 비교해서 맞은지 틀린지 알려주기 때문에 편리하다.



2. 데이터 사이언스 과목


데이터 사이언스에서 공부할 과목들은 다음과 같다.


A. 기본적인 회귀분석 및 시계열분석: 사실 회귀분석도 크게보면 머신러닝에 속한다. 하지만 왜 따로 다루느냐하면, 그만큼 실제 업계에서 많이 사용되기 때문이다. 사람들은 데이터 사이언티스트라고 하면 딥러닝이라던가 SVM, 랜덤 포레스트 등을 많이 쓴다고 생각하는데 실제로 많은 부분에서 선형 회귀분석과 로지스틱 회귀분석을 사용한다. 그 이유는 비즈니스적인 측면에서, 어떤 알고리즘의 결과를 실제적으로 해석이 가능한가가 중요할 때가 많기 때문이다. 선형 회귀를 예로 들면 각 coefficient가 의미하는 바가 굉장히 명확하다. 반면 neural network의 coefficient들은 직관적인 해석이 힘든 경우가 많다. 


B. 머신러닝: 머신러닝 알고리즘 중에 현업에 가게 되면 본인이 많이 사용하는 것들은 몇 개로 한정된다. 나같은 경우 요즘은 LightGBM만 주구장창 쓰긴 한다. 그래도 기본적으로 많은 알고리즘을 알고, 각 알고리즘의 장단점과 한계를 공부해 놓는 것이 중요하다. 


C. 딥러닝: 현업에서 생각보다 딥러닝은 많이 쓰지 않는다. 알파고같은 재미난 걸 하면 모를까, 그 이유는 여러 가지가 있는데, 1) 위의 A에서도 썼듯이 interpretability가 굉장히 떨어져서 해석이 어렵고, 2) 딥러닝을 하려면 많은 데이터가 필요한데 현실적으로 그 정도의 데이터를 모으려면 돈이 많이 들거나 아예 불가능한 경우가 많고, 3) 그 정도의 많은 데이터를 모아서 알고리즘을 돌리려면 리소스도 많이 들기 때문이다. 그래도 워낙 핫하니 공부는 해야한다.


D. 데이터 시각화: 난 금융계에서 시각화가 무슨 소용인가 해서 수업을 대충 들었는데, 후회되는 바가 많다. 데이터 사이언티스트로 포지션에 따라 다르지만 그래도 시각화 및 UI 디자인에 관여해야할 때가 있는데, 그럴 때 시각화 수업이 많이 도움이 되었을 것 같다. 


E. 데이터베이스: 왠만한 회사에는 데이터 엔지니어가 따로 있어서 그 사람이 데이터 베이스를 담당하기는 하지만, SQL 정도는 익혀두는 것이 필요하다. 


F. 프로젝트: 무엇보다 데이터 사이언스는 현실에 적용해봐야하는 것 같다. 그 전엔 알고리즘 배워봐야 현실감이 없다. 숙제만큼 예쁘게 결과가 나오지 않는 게 대부분이다. 그런 면에서 역시 Kaggle.com 만한 사이트는 없다. 기업들이 다양한 데이터셋과 그에 관련한 문제를 상금과 함께 올리면 그것을 유저들이 푸는 방식인데, Kernel이라는 잘 짠 코드를 공개적으로 올리면 해당 사이트에서 점수가 오른다. 그 때문에 코딩도 잘하고 머신러닝 적용도 잘하는 사람들이 어떤 식으로 접근했고 코딩했는지를 상세히 뜯어보는 것에서도 많은 도움이 된다.



3. 데이터 사이언스 공부 사이트


A. Udacity

일단 인터페이스가 편하게 되어있고, 프로페셔널하게 디자인되어 있으며, 코딩 리뷰가 좋다. Nanodegree라는 과정이 제공되는데, 그 과정 안에서 여러 프로젝트를 하며, 각 프로젝트별로 현업에서 일하는 사람이 직접 세세하게 코딩 리뷰 및 피드백을 준다. 단점은 다른 사이트에 비해 비싸다. 어떤 Nanodegree는 3천불 정도까지 한다. 그런데 무료로 제공되는 수업들도 꽤 많다. 


B. Coursera

기본적인 딥러닝 공부는 단연코 Coursera의 Andrew Ng의 수업이 최고다. 그 외에도 Coursera에 다양한 수백가지의 과목 및 certificate 과정들이 있는데, Udacity에 비해 가격이 싸다. 한달에 49달러 정도로 보면 된다. 다만 수업별로 퀄리티가 상이할 수 있다.


C. edX.org

여기는 Coursera와 인터페이스나 수업의 질면에서 비슷하다고 보면 된다. 각 대학에서 제공하는 수업들이 있는데, 여기에서 Udacity의 Nanodegree와 비슷한 과정으로는 Micromasters가 있다. 각 대학별로 제공하는 전공이 다른데, 과목당 300달러로 4과목을 하면 딴다. 장점은, 이것을 하고 해당 대학의 석사에 들어가면 학점 인정이 된다는 점이다. 예를 들어 콜럼비아의 AI Micromasters를 하고 나서 CS 석사를 들어가면, 총 7.5학점이 인정된다. Micromasters의 가격은 1200불인 반면, 콜럼비아의 7.5학점은 15000불이다. 


D. Udemy

여기는 개인들이 올리는 수업들인데, 가격은 일단 가장 싸다. 대부분의 수업들이 11달러 선이다. 그만큼 품질은 못할까 싶지만, 의외로 들여다보면 인기과목들은 품질도 좋고 알차다. 



4. 데이터 사이언스 온라인 석사


A. 오프라인 석사: 미국 취직을 원한다면 오프라인 석사를 갈 수 밖에 없는데, 내가 갈 때만 해도 스탠포드, NYU, 콜럼비아 이렇게 세 군데밖에 없었는데 그 이후 최근 2년간 우후죽순처럼 많이 생겨나서, 일일이 알지는 못한다. 


B. 조지아텍 CS 온라인 석사: OMSCS라고 불리는 프로그램인데, 내가 현재 두번째 석사로 하고 있다. 여러모로 정말 좋다. 먼저, 1) 수업의 질이 좋다. 사실 오프라인 석사를 할 때, 훌륭한 교수에게 수업을 들으면 얼마나 좋을까 싶지만 대다수의 훌륭한 교수님들은 리서치에 관심이 있지 가르치는 건 대충한다. 그리고 똑똑한 사람이 항상 잘 가르치는 건 아니다. 어떨 때는 수업이 고문이다. 칠판에 그냥 주저리주저리하는 케이스도 많다. 그 반면, 조지아텍 프로그램은 교수님들이 단 한번 녹화를 하면 몇 년은 그걸로 우려먹을 수 있으니, 한번 녹화할 때 정말 신경써서 녹화했다. 게다가 인터페이스 품질이 제일 좋은 Udacity와 협업했기 때문에 인터페이스도 좋다. 사람마다 호불호가 있겠지만, 나는 직접 교수 앞에 앉아서 대충 칠판에 쓰는 걸 보느니, 온라인으로 한번 공들인 걸 보는게 훨씬 좋다. 2) 가격이 싸다. 미국 석사인데 무려 졸업까지 6000달러밖에 하지 않는다. 오프라인 석사나 다른 온라인 석사들이 60000달러하는 걸 감안하면 정말 10% 가격이다. 만약 굳이 미국 오프라인 석사가 필요없던지, 이미 미국에서 일한다면 무조건 조지아텍 강추이다. 온라인 석사라고 해서 졸업장이 다른가, 하면 그것도 아니다. 오프라인 석사와 완전 동일한 MS in Computer Science 석사 학위이고, 조지아텍은 미국에서 CS로 8위 정도 한다.


C. Coursera 석사: 최근 Coursera에서 대학들과 협업하여 석사를 내놓기 시작했다. 미시간대, 일리노이대 등이 있다. 가격은 조지아텍보다는 비싼 15000~20000불선으로 알고 있고, 아직 초창기라 여러 문제들이 있는 것 같은데, 이런 실험적 프로그램의 경우 3년은 지나야 괜찮아 지는 것 같다. 


D. edX Micromasters: 위에서 언급했듯이 edX에서 Micromasters를 하고 해당 대학 석사를 가는 것도 돈을 절약하는데 탁월한 선택인 것 같다. 단, 가고 싶은 분야/대학의 Micromasters가 있어야 하기 때문에 선택의 폭이 좁다.


E. Stanford 온라인 석사: 스탠포드에서도 온라인 석사를 제공하는데, 이는 조지아텍이나 Coursera 석사와는 달리, 정말 오프라인 석사와 동일한데 그냥 비디오로 수업에 참여하는 것이다. 그래서 교수가 해당 학기에 실시간으로 가르치는 걸 볼 수 있다는 게 장점이라면 장점이긴 한데, 내가 지난 여름학기로 한 과목을 들어본 바로는 그만큼 단점도 많다. 수업 질은 내가 수업 선택을 잘못한 부분도 있겠지만 최악이었다. 경험상 오프라인 석사의 장점은 다 빼놨으면서 위의 온라인 석사들의 장점은 없는 것 같다. 게다가 학비도 오프라인 석사와 동일해서, 졸업 시까지 거의 8만불 가까이 보면 된다. 


F. Columbia 온라인 석사: 스탠포드와 마찬가지다. 학비도 7만불 가까이 들고, 수업 질도 별로다.


G. 버클리 온라인 석사: 버클리에도 데이터 사이언스 온라인 석사가 있는데, 너무 쉽다는 평이 많다. 그리고 이것도 6만불 가까이 든다. 사실 E, F, G는 오프라인 석사의 장점은 없으면서, 학비가 싸지 않으니 정말 돈낭비인 것 같다. 



5. 독학하기 좋은 책


머신러닝/딥러닝 관련해서 책을 굉장히 많이 샀다. O'Reilly에서 나온 책들은 대부분 샀고, MIT에서 나온 시리즈물도 샀고, 교과서로도 많이 샀다. 그런데 솔직히 그냥 실용적으로 가려면 Hands-on Machine Learning with Scikit-learn and Tensorflow, O'Reilly 이 책 단 한 권이면 충분하다. MIT 출판사에서 나온 건 지나치게 이론적이어서 쓸데없는 부분까지 깊게 들어가고, O'Reilly의 어떤 책들은 또 너무 얕다. 저 책이 지나치게 깊게 들어가지 않으면서도 필요한 부분은 다 설명해주기 때문에 최고인 것 같다. 

댓글 0

목록
번호 제목 글쓴이 날짜 조회 수
공지 [공지]데이터 과학 게시판의 운영에 관하여 최한철 2016.04.23 89
» [일반]데이터 사이언스 공부 사이트 정리 최한철 2018.09.23 35
21 [계량경제학]Nonparametric Smoothing file 최한철 2018.07.13 23
20 [계산통계학]Convex Functions 최한철 2017.02.14 214
19 [머신러닝]Support Vector Machine 최한철 2017.02.13 198
18 [계산통계학]Automatic Differentiation 최한철 2017.01.23 126
17 [시계열분석-8]시계열 모델과 예측 file 최한철 2016.12.04 192
16 [시계열분석-7]자기상관과 AR모델 file 최한철 2016.12.04 920
15 [시계열분석-6]추세의 모델링 file 최한철 2016.12.04 129
14 [회귀분석-5]회귀분석 결과의 해석 file 최한철 2016.12.03 123
13 [회귀분석-4]변수 선택 및 모델의 진단 file 최한철 2016.12.03 688
12 [회귀분석-3]다중 회귀 분석 II file 최한철 2016.10.12 75
11 [회귀분석-2]다중 회귀 분석 file 최한철 2016.10.09 560
10 [알고리즘-7]그래프의 최단 거리 최한철 2016.10.09 86
9 [알고리즘-6]DFS의 응용 file 최한철 2016.09.29 391
8 [회귀분석-1]기본 회귀 분석 file 최한철 2016.09.25 306
7 [알고리즘-5]BFS의 응용 file 최한철 2016.09.19 384
6 [알고리즘-4]그래프 file 최한철 2016.09.18 869
5 [알고리즘-3]Master Theorem file 최한철 2016.09.15 303
4 [알고리즘-2]알고리즘 디자인 file 최한철 2016.09.10 338
3 [알고리즘-1]알고리즘의 정의 최한철 2016.09.08 222