데이터 사이언스 공부를 위한 교과서 추천

0
1856

요즘 데이터 사이언스를 독학으로 하고 있는데, 혹은 수업에서 들은 것보다 더 깊은 내용으로 도전해보고 싶은데 좋은 교재를 추천해줄 수 없냐는 요청을 많이 받는다. 불행히도 그런 질문을 하시는 분들 대부분이 수학 & 통계학을 필자 스타일로 공부하신 적이 없는 분들이다. 당장 데이터 사이언스 책을 추천하기 전에 수학과 통계학을 추천해야할 판국인 셈이다. 그 중에는 데이터 사이언스 공부를 하는 이유가 최소한 어떤 스토리가 돌아가고 있는지는 알고 싶은 분도 있을 것이고, 또 컴퓨터 과학 (컴퓨터 공학, 전자 공학), 산업 공학, 경제학 등등의 유사학문을 하신 분들이 수리통계학을 다 까먹었다가 직장 생활 중에 복구시키고 싶은 경우도 있을 것 같아, 아래에 짧게나마 괜찮아 보이는 교과서들을 추천한다.

참고로 많은 교과서들이 대학원 수업 교재 수준으로 어려워서 읽기를 포기하고 싶어지거나, 반대로 지나치게 코드 Copy & Paste 위주여서 추천할 교재 구하기가 쉽지 않다. 최근 읽은 책 중 Kalman Filter 설명하는 책에서 저자가 비슷한 고민을 했던 후기를 봤다.

There are classic textbooks in the field, such as Grewal and Andrew’s excellent Kalman Filtering. But sitting down and trying to read many of these books is a dismal experience if you do not have the required background. Typically the first few chapters fly through several years of undergraduate math, blithely referring you to textbooks on topics such as Itō calculus, and present an entire semester’s worth of statistics in a few brief paragraphs. They are good texts for an upper undergraduate course, and an invaluable reference to researchers and professionals, but the going is truly difficult for the more casual reader. Symbology is introduced without explanation, different texts use different terms and variables for the same concept, and the books are almost devoid of examples or worked problems. I often found myself able to parse the words and comprehend the mathematics of a definition, but had no idea as to what real world phenomena they describe. “But what does that mean?” was my repeated thought.

 

1. 선형대수

가장 좋은 학습법은 이과 1학년 애들이 듣는 선형대수학 수업 교실에 앉아서, 같은 교재로 증명도 따라가고, 숙제로 제출하고, 시험도 치면서 온 몸에 선형대수학을 내재화시키는 것이다. 솔직한 심정으로는 그렇게 한 학기를 보냈다고해서, 그 수업에서 A+를 받았다고해서 선형대수학 마스터라는 칭호를 달아주고 싶은 생각도 없을만큼 부족하다.

하지만, Top class의 Data Scientist가 목표가 아니라면 굳이 그렇게까지 깊에 선형대수학을 알아야할 것 같지는 않고, 또 좋은 수학 교과서는 대부분 영어라서 힘들테니 번역이 잘 된 직장인 버젼 책 하나를 추천한다.

프로그래머를 위한 선형대수

링크를 따라가보면 온라인 버젼을 확인할 수 있다. 이 책을 기획하셨던 출판사 담당자 분과 한번 이야기를 나눈 적이 있었는데, 책의 수준에 자신감이 넘치기 때문에 온라인으로 공개해도 결국은 책을 살 것이라고 생각한다고 하셨다. 저 책이 잘 팔리는 것과 필자의 주머니 사정에는 아무런 관계가 없지만, 그 담당자 분의 말씀에 99.99% + 0.01% 공감할 수 있을만큼 좋은 책이다.

책 이름에 “프로그래머”를 넣어놓은 이유는 아마 책을 좀 잘 팔기 위해서인 것 같고, 정작 책 내용 중에 프로그래머를 위한 배려는 생각보다 많지 않다. 굳이 따지면 “‘수학을 잘 모르지만 알아야하는 사람들을 위한‘ 선형대수”인 책인데, N차원으로 확장되는 일이 허다한 선형대수의 개념을 2, 3차원의 그래프를 이용해서 굉장히 쉽게 설명을 해 놨다. 실제로 머신러닝을 현장에서 활용할 때, 물론 대학원 수준의 고급 수학 지식을 갖고 있으면 좋겠지만, 최소한 위의 책에서 등장하는 개념을 쉽게쉽게 소화할 수 있어야 Professional하게 모델링을 할 수 있을 것이라고 생각한다.

 

