본문 바로가기
:: Notes/Books

[Book] 파이썬을 활용한 머신러닝 쿡북 (Machine Learning with Python Cookbook )

by 메모밍 2019. 11. 16.

 

 

:: INTRO 

  내가 다니고 있는 대학원에서는 CS 수업중에 '머신러닝' 수업이 있다. 한개도 아니고 주제만 바꾸어서 여러 수업이 개설되어 있으며 심지어 다루는 데이터셋만 다른 내용이 똑같은 수업도 여럿있다. 그럼 '딥러닝' 관련된 수업도 있나? 하는 생각을 해보면 단호하게 말하건대 '딥러닝'을 주요 학습방향으로 가지고 있는 정규 수업은 개설 되어 있지않다. 물론 딥러닝이 머신러닝의 큰 범주안에 들어가긴 하지만 그 내부 알고리즘으로 머신러닝과 딥러닝을 나눈다면 두개는 접근방식이 분명하게 다른 방법임에도 개설이 되지 않은 것이다.

 

  하루는 해당 수업을 듣고 있는 박사과정 학생과 이야기를 나눌 기회가 있어서 넌지시 물어보았다. 왜 딥러닝 관련 수업은 없나? 학생들이 관심이 없어서 개설되지 않는걸까? 결론적으로 둘다 아니었다. 돌아온 대답은 교수님 가라사대 ' 한 학기동안 다룰만큼 딥러닝이 심오한 학문이 아니어서 ' 란다. 단기간에 현재 나와있는 딥러닝 방법론을 모두 배울 수 있고 그 다음부터는 배우는게 아닌 연구쪽으로 생각을 바꾸어야 하기 때문에 적합 하지 않다는 것이다. 사실 이 이야기를 들었을 때 처음에는 응? 그런가? 하는 생각이 들었다가 이내 '그렇긴하지' 쪽으로 기울었다. 데이터 셋이 주어 졌을때 내가 딥러닝 신경망을 직접 구축 하기보다 만들어져 있는 신경망을 가져와서 사용하는 것이 빠르게 더 정확한 결과를 낼 수 있는 방법이고, 딥러닝 신경망 자체에 집중하기보다 실제 문제를 풀때는 데이터 자체에 집중하는 시간이 더 길기때문이다.

 

  오히려 딥러닝보다 전통 머신러닝 방법이 더 정확한 결과를 내기도하고 알아야할 내용들도 훨씬 많다고 생각한다. 그렇다면 이제 소개할 <파이썬을 활용한 머신러닝 쿡북>은 어떤 방식으로 머신러닝 이야기를 풀어 내고 있을까.

 

 


:: CONTENTS

  기술 서적을 고를 때는 내가 이 책에서 타겟으로 잡고 있는 대상 독자안에 내가 포함 되는가를 봐야 한다. 내가 아는 내용만을 말하고 있다면 굳이 시간과 돈을 들여 책을 볼 이유가 없고, 너무 어려우면 책을 공부하기위해 필요한 배경 지식을 공부하는데 더 시간이 들기때문에 적절한 기술 서적을 고르는데 충분한 시간을 들여야한다. 

 

  <파이선을 활용한 머신러닝 쿡북> 은 첫 장에서 이렇게 말하고 있다. " 이 책은 머신러닝 입문서가 아닙니다. 머신러닝 기본 개념에 익숙하지 않거나 머신러닝을 배운적이 없다면 이 책을 사지 마세요. " 한 두 문장만 읽어보면 내가 이책을 집어 들고 카운터로 가야하는지 말아야 하는지 대강 감이온다. 이 책은 기존에 머신러닝을 한번쯤 접해본 독자를 대상으로 기술 되어있다. 실제 머신러닝 프로젝트를 할때  마주치게 되는 여러 문제들을 해결할 수 있도록 도와주고 훈련시켜주는 책이다.

 

" 일상적인 문제를 해결할 용도로 머신러닝 기술자의 책상에 책의 모서리가 잔뜩 접힌 채 놓여 있으면 좋겠습니다. "

 

  책의 구성은 약 200개의  '과제'와 '해결' 로 처음부터 끝까지 이루어져 있다. 주제에 따라 목차가 나뉘어져 있을 뿐 기본적인 틀은 똑같이 구성되어있다. 해당 챕터에 해당하는 과제를 보고 생각을 하고 문제를 풀어본 후 저자가 제시하는 방법을 보며 하나씩 배워가게 된다. 중간 중간 넌지시 던지는 깨알 같은 제안은 내 코딩을 조금 더 팬시하게 만들어주는 깨알 같은 팁이 된다.

 

