wnsgh***
2017-08-10

사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현
(본 포스트는 한빛 미디어 "나는 리뷰어다" 이벤트를 통해 책을 제공 받아 리뷰를 작성하였습니다.)
요 3~4년 전부터 IT의 화두는 항상 기계학습, 머신 러닝 이었습니다. 그러다가 작년에 알파고 충격, 흔히 말하는 '인공지능 너따위가 감히 인간의 영역에 도전해?' 라는 생각이 팽배한 상황에서, 조금 오래되긴 했지만 "인간계 최강"으로 군림했던 이세돌 9단과 알파고와의 대국이 있었습니다. 그리고 이세돌이 신의 한수로 1 대국을 이겨먹은거 말고는 내리 전패를 하는 충격을 우리에게 안겨주었습니다. 이 때 사람들은 처음으로 '딥러닝'이라는 생소한 용어와 함께 기계가 사람을 이겨먹었다라는 점을 배우게 되었지요.
물론 오늘은 이런 인공지능에 대한 이야기를 할 건 아니고, 이러한 열풍에 사람들이 너도나도 머신러닝을 배우기 시작하였습니다. 사실 저는 2012년에 처음 이 기계학습의 컨셉을 알게 되었지만, 그 때는 별 대수야 하면서 넘어갔었습니다. (왜 그랬니 2012년의 나야..) 이러한 여파 때문인지는 몰라도 시중에는 많은 머신러닝 관련 서적이 나왔고, 오늘 책도 그중 하나라고 할 수 있습니다.
(쨘)
머신 러닝이라는 컨셉 자체를 구현하고 있는 것은 많은 프로그래밍 언어에서 하고 있습니다. "R, matlab, JAVA, C, C++" 등등 많지만 역시 가장 유명한 것은 배우기 쉽고 언어 자체가 직관적인 Python이 관련 패키지와 커뮤니티가 가장 활성화 되어 있습니다.
또한 머신러닝을 위한 많은 패키지가 존재하고 이 패키지들 중에서도 가장 유명한 패키지가 사이킷 런(scikit-learn) 패키지 입니다. 그 사이킷 런의 패키지 메인 컨트리뷰터(contributor, 오픈 소스에 기여를 주도적으로 하는 개발자)가 작성한 책인 만큼 "사이킷 런을 활용한 머신 러닝 패키지를 자세히 알 수 있을 것 같다"라는 느낌을 가졌지만!
머릿말에서 저자는 "사이킷 런이 어떻게 구현이 되었다라는 사실 보다는 '어떻게 사이킷 런을 사용하여 머신러닝 모델을 구축하여 사용할 수 있을지'에 더 집중하였다고 서두에 밝히고 있습니다. 즉, 사이킷 런 패키지를 활용하여 데이터를 사용해서 어떻게 머신러닝 모델을 구축하고 우리의 실생활 문제 사용할 수 있을지에 대하여 고민하고, 정리한 책이다. 라고 생각하시고, 이 책을 읽으시면 됩니다.
책은 크게 이해하기 어렵지 않도록 구성되어 있습니다. 각 챕터마다 앞 부분에 이 챕터를 통해서 사용할 개념에 대하여 이야기를 하고 이후에는 그 개념을 어떻게 파이썬 패키지를 사용하여 만들 수 있는지 코드로 표현하고, 결과를 보여주는 형식을 취하고 있습니다. 책 자체가 머신 러닝의 딥한 기술 내용을 다루지 않고 있기 때문에 (예를 들어 수식이라던가 수식이라던가 수식이라던가..) 처음 머신러닝을 사용해보고자 하시는 분들에게는 부담없는 이론을 익혀보고 해당 이론이 직접 코드로 어떻게 구현되는지를 알고 싶다하는 분이 딱 적당한 도서라고 생각합니다.
이 책의 원 도서 이름이 "Introduction to Machine Learning with Python" 이라는 것을 감안할 때 진짜 개론적인 내용만 다루고 있기 때문에 깊이 있는 내용의 구성을 워하시거나 Scikit learn 패키지의 내부가 어떻게 이루어졌는지 알고 싶거나, 기계 학습의 진짜 핵심적인 내용을 알고 싶다면 이 책이 적절하지 않다고 할 수 있습니다.
전반적으로 이 책을 평가하자면, 책의 내용은 깔끔하고 꼭 필요한 내용만 잘 들어가 있다고 생각합니다. 뒤로 갈 수록 같은 구성에 조금 질리기도 하고 머신 러닝의 이 기술 저 기술을 조금조금씩 맛만 보는 정도라서 기존 프로그래밍 도서의 기초부터 심화과정까지 쭉 보는 것에 익숙한 독자분들은 책의 내용이 조금 심심하다고 생각하시 수 도 있을 것이라 생각합니다.
또한 기존 저자가 번역서의 머릿말에도 한국어판 출간을 축하한다는 글을 써줄 만큼 이 책을 심도있게 바라보고 있고, 그만큼 역자분께서 책의 번역과 역주를 신경써주셔서 달았기 때문에 기이한 그림이 그려진 오라일리의 도서일지라도 무리없이 전반적으로 잘 읽을 수 있을것이라 판단합니다.