본문 바로가기
:: Notes/Books

[Book] 김도형의 데이터 사이언스 스쿨 ( 파이썬을 활용한 데이터사이언스 )

by 메모밍 2019. 12. 14.

 

:: INTRO

  요즘 개발 트렌드에 빠지지 않고 등장 하는 언어 중 하나를 꼽자면 단연 '파이썬(python)' 이다. 간단한 EDA 분석에서 부터 머신러닝, 딥러닝, 그리고 응용프로그램 개발까지 다재 다능하다. 분명 파이썬은 여러 가지 일을 훌륭하게 할 수 있는데 막상 나에게 통계적분석이나 수학적인 계산을 파이썬으로 구현 하라고 한다면 나는 Google을 켜고 여러가지 라이브러리 사용법을 익히는 것부터 시작 할 것이다. 할 수 있을 것 같다고 말하는것과 할 수 있다고 말하는 것은 천지차이다. 내가 알고 있는 여러 데이터분석 방법들과 대수학적인 부분을 하나하나 파이썬으로 구현 해보며 잊고 있는 지식들도 다시 한번 짚어 주는 책이 <김도형의 데이터사이언스 스쿨> 이 아닐까 싶다. 

 

 


:: Contents

  실제로 책의 구성을 보면 이렇게 넓은 분야를 깊은 곳까지 파이썬으로 다루어 설명했다는 것에 먼저 놀라고 두번째로 책의 두께에 놀란다.

 

0장. 파이썬 설치와 사용법

1장. 수학 기호

2장. 넘파이(Numpy)로 공부하는 선형대수

3장. 고급 선형대수

4장. 심파이(Sympy)로 공부하는 미적분

5장. 사이파이(SciPy)로 공부하는 최적화

6장. 피지엠파이(pgmpy)로 공부하는 확률론

7장. 확률변수와 상관관계

8장. 사이파이로 공부하는 확률분포

9장. 추정과 검정

10장. 엔트로피 

 

  이 책은 처음부터 하나 하나 뜯어 보기보다는 내가 배우고 싶은 부분부터 먼저 들여다 보는것이 효율적이다. '데이터 사이언스'를 공부하고자 하는 학생이라면 '데이터 분석을 위한 수학'을 반드시 한번은 제대로 짚고 가야한다고 생각한다. "예전에 한적 있지" 가 아니라 지금 물어봐도 손으로 설명할 수 있고, 코드로 풀어 낼 수 있어야 한다. 만약 나와 같은 생각을 하고 있다면 이 책이 정말 좋은 길잡이가 되어 줄 것이다.

 

  책을 펴는 순간 받은 느낌은 해당 내용을 단순히 구현하는 책이 전혀 아니라는 것이었다. 챕터에 해당하는 개념의 내용설명이 매우 알차게 들어있어 오히려 개념서 같은 느낌을 받는다. 학부 때 이후 손에서 놓았던 선형대수 파트를 한번 펴보면 스칼라와 벡터의 개념정의 부터 시작해서 특징벡터(feature vector), 행렬(matrix), 텐서(tensor), 사상(mapping)등 데이터 분석에 필요한 선형대수의 기초 내용을 충분히 설명함과 동시에 코드로 변환 하는 과정이 들어있어 내가 방금 이해한 내용을 바로 파이썬으로 구현 해 볼 수 있었다. 하나하나 따라 코딩하면서 읽다보면 중간에 나오는 연습문제를 마주치게 되는데 대부분의 문제가 '손으로 계산하고 그 결과를 파이썬의 계산결과와 비교' 하게끔 되어있어 오랜만에 종이를 꺼내 문제를 풀어 보는 경험을 하기도 했다.

 

  간단한 예제코드로 두개의 이미지에 선형 연산을 더해 합성된 이미지를 출력해 보았다. 실제 이미지를 처리할 때 알게 모르게 많이쓰는 연산들 이긴 하지만 숫자나 코드상으로만 보는것보다 직접 이미지로 결과물을 출력해보면 훨씬 개념이 가깝게 느껴진다.

 

