데이터 사이언스 책 추천 (feat. 내 수업 평가)

4
pabii research

데이터 사이언스 강의를 열고 한 달이 지났다. 시작전에 야심차게 만들어놨던 강의노트는 대부분 잉여 폴더에 들어가있고, 매주 새로 만드는 슬라이드가 엄청나게 늘었다. 내 사업하느라 바쁜데, 강의 노트 만드느라 이렇게 시간 쓰는게 도대체 무슨 욕심인가 싶기도 하지만, 필자만큼이나 공격적인 지인들의 애정 가득한 조언을 무조건 무시할 수는 없었다. 가까운 솔직한 지인들에 따르면,

  • 이렇게 수학이 많이 들어가면 아무도 이해 못한다,
  • 더 직관적으로 강의해야한다,
  • 데이터 클리닝하는거 다 보여주면 많은 사람들이 포기할지도 모른다,
  • 차라리 이미 알려진 간단한 데이터 셋을 활용하는게 어떠냐,
  • 어차피 배운 머신러닝 모델을 적용하는 예제가 중요하지 데이터 클리닝은 회사가서 직접 머리싸매고 해라고 하자

등등 누가 들으면 내 수업 찾아오고 싶은 맘이 뚝 떨어지는 이야기를 해 준다. 나 자신의 멘탈이 꽤나 강하다고 생각했는데, 그래도 어쩌랴, 내가 운이 좋아서 좀 더 배웠다고 꼬장꼬장하게 가르치면 그건 딸깍발이랑 뭐가 다를까.

수업 절반을 끝내고 학생들과 Social event를 하는데, 정말 온갖 종류의 제안들을 들었다.

  • R을 잘 모르겠다, R을 처음부터 체계적으로 가르쳐달라,
  • (고교 수준의 수학만 썼는데도) 수학이 너무 어렵다,
  • R 코드로 짠 예제는 집에가서 보면 되는데, 수업 시간에 좀 더 깊이 있는 내용을 다뤄달라,
  • 이론적인 백그라운드는 관심도 없고 이해도 안 되니까, 코드로 예제만 열심히 보여달라,
  • 코드 한 줄로 Random Forest, Boosting 같은 거 이용하는 쉽고 빨리 적용할 수 있는 내용은 안 가르치냐, 수업이 답답하다
  • 데이터 클리닝 실제로 하는거 좀 봤으면 좋겠다, 이렇게 이론과 R 코드 예제만 봐서는 한계가 있다

지인들의 평가를 듣고 꽤나 현실과 타협했고, 도저히 버릴 수 없는 내용들만 담았는데도 불구하고 이런 제안들을 들으니 갑갑하더라. 수업 진행하는 입장에서 어느 쪽에 장단을 맞춰야할지 감이 안 온다. 사실 수업 들어가면 학생 수준은 공학 박사 학위 소지자들부터 인문계(상경계 X) 학부 출신까지 정말 다양하게 분포되어 있어서 타겟을 어떻게 잡을지도 쉽지 않다. (그래서 최대한 직관적인 이론 강의와 가장 기본적인 예제들을 모델별로 적용하는 예시를 보여주는 쪽으로 타협했는데, 모든 사람을 만족시키고 있진 못하다ㅠㅠ)

(상기 사진은 필자의 Social event와 아무런 관련이 없습니다)

필자는 딸깍발이가 아니니까 (최소한 스스로 그렇게 생각한다), 제안사항을 많이 받아들이기는 하겠지만, 수업 타이틀을 데이터 사이언스라고 달고 있는 이상, 분명히 지켜야할 선은 있다. 저 아래에서 더 언급하겠지만, 데이터 사이언스에 쉽고 빨리 적용할 수 있는 내용은 없다. (하버드 대학 강의 후기 링크, 30분만에 다 배운다는 강의에 대한 팩트 폭격) 그렇게 한 줄 코드로 Random Forest 써서 결과값이 좀 더 좋게 나왔다고 많이 배웠다고 착각하는 사람들은 사실 안 와줬으면 좋겠다. 데이터 사이언스는 한 줄 코드가 아니니까. 너무 팩트 폭격인가? 딸깍발이스럽나? 그런 사기에 가까운 수업들이 판을 치고 있는 와중에 아래에 소개할 책을 만나서 너무 반갑더라.

 

 

책 이야기 – 베타리더 후기