2. 회귀분석

선형대수학을 어느 정도 알고 있다면, 0차원은 점, 1차원은 선, 2차원은 평면, 3차원은 공간 같은 개념을 쉽게 받아들이게 될 것이다. 그런 측면에서 학부 기초 통계학은 1개의 평균, 1개의 분산을 찾는 0차원의 지식이고, 회귀분석은 데이터를 설명해내는 직선을 찾는 1차원의 지식이라고 보면 된다. (참고로, 학부 수준 회귀분석과 같은 논리를 확장해서 평면, 공간을 찾아내는 작업도 대학원 회귀분석 때 배운다.)

따라서 회귀분석을 이해하려면 기본적인 통계학과 선형대수를 이해해야한다. 필자는 경제학과에서 회귀분석을 공부하다보니, 계량경제학이라는 이름의 수업만 들었다. 딱히 통계학 전공자 분들이 어떤 회귀분석 책을 보시고, 공학 전공자 분들이 유사한 내용을 어떤 책으로 배우시는지 잘 모르기 때문에 잘 모르는 책들을 함부로 추천할 수는 없고, 경제학 side에서 회귀분석을 공부하겠다는 분께 가장 괜찮은 교재는 (전) 고려대학교 경제학과의 김창진 교수님 강의 노트다. (모교 교수님들 죄송합니다 ;;;;)

대학원 유학 중 고대 출신인 친구들이 갖고 있어서 봤던 노트 필기인데, 공부 좀 했다고 까불며 모교의 석, 박 대학원 계량경제학 수업 기출문제들을 웃으며 풀 수 있게 된 시점에도 여전히 존경심이 우러나는 노트였었던 걸로 기억한다. 수식과 해석, 직관과 응용이 매우 높은 수준으로 정리되어 있던데, 그 노트에 있는 회귀분석을 다 이해한다면 어지간한 머신러닝에 쓰이는 모든 수학 & 통계학이 하나도 어렵게 느껴지지 않을 것이라는데 매우 강한 확신을 갖고 있다. (실제로 계량경제학 잘하는 경제학과 출신들이 필자의 수업을 “편안하게” 듣는다 ㅋㅋ)

어디서 구하냐고? 고대 출신이 아니라서 잘 모르겠는데, 친구들 말에 따르면 고대 안암 캠퍼스 정경대 쪽에 있는 후문 복사집들에서 구할 수 있단다. 최근 수강생 한 분이 거기서 복사본을 구하셨다고 들었다.

그런데, 학부 고학년 수준의 통계학 기반 지식이 전혀 없이 독학하시는 분들이 그 노트를 보고 뚝딱 이해하기는 좀 어려울 것 같다. 요즘 뒤져보니 Youtube 동영상 중에 계량경제학 수업들이 괜찮은게 몇 개 있던데, 그 수업들 좀 들으면서 보조 교재 정도로 쓰시는건 어떨까?

(출처: 9gag.com)
– 자매품: “머신러닝에 수학 & 통계학이 필요한가요?”,
“개발 경력 X년인데, 데이터 사이언티스트 될 수 있나요?”

 

3. 머신러닝

우선 대단히 미안한 말이지만, 국내에 나와있는 거의 대부분의 ‘머신러닝 쉽게 따라하기’ 같은 종류의 책들은 불쏘시게 종이 이상의 가치가 없다. 너무 대담한 표현인가? 필자도 자주 유사한 기획을 가진 출판사들에게서 연락을 받기 때문에, 어떤 생각을 갖고 저런 책들을 기획하고 있는지, 그리고 정작 그런 기획에 팔려서 책을 쓰는 사람들이 어떤 사람들인지 상당히 많은 정보가 있다. 결국 팔려야된다는 경제논리를 갖고 출판되는 책이, “수학”이라는 장벽을 달고 나오면 아무래도 출판사들의 호응을 받기가 쉽지 않은게 냉정한 현실이다. 그런데 정작 머신러닝을 수박 겉핡기가 아니라 제대로 공부하겠다고 위의 수학 & 수리통계학 지식을 쌓는 공부를 했는데, 이걸 좀 활용해서 머신러닝 이해도를 깊게하면 좋지 않을까?