Chapter 01. 벡터, 행렬, 배열

Chapter 02. 데이터 적재

Chapter 03. 데이터 랭글링

Chapter 04. 수치형 데이터 다루기

Chapter 05. 범주형 데이터 다루기

Chapter 06. 텍스트 다루기

Chapter 07. 날짜와 시간 다루기

Chapter 08. 이미지 다루기

Chapter 09. 특성 추출을 사용한 차원 축소

Chapter 10. 특성 선택을 사용한 차원 축소 
Chapter 11. 모델 평가

Chapter 12. 모델 선택

Chapter 13. 선형 회귀

Chapter 14. 트리와 랜덤 포레스트

Chapter 15. k-최근접 이웃

Chapter 16. 로지스틱 회귀

Chapter 17. 서포트 벡터 머신

Chapter 18. 나이브 베이즈

Chapter 19. 군집

Chapter 20. 신경망

Chapter 21. 훈련된 모델 저장과 복원

 

  이렇게 총 21개 챕터로 구성 되어 있는데 책을 보면 볼 수록 만약 지인이 머신러닝에 대해 궁금하다고, 한 번 접해보고자 한다고 하면 기본서 한 권과 함께 이 책을 꼭 함께 쥐어주고 싶다고 생각했다. 각 챕터에 구성되어 있는 코드들은 실제 내가 문제를 풀때 바로 적용이 가능한 코드들로 이루어져 있고제시하는 문제들이 나도 몇번씩 마주했었던 문제들이라 중간중간 ' 다들 이런 부분에서 막히는구나 ' 싶은 생각에 웃으며 책장을 넘겼다.

 

  아래는 Chapter 17장인 서포트 벡터머신 (SVM)에 대한 선형 분류 예시를 Jupyter Notebook을 이용하여 직접 코딩하고 실행 시켜본 결과이다. 책에는 이 코드에대해 아주 기본적인 설명과 함께 어떻게 하면 이 코드를 개선하고 다른 방법을 적용 시킬 수 있는지를 설명한다.

 

 

 

 

 

  만약 해당 코드 각줄이 어떤 역할을 하고 있는지 전혀 모른다면 다른 교재를 이용해 SVM의 기초를 배우고 다시 이 책으로 돌아와야한다. 이 책의 각 챕터를 보았을때 각각의 챕터에 대해 떠오르는 것들이 있다면 해당 챕터로 들어가서 펼쳐보고 저자가 추천하는 여러방법론들을 흡수 하기만 하면 된다. 보면 볼수록 처음부터 끝까지 정독해서는 <파이썬을 활용한 머신러닝 쿡북>을 50%도 활용하지 못할 것이라는 생각이 든다. 어디 선가 한번쯤 듣고 넘어갔던 방법들을 다시 되살려주고 알고 있는 것들을 깔끔하게 정리해주며 거기에 조금 더 맛있는 코드가 될 수 있게끔 도와주는 책이다.

 


:: Outro

  <파이썬을 활용한 머신러닝 쿡북>은 책 제목을 그대로 따른다. 파이썬을 도구로 머신러닝을 맛있게 요리하는 방법을 알려주는 훌륭한 레시피다. 우리가 파스타 레시피를 정독하고 책장에 다시 꽂아두지 않는 것처럼 이 책도 한번 읽고 다시 책장에 꽂아두는 책이 아니다. 저자가 원하는 ' 자신만의 표시가 가득한 지저분한(?) 책' 이 될 수 있는 완벽한 준비가 되어있다. 

  머신 러닝에 대한 기초 준비가 되어있다면 주말에 이책과 맥북을 들고 카페로 가서 충분한 시간을 들여 저자가 준비한 맛있는 레시피 들을 훔쳐보자. 내가 머신 러닝 실무를 맡고 있다면 더할 나위 없고, 그렇지 않다고해도 실제 코드를 기반으로 머신 러닝 전반을 다시 정리하기에도 좋은 책이다.

 

댓글0