데이터 사이언스 강의 시작하고 여기저기 소문이 났는지 책이 나오거나 공모전이 있거나, 강연이 있으면 홍보성 이메일을 자주 받는데, 오늘은 건너건너 알고 있는 통계학 박사 분이 쓰신 “따라하며 배우는 데이터 과학”이라는 책을 소개받았다. 목차를 보니 어려운 내용을 다 포기하고 최대한 쉽게 쓸려고 노력한게 보이길래, 이 분도 “대중성”을 위해 참 많은 내용을 희생하셨구나 싶어 저 위에 장황하게 쓴 내 생각들이 뇌리를 스쳐갔다.

그러다 “베타리더 후기”라는 항목을 보면서 내 수업에 오는 학생들의 얼굴이 오버랩이 되어 꼭 이 글을 쓰고 싶어지더라.

“(중략) 하지만 개발자의 입장에서 여러 통계 기법은 조금 난이도가 있었습니다… (중략)… 다만, 통계 기법에 대한 수학 공식은 수포자로서 이해하기 어려웠습니다. 이런 부분들이 좀 더 쉽게 설명되었으면 하는 아쉬움이 남습니다.”

“(중략)…그런데 책을 보다 보면 수학 공부를 하고 나서 다시 한번 봐야겠다는 생각이 듭니다.”

“(중략)…그 동안 기술적으로 함수를 구현하는데 치중했던 자신을 돌아보게 되었고, 각 분석 결과들을 통계적으로 정확히 해석할 수 있는 계기가 되었습니다.”

책 저자분을 직접 알지는 못하지만, 그동안 외부에 알려진 저자분의 글을 보면 굉장히 쉽게 쓰고, 직관적으로 자신의 깨달음을 전달하려고 노력하시는 분이라는 느낌을 받을 수 있다. 그런데 그런 분이 쓴 글도 더더군다나 어려운 내용 다 빼고 최대한 쉬운 내용만 넣었는데도, 여전히 “난이도가 있다”, “수포자로서 이해하기 어려웠다”, “수학 공부를 다시해야겠다”는 평가를 받는 걸보고, 한편으로는 안도감도 좀 들더라.

필자가 “수학”이 아니라 단순히 “수식”만 강의 노트에 집어넣어도 수학이 많다고 불평하는 학생들을 이해할 수가 없었는데, 저 위의 베타리더 후기는 필자의 고민을 시원하게 날려주었다. 고교시절부터 수학이라는 학문이 스트레스였고, 그래서 수식을 보니 겁나고, 그래서 그걸 수학이라고 퉁쳐서 이야기하는 것일뿐이다. 사실 그 수식들 까놓고보면 별 거 없는데ㅋ 고교시절에 좋은 수학 선생님을 만나서 직관적으로 수학을 이해했으면 참 좋았을텐데….

 

 

자연과학에서는 통계학, 사회과학에서는 계량, 공학에서는 머신러닝

외부에 알려진 머신러닝은 단순하게 코드 몇 줄만 치면 되는 코딩 지식이고, 수학은 필요없다고 생각하는 경우를 많이 본다. 경제학 공부를 하던 필자가 처음 Panel data를 공부하고 데이터와 모델링에 대한 시야가 완전히 바뀐 시절에 “데이터를 보는데 수학이 필요하냐, 그래프 그리는 센스가 필요하지”라던 분을 보며 안타까웠던 생각을 요즘 머신러닝에 대한 오해를 접하면서 그대로 하게된다. 그 분은 수학을 모르기 때문에 데이터를 본다는게 그래프를 그리는거라고 생각하고 계신거고, 머신러닝을 단편적으로 이해한 분들도 아마도 코드 몇 줄로 구현되는 모습만 보고는 머신러닝에는 수학이 필요없다고 오해하고 계신 것 같다.

(Source: Essential economics for data scientists)

경제학에서 계량경제학으로 통계학 공부를 계속하다가 시뮬레이션을 만나고 공학도들이 통계학을 어떻게 활용하는지 접한, 뭔가 좀 괴랄한 백그라운드를 가진 필자 입장에서 머신러닝을 바라보는 관점은 그냥 공대생들의 통계학이다. 계량 경제학에서 어떤 증명을 할 때, 0이하의 값을 제외시키고 (사회과학에서 0 이하는 없는 경우가 많으니까) 증명을 시도하면, 수학과 통계학 출신 친구들이 비웃는다. 모든 영역에서 다 증명되지 않는 걸 “증명”이라는 표현으로 “정리”라고 부르는게 말이 되냐고.