아래의 2개 책을 추천한다.

ISLR, 따라하며 배우는 데이터 사이언스

사실 이미 추천했던 책인데, 입문자에게 다른 더 좋은 책을 아직 딱히 만나본 적이 없다. 혹시나 이미 두 권 다 봤는데, 아직 수준이 낮은 것 같고, 더 높은 수준을 원한다고? 꼭 저 위의 두 권이 아니더라도, 서평 중에 “수학이 너무 많이 나와서 어려웠다”는 류의 평이 들어가 있는 머신러닝 교과서라면 대부분 괜찮은 책일 것이다. 반대로 “코드가 환상적으로 잘 돌아간다”와 같은 평이 달려있으면 무조건 멀리해라. 당신을 개발자로 만들어주지 Data Scientist로 만들어줄 책은 아니니까.

데이터 사이언스 수업 커리큘럼을 짜면서, 계속 강의를 하면서 항상 부족한 지식을 더 채워넣어야 수강생 분들께 많은 내용을 전달해드릴 수 있다는 생각으로 나름대로 시간을 내서 공부를 계속하고 있다. 그런데, 내용의 깊이가 더해질수록 수학적인 훈련이 없으면 이해하기 어려워 보이는 자료들이 참 많다. (수학 공부 좀 많이할껄ㅠㅠ) 수업에는 이해한 내용을 바탕으로 최대한 수식을 개념과 직관과 그림으로 바꿔서 설명하고 있지만, 누군가의 필터를 거치지 않고 직접 이해하고 싶은 욕구가 있으신 분들은 더더욱 수학 지식이 간절하지 않을까 싶었다. 글 첫머리에 언급한 Kalman Filtering 교재 저자의 후기에 나왔던 저 고민은 학부 고학년 수준을 넘어간 지식을 습득하고 활용하려는 사람들 모두가 느끼는 공통적인 “괴로움”이 아닐까?

 

나가며 – 실력있는 Data Scientist는?

마음에 드는 개발자 뽑기가 참 어렵다. 돈 많이 주면 실력있는 개발자 구할 수 있는거 아니냐고들 하는데, 돈 문제는 둘째고, 그 전에 실력있는 개발자에 대한 기준도 사람마다 참 다른 거 같다. 대부분의 개발자들은 “뭘 빨리 만들어낸다”, “빨리 코드를 친다”, “복잡한 걸 구현해낸다”는 쪽에서 개발자의 실력을 따지는 것 같은데, 짧은 기간 개발자를 설득, 이해, 공유하는 시간을 거치면서 느낀바는, 비지니스의 스토리를 잘 이해하고 처음 개발하는 순간부터 어떤 스펙으로 접근해야할지 큰 그림을 그릴 수 있는 개발자들이 진짜 “실력있는” 개발자인 것 같다.

같은 맥락에서 괜찮은 Data Scientist 는 코드를 잘 치거나, 수학을 잘 하는 사람이 아니라, 필요한 이론을 적재적소에 잘 활용할 수 있는 “머리가 말랑말랑”한 사람이 아닐까 싶다. 위에서 언급한 책들에 있는 내용들은 굳이 따지자면 (기초) “이론”이다. 수학(Math)과 통계학(Stat)은 과학(Science)을 하기 위한 “언어”니까. 저런 언어에 익숙해지고, 그걸 머신러닝이라는 과학을 이해하는데 쓸 수 있게 되었다고 끝나는 것이 아니다. 정말 “실전”에서 지식이 쌓이려면 어떤 데이터는 어떻게 전처리를 하고, 그래서 무슨 모델링을 해 볼 수 있겠다는 그림을 머리 속에 그릴 수 있어야 한다. 그런 “그림”이 지식의 범위가 성장하면서 점점 다르게 그려지기는 했지만, 필요한 상황에 맞게 적절한 모델을 만드는건 정말 힘든 일이더라. 공부하시는 분들 모두의 건투를 빈다.

 


Full disclosure. 위에서 추천한 그 어떤 책도 저와 개인적인 관련이 없음을 밝힙니다. 다만 언젠가 “따라하며 배우는 데이터 과학” 책을 쓰신 권재명 박사님을 뵙게되면 제 홍보로 책 좀 팔렸으면 밥 한끼 사달라고 부탁은 드리고 싶습니다 ㅋㅋ