varkir***
2017-08-13

사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현
8월의 '나는 리뷰어다'에 이벤트 메일이 날라왔다. 많은 책중에 딱 하나 눈에 들어온 것이 바로 이 책이었다. 마침 요즘 한참 관심있어 하는 머신러닝이기에 냉큼 신청했다. 다행히 운이 좋게도 당첨이 되었고,
얼른 책이 오기를 기다렸지만 아쉽게도 책 도착은 좀 늦었다. 한동안 출퇴근 길에 들고다니면서 보기도 했고, 일이 끝난 후에 동네카페에 들려 공부를 하기도 했다.
이 책의 가장 큰 장점은 예제라고 꼽겠다. 그동안 몇개의 머신러닝 관련책을 보았을 때, 대부분이 코드 그대로 되는 경우가 없었다. 그만큼 이쪽분야의 기술발전속도가 빠르다는 의미겠지만 한편으로는 공부하는 입장에서 소스코드가 안될때의 허탈 + 막막함은 이루 말할 수 없다. 그런의미에서 이 책은 대부분 된다. 안되는 예제를 발견하진 못했다. 그리고 예제와 더불에 결과를 그림 그대로 올려주어서 돌려보지 않아도 결과치를 대략 알 수 있다. 그런 면에서 아주 잘 되어있다.
책이 생각보다 어렵다. 이전에 유튜브를 통해 공부했던 머신러닝과는 확실히 다른 느낌이 든다. 이전에 봤던 책은 tensorflow라는 툴을 기반으로 해서 내용을 풀어나갔다. 이론도 딥러닝(뉴럴네트워크) 기반에 한해서 진행된 것이기에 관련 필요한 개념과 내용을 주로 설명하여 어렵기는 했어도 방대하단 느낌이 들진 않닸다. 그런데 이 책을 보고는 충격이 컸다. 하기사, 머신러닝이 1~2년 안에 만들어 진게 아니니 그동안 축적된 것도 많을 것이고 딥러닝도 머신러닝의 한 축이니 당연한 결과일지도 모르겠지만 이 책을 보기 전까지는 그렇게 자세하게 알아보지 않았기 때문에 솔직히 많이 놀랐다.
책 내용이 좋다. scikit-learn(사이킷런) 기반으로 몇개 라이브러리만 이용하여 제공하는 실용위주의 책이라고 볼 수 있겠다. 그리고 기초배경지식이 없는상태에서 보는 책은 아닌거 같았다. 나역시도 배경지식이 얕기에 읽으면서 인터넷을 자주 이용할 수 밖에 없었다. 눈대중으로 모르겠는건 넘어가면서 공부하기도 했는데 나중엔 그것이 결국 돌아와서 한번쯤 찾아보게 만든다. 내가 내 지식상태에 어울리지 않은 어려운 책을 선택했나 하는 자괴감도 있었다.(솔직히 이런 책인지 몰랐던 것도 있다)
그럼에도 알고리즘별 장단점, 응용법, 설명이 잘 나와있는 편이다. 논리를 이해하는데는 힘들었지만 그것을 따라하는데는 비교적 쉬워서 다행이었다.(책에 있는것을 그대로 해도 제대로 작동되는 것이 많은 도움이 되었다.) 의외로 깨알같았던 것은 샘플코드에도 한글 번역을 한 것이다. 사실 영어로 되어있는 것을 그대로 올렸다면 '이게 그건가?' 하며 한참을 들여다봤을 것이다. 그런면에선 참 도움이 됐다
모르는 것도 많다보니 정말 쉽지가 않다. 너무 방대한 양을 한번에 소개(?)받은 터라 당황한 것도 있지만... 이 책의 장점은 가이드라인을 가지고 공부하기 좋다. 다양한 알고리즘을 어떤 방식을 써서 어떤 문제를 풀어냈는지, 각 알고리즘의 장단점은 무엇이며 알고리즘끼리 비교해서 성능을 파악할 수도 있고, 그런면에선 큰 맥락의 줄기를 알려주어서 좋다. 단점이라고 한다면 너무 다양한 알고리즘들로 인해 공부하다 지치기 쉽다는 점, 그리고 요즘 대세라고 일컬어지는 딥러닝(뉴럴네트워크) 만을 다룬것은 아니기 때문에 혹시 텐서플로우 같은 특정 툴의 활용을 목적으로 공부하시는거라면 아무래도 부적절하다고 생각이 든다. 개인적으로는 머신러닝 전반에 걸쳐 두루 알 수 있게 해준다는데 높은 점수를 주고 싶다.