선형 연산을 이용한 합성 이미지 예제

 

  고등 교과과정에서 그렇게나 풀었던 미분과 적분은 배울때는 '이걸 배워서 실생활에서 내가 어디에 쓰겠어' 했지만 실제로 느끼는 바로는 '대체 미분과 적분이 안쓰이는 곳이 어디일까' 에 가깝다. 요즘 작업하고있는 모든 데이터분석과정과 머신러닝, 딥러닝 과정은 미분과 적분을 빼고는 말을 할 수가 없으며 우리가 어떤 문제를 해결하기위한 해결책을 생각할때 '변화량'을 빼놓고 이야기 하는 것이 불가능 하다는 것을 생각해보면 미분과 적분은 예나 지금이나 앞으로나 계속해서 만나야할 녀석임에 틀림이 없다. 

 

  당신에게 지금 y=2x+2라는 1차 함수가 주어졌고, x=1에서의 기울기를 알려달라고 하면 어떻게 구현을 할 것인가? 손으로는 너무나 쉽게 풀겠지만 이걸 파이썬으로 구현하려고 하면 잠시 멈칫 하기 마련이다. 수치미분(numerical differentiation)과 미분(differentiation) 그리고 도함수(dericative) 개념부터 미분 가능과 불가능의 개념을 더해서 시작하는 미분챕터는 내가 배운 개념들을 실제 코드로 이렇게 구현하는 구나 하는 재미가 쏠쏠한 파트다. 책에서 소개하고 있는 패키지중 하나인 심파이(SymPy) 는 심볼릭 연산 (Symbolic Operation)을 가능하게 해주는 패키지인데 이는 사람이 직접 손으로 계산하는 미분, 적분과 동일한 형태의 연산으로 x^2의 미분 연산을 수행하면 그 결과가 2x란 형태로 나타나는 것이다. 실제로 구현을 해보면 아래와 같다.

 

 

Sympy를 이용해 구현한 미분결과

 

  눈이 번쩍 뜨였다. 그동안 힘들게 표현하던 미분과 적분 식을 저렇게 이쁘게 정리해서 보여주는 패키지라니. 게다가 소인수분해도 가능하며 정적분 부정적분 모두 함수 하나로 가능하다. 예제를 하나씩 따라치며 이렇게 생긴 녀석도 한번 미분/적분 해보라고 파이썬에게 시키다보면 이 챕터도 그 재미로 훌쩍 간다. 

 

  이 밖에도 머신러닝/딥러닝에서 계속해서 쓰이는 여러 수학 개념과 구현 방법 그리고 꼭 한번은 접해보면 좋을듯 한 통계 파트도 함께 수록 되어있다. 확률 변수와 여러가지 확률분포 그리고 추정과 검정. 나아가 엔트로피까지 실려있는데 파이썬으로 구현해보는 부분들을 다 빼더라도 개념서로써 한번 읽어볼 만한 가치가 충분하다. 그만큼 정리와 설명이 자세하게 되어있다

 

:: Outro

  기능 구현에 초점을 맞추다 보면 기초 수학을 놓치는 경우가 많다. 이미 함수안에 녹아 들어있는 개념들을 굳이 공부하지 않아도 단순히 가져다 쓰면 된다는 생각이 먼저 들기 때문이다. 하지만 조금 더 넓게 그리고 멀리 공부하기 위해서는 언젠가 한번은 마주하게 되는것이 기초 수학이라는 생각이 든다. 딥러닝 네트워크가 제 아무리 저명한 논문들에 의해 발표된걸 가져다 쓰면 된다고 해도 결국 그 내부의 뼈대를 이루는 기초 알고리즘을 이해 해야지만 그 이후에 내 데이터셋에 맞는 최적화가 가능하다. 데이터 사이언티스트를 꿈꾼다면 단언컨대 적어도 이책에 있는 개념들은 모두 알고 있어야 한다. 그리고 이론만 아는 사람이 아닌 실제로 그 이론을 가지고 결과물을 만들어 낼 수 있는 사람을 원하는 요즘 <김도형의 데이터사이언스 스쿨> 은 그 시작 개론서로써 손색이 없다. 내가 파이썬을 이용한 데이터 관련 공부를 시작하고 싶은데 어디서부터 시작해야할지 모르겠다는 분들에게 일단 한 챕터 만이라도 좋으니 이 책을 접해보라고 권하고 싶다.

댓글0