처음에 시뮬레이션을 만났을 때 필자의 생각도 비슷했다. 딱 떨어지는 수식 (Analytic solution)이 나오는게 아니라, 단순하게 몇 백만개의 예상치로 확률만 보여주는게 무슨 “연구”냐, 이건 “기술”에 불과하다고 생각했다. 그런데 더 깊이 공부해보니 공대에서 쓰는 통계학은 또 그 나름대로의 학문적 깊이가 쌓여있더라. 보스턴에서 박사 학위 중에, 스탠포드 공대에서 Financial Engineering을 공부하고 온 교수님이랑 같이 일을 한 적이 있었는데, 처음에는 내가 만든 경제학 기반의 모델을 이해 못하는 그 교수님이랑 같이 일을 하게 된 게 매우 못마땅했지만, 연구가 진행될수록 내가 알고 있는 수학을 그들의 방식으로 활용하는 모습을 보면서 놀란적이 한 두번이 아니었다.

머신러닝도 그런 통계학을 활용하는 (공대생용) 학문이다. 따라서 제대로 이해하고 활용할려면 통계학을 잘 알아야하고, 여기서 말하는 통계학이 단순하게 평균, 분산이 아님은 대학시절 기초 통계학 수업을 들어봤으면 이해할 수 있을 거라고 본다. 통계학은 깊이있게 들어가면 들어갈수록 “수리”통계학이 된다. 어느 시점에 모든 것을 다 깨닫고 직관 하나만으로 풀어쓸 수 있는 레벨이 되기 전까지는.

그걸 모르고 데이터 사이언스에 대해서 가볍게 생각하고 달려드는 사람들(까지도 포함하는 책을 써달라는 출판사의 압박) 때문에 위 책의 저자도 고민이 참 많았을 것이다.

 

 

다시 책 이야기 – Chapter 1, 2

Chapter 3 부터는 간단한 예제들을 들어가면서 (필자의 눈에) 아주아주 기초적인 통계학 이야기와 그 지식을 응용하는 머신러닝 모델 몇 개를 보여준다. (저자분 GitHub 링크) 사실 대부분의 머신러닝 모델들이 R에 좋은 패키지가 많아서 Parameter 몇 개만 수정하면 되는데, 들어간 코드도 딱 그정도 내용이다. 필자가 매 수업에 추리고 추려서 약 400줄 짜리 코드를 학생들에게 제공하는데, 대략 그 절반 정도의 내용을 한 챕터마다 넣었으니까 정말정말 기초적인 내용만 넣으셨다고 보면 된다. (책 쓰신 분의 고뇌와 타협이 온 몸으로 느껴지는 부분이다.)

(Source: 따라하며 배우는 데이터 과학 )

책의 핵심인 Chapter 3 이후 부분을 더 이상 공개하는건 “스포”가 될 테니, 여기쯤에서 멈추고, 책 앞머리 Chapter 1,2에 데이터 사이언스란 어떤 문제를 해결하려는 학문이고 (솔찍말 굉장히 통계학스러운 문제와 대답인데, 필자가 썼다면 좀 더 “빅데이터”에 초점을 맞춘 문제들을 제시하고 싶었다), 필요한 플랫폼 (컴퓨터에 R 설치하는거)을 어떻게 구성하는지 설명해주신 부분에 눈이 가더라. 누군가는 아예 읽지도 않고 넘겨버릴 그 내용을 왜 그렇게 피상적인 내용만 훑으며 넣었을까?

필자 수업에 관심이 있는 학생 하나가 8회 강의에 “앙상블” 모델 이야기가 없다고, “배깅, 부스팅, 랜덤 포레스트”같은 내용을 배우고 싶은데 이 수업을 들으면 되냐고 묻더라. 그 순간, 처음에는 위의 책 Chapter 1,2에 해당하는 1회차 수업을 빼버리고 앞으로 당겨서 마지막 8회차 강의를 “앙상블”만 집중해서 가르칠까는 생각이 확 들었다. 물론 필자의 1회차 수업은 단순히 데이터 사이언스 개관하고 R인스톨에서 끝나는게 아니라, 빅데이터를 시각화해서 어떤 데이터가 진짜 빅데이터고 왜 머신러닝이 여기에 적용되는지, 그래서 기존의 통계학이랑 다른 스킬셋과 접근법이 필요한 부분을 나름대로는 충실하게 설명하긴 한다. 그래도 코드로 머신러닝을 돌려보는게 더 급한 사람 눈에는 그런 내용이 귀에 잘 안 와 닿을테니까…

예전에 필자의 수업을 더 쉽고 직관적으로 진행하라고 압박넣던 지인도 비슷한 이야기를 했었는데, 그 때 필자는 “어차피 앙상블은 기존의 머신러닝 모델들에 가중치만 다르게 주고 묶는 방법이라서 기존의 방법들을 이해 못하고 앙상블만 해서는 아무 소용이 없다”고 그랬다. 배깅도 복잡한 설명을 배제하면 모델 만드는데 들어가는 훈련용 데이터 셋을 여러개로 쪼개서 모델의 오차를 줄이는 방법이고, 부스팅이랑 랜덤 포레스트도 Decision tree 모델을 제대로 이해못하면 “구현하는데만 치중하는” 개발자에서 벗어날 수가 없다는 사실을 너무 많이 봐왔기 때문에, 고민이 많아지더라. 도대체 뭘 빼고 저걸 더 추가할까?

다음달 수업에는 앞 쪽 강의 내용을 좀 꽉꽉 몰아넣고 (빼버리는게 아니라), 마지막 강의에 “앙상블”을 살짝 넣어볼까 한다. 위 책에도 Chapter 1,2가 들어갔는데, 강의라고 그걸 안 짚고 넘어갈수는 없다. 더군다나 필자가 보여주는 빅데이터 시각화는 다른데서 찾기도 힘든 부분인데… 어차피 수업시간에 100% 다 이해 못해도 나중에 다시 보면 이해할 수 있겠지라는 무모한 욕심(?)으로 ㅋㅋ

 

 

알파고 때문에 데이터 사이언스가 망했다(?)

예전에 머신러닝은 그냥 컴공과 대학원생들이 로봇 행동 패턴 잡아주는 모델링에, 이미지 인식 모델링에만 쓰는, 말 그대로 “공대생용 통계학”이었다. 그러다 알파고 때문에 모든 사람이 “머신러닝”이라는 단어를 듣게되고, 그걸 쓰는 직업이라는 “데이터 사이언스”에 대해서 너도나도 잘못된 이해만 잔뜩 쌓인채 시장이 움직이고 있다.

누가 필자더러 데이터 사이언티스트면 인공지능이랑 이미지 인식 같은거 할 수 있냐고 그러는데, 뭐 못하지는 않겠지만 필자의 담당 영역은 아니라고 딱 잘라서 이야기한다. 그건 컴공과에서 제대로 연구하신 분을 찾으라고. 필자는 IT업계의 “빅”데이터로 예측 모델링을 하는데만 장점이 있는 “반쪽짜리” 데이터 사이언티스트다. 이렇게 말하고 보니 어느 시점에선가 “데이터 사이언티스트”라는 용어도 분화가 좀 되어야될 것 같다. 저 위에 언급한 책은 필자와 비슷한 사고방식으로 업무를 처리하는 사람이 쓴 책이고, 그런 직업을 찾는 사람들을 타겟으로 한 책이다.

그리고 저런 책이 많이 나와서 데이터 사이언스에 대한 시중의 오해가 좀 해결이 되었으면 좋겠다. 위의 컴공과 대학원생분들은 지극히 필자의 주관적인 정의에 따르면 데이터 사이언티스트가 아니라, 머신러너 (Machine learner)다. 위에 언급한 책이 데이터 사이언스에 대한 정확한 이미지를 대중에게 제공하고, 나아가서는 제대로 머신러닝을 활용하고 싶다면 (수리)통계학을 이해해야한다는 사실을 wanna-be data scientist들이 좀 깨달았으면 좋겠다.

근데, 더 웃긴건 거기에 필요한 (거의 대부분의) 수학이 우리나라 고교 수학에 들어있다는 사실이다 – 안 믿긴다면 필자의 수업에 와서 확인해봐도 좋다.

 

나가며

학부시절 들었던 수업중에 게임이론이라는, 좀 수학적인 추론이 많이 들어가는 수업이 있다. 경제학계 밖에 있는 사람들은 학교에서 “게임”을 배우고 거기에 무슨 “이론”이 있냐고 궁금해하실수도 있겠으나, 정작 그 수업은 인간의 행동을 유도하는 인센티브를 수학적으로 정교하게 모델링하고, 거기에 더해서 천재적인 직관이 있어야 살아남을 수 있는 대단히 이론적인 수업이다. John Nash의 노벨상도 여기서 나왔고, 경제학계에서, 특히 미시경제학으로 연구하는 모든 학자에게 게임이론은 일종의 기초도구 같은 학문이 되어 버렸다. 박사 유학 중 교수님들이 학생 선발하시는 과정을 보면, 수학 수업에서 A+을 휩쓰는 학생보다 게임이론에서 A+을 받은 학생을 더 좋아하시더라.

왜 뚱딴지 같이 이 수업 이야기를 장황하게 하는지 궁금할텐데, 학부시절에 게임이론을 가르치셨던 김XX 교수님이 매 수업마다 직관적인 도전이 필요한 시점에 딱 진행을 멈추고 여기서 어떻게 해야되는지 맞추는 학생들을 모아서 학기말에 밥을 사주셨던 적이 있다. 그 뒷풀이 자리에 가니 교수님이 어느 시점에선가 그러시더라. 다른 경제학 수업은 노력하면 따라올 수 있는데, 이건 노력해도 못 따라오는 수업이라서 타겟을 모든 학생에게 맞추는게 아니라 우리처럼 답을 할 수 있는 학생들을 대상으로 할 수 밖에 없다고. (자랑해서 죄송합니다;;;; )

학부 3학년 때 들었던 그 말이, 그 시절에는 참 듣기가 거북했다. 그리고 내가 수업하면 기필코 모든 학생이 다 따라올 수 있도록 하겠다고 생각했던적이 있다.

그리고 요즘 매일 수업할 때마다 그 시절의 내가 너무 오만했구나는 생각을 한다. 수업 중에 한번도 아니고 여러번.

필자가 유학 떠나던 시절에 사업을 시작해서 이젠 사업 짬밥이 좀 쌓인 친구에게 위의 고민을 털어놨다. 주변에서 조언을 듣고 이래저래 수정을 하고 있기는 한데, 데이터 사이언스에 대해서 너무 많은 오해가 있는 탓에 수업에 다양한 백그라운드의 사람이 와 있고, 어느 쪽에 가중치를 줘야될지 모르겠다고 그랬다. 사업가 친구의 조언은 두 가지다. 아예 엄청 쉽고 머리 안 써도 되는 걸 데이터 사이언스라고 포장해서 가르치거나, 아니면 괜히 상품 내용을 이래저래 바꾸지 말고 필자가 맞다고 생각하는 영역을 쭉 밀고 나가란다.

처음에 상품 만들어서 팔아보니 이것저것 요구사항이 엄청나게 많았는데, 그걸 다 맞춰줘도 매출액은 그대로였다면서, 갖고 있는 걸 깊게 파는데 방점을 찍는 편이 더 낫지 않겠냐고 조언을 해 줬다. 대화의 끝머리에, 저 위에 언급했던 학부시절 게임이론 수업 이야길 하더라. 어차피 그 게임이론 수업은 쉽게 설명해줘도 수업의 70%는 못 알아들었을 내용이라고. 아예 이름만 게임이론으로 하고 엄청나게 쉬운 내용을 가르칠게 아니면, 차라리 우리 교수님처럼 제대로 이해하고 끝까지 따라오는 학생들한테 더 많이 제공해줄 수 있도록 필자에게 내공을 더 쌓으란다.

조언은 조언일 뿐. 아직도 모든 학생이 다 따라오는 강의를 해 보겠다는 욕심은 버리지 못하고 있다ㅋ 그리고 알고보면 그렇게 어려운 내용도 아니다. 무슨 연구자 만들려는 것도 아니고…

그나저나 (내 책은 아니지만) 위에 소개한 책 좀 많이 팔렸으면 좋겠다. 그래야 고교수학 수포자는 데이터 사이언스 못한다는 냉정한 현실이 좀 알려지지. 대신 고교수학만 (잘) 할 수 있으면 누구나 도전해볼 수 있다는 희망적인 사실도 함께 알려졌으면 좋겠다.

Similar Posts