nanhmjj***
2019-06-05

현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없습니다. 사이킷런(scikit-learn)과 같은 훌륭한 머신러닝 라이브러리가 복잡하고 난해한 작업을 직관적인 인터페이스로 감싸주는 덕분이죠. 이 책에서는 사이킷런의 핵심 개발자가 복잡한 수학을 동원하지 않고 실용적으로 머신러닝을 구축하는 모든 단계를 설명합니다. 미적분, 선형대수, 확률 이론을 공부하지 않았어도 이 책을 통해 머신러닝을 활용할 수 있게
본 리뷰는
한빛미디어출판사"파이썬 라이브러리를 활용한 머신러닝(번역개정판)"을 읽고 얻은 지식을 정리한 글입니다.
바야흐로 딥러닝의 시대다. 알파고를 언급하는 건 이젠 너무나 식상한 일이 되어버렸다. 대신 에는 일주일에도 수십편의 논문이 쏟아져 나오고 있고, Google I/O 2018에서는 일종의 튜링테스트 기법으로 사람을 속이는 인공지능 상담원이 등장하였다. 구글에서는 멀티미디어 검색 기능은 물론 심지어 세상에 존재하지 않는 강아지의 사진을 만들어 내기도 한다. 그러기에 필자같은 프로그래머를 비롯하여 통계, 수학 분야는 물론이고 경영, 의학 등 다양한 도메인 분야의 전문가들로 부터 깊은 관심을 받고 있으며,이들은 자연스레 최신기술을 익히고자 다양한 방법으로 데이터 사이언스에 접근하고 있다.
딥러닝, 머신러닝 등 Data Science 영역에서 가장 많이 사용하는 프로그래밍 언어 2가지를 꼽으라면 단연 Python과 R일 것이다. 프로그래머라면 보다 범용적으로 활용도가 높은 Python을 선호하는 편이고, 통계분야 전문가를 비롯한 비 프로그래머 계열은 R을 선호하는 편이다. 물론 필자처럼 양쪽에 깊은 관심을 가지고 활용하는 사람도 있다.
이를 위해 먼저 Python이 제공하는 머신러닝 도구들을 살펴 볼 필요가 있다.
이 책은 위와 같은 도구를 소개로 시작한다. 출발하기에 앞서 기본적인 체계를 잡아주기에 가독성과 이해를 도와준다. 더불어 저자가 위의 도구 중 가장먼저 언급한 Scikit-learn의 핵심 개발자 안드레아스 뮐러, 세라 가이도이기에 그 어떤 책 보다도 본서가 Scikit-learn의 철학 및 내부 구조를 학습하는데 적격이라고 생각하며, 보다 수준높은 데이터 사이언티스트가 되기 위해선 머신러닝 알고리즘의 내부를 내것으로 만들어 다양한 데이터로부터 모델링의 능력을 키우는 것이 가장 중요하다고 생각하기에 이 책을 강력히 추천한다.
머신러닝 분야에 종사하고 싶다면 다양한 길이 있을 것이다. 하지만 진정한 데이터 사이언티스트가 되고 싶다면 개인적으로는 위에서 간략히 언급한 바와 같이 모델링이 핵심이라고 생각한다. 데이터가 어떤것이 주어지더라도 분석을 통해 인사이트를 뽑아내는 인재라면 EDA를 비롯 전처리 경험이 풍부해야 하며, 이를 기반으로 유의미한 모델링을 설계하는데 필요한 능력이 충분할 것이기 때문이다.
IT의 태생이 그러했듯 딥러닝이 등장하면서 과학으로 불리는 Science의 영역이 Engineering의 영역으로 상당히 많이 옮겨진 듯 하다. 대신 다루는 데이터 영역이 이미지, 동영상, 음성, 텍스트라는 소재에 국한되는 경향이 있으며, 데이터 대신 GAN 같은 의미있는 기법이 등장하긴 하였지만 그래도 딥러닝이 Tabular 성격의 데이터에 유독 취약한 것은 현재까지는 부인할 수 없다고 생각한다.
이에 프로그래머라면 더더욱 머신러닝 더 나아가 통계, 수학, 수리통계학, 정량분석의 분야를 소홀히 해선 안된다는 것을 깨닫곤 한다. 다음의 질문을 생각해보자.
과거의 당첨번호로 학습을 시켜 당첨번호를 예측한다? 원리는 몰라도 직관적으로 말도 안되는 일이라고 생각하는 사람이 많을 것이다. 한편으로는 딥러닝이 얼마나 위대한데.. 혹시 딥러닝이라면 가능하지 않을까? 이 질문이 유의미한지 알고 싶다면 그저 Keras, Tensorflow를 잘 다룰 줄 안다고 해결될 문제는 아닐 것이다. 에포크 횟수, 파리미터 튜닝을 열심히 한다고 답이 구해질까? 데이터는 과거 당첨번호를 이용해야 하나? 아니면 어떤 사건이나 영향을 주는 데이터를 수집하면 될까? 말도 안되는 질문들이지만 초보자라면 한번 깊게 생각할 필요가 있다. 우리가 허상에 빠지기 쉬울 때 바른 방향을 제시해주는 것이 통계학과 같은 사이언스 지식이라 생각을 하며 아주 쉬운 확률의 독립사건 개념부터 좀 더 나아가 자기상관성에 이르기까지 기본 개념이 탄탄하면 애초에 말도 안되는 주제로 시간과 노동력을 낭비하지는 않을것이다.
프로그래머라면 Python이라는 범용프로그램 언어에 취해 R과 같은 데이터 분석 전용언어를 비하하거나 Python의 코딩 능력이 데이터 분석 능력을 좌우한다는 일종의 선입견(?)도 버릴 필요가 있다고 생각한다. 필자 또한 비슷한 과정을 거쳤는데 R은 Python과는 달리 행렬 표현이 2차원에 국한되어 종속적이지 않으며, 대부분의 함수에서 포뮬러를 지원하기에 불필요한 코딩을 방지하게 하여 보다 분석에 집중하게 해주는 엄청난 장점이 있다. 물론 Python처럼 범용언어가 아니기에 타 기능과의 매끄러운 연결은 어렵다.
각설하고 Python으로 데이터 분석을 원하는 사람이 모델링의 능력을 키우기 위해선 먼저 Scikit-learn의 내부 구조를 들여다 보는 것이 좋은 수순이라고 생각하며, 이책은 그런 관점에서 매우 훌륭한 스승이 될 것이라고 본다. 더불어 mglearn 라이브러리로 핵심에 벗어나는 코딩량을 줄여 알고리즘의 핵심을 바라보게 해주는 장점을 가지고 있으며, 한가지 더, 시각화된 이미지가 아래 사진과 같이 컬러로 되어 가독성이 좋고 집중도 잘된다. 그리고 역자가 참 맛깔나게 번역을 잘했다.

구현 소스는 에 공개되어 있다.
개발자
개발자의 최대 장점인 코딩 구현능력과 구조화된 사고방식을 활용하여 사이언스 원리 중심의 서적보다 머신러닝의 핵심에 더 쉽게 다가갈 수 있다.
데이터전문가, 연구자, 과학자
통계, 수학, 모델링 지식에 해박하나 좀 더 성능좋은 도구를 자유자재로 다뤄 연구 수행에 있어 효율성을 높이고 싶은 분들도 이 책이 많은 도움이 될 것이다.
그 외 ‘데이터사이언티스트 = 프로그래머’라는 생각을 가지신 분
이유는 위 절에서 자세히 설명하여 생략한다.
이 책은 크게 세 부분으로 구성된다.
이 책은 프로그래머로서 자칫 데이터 분석을 코딩만으로 배울뻔한 우(愚)에서 벗어나게 해주었기에 높은 점수를 주고 싶으며, 이 책을 읽으며 남이 만든것을 생각없이 따라가 만드는 데 급급했던 습관에서 모델링의 본질에 대해 깊이 생각하며 창조적인 시각의 중요성을 생각해보는 계기가 되었다. 보통 이럴땐 깊은 생각에 잠겨 책을 읽는 속도가 느려지게 마련인데 신기하게도 가독성이 너무 좋아 생각보다 읽는 시간이 오래 걸리지는 않았다. 데이터 사이언티스트의 영역에 발을 담그고 싶다는 꿈을 가지신 분이라면 누구나 꼭 한번 정독하시길 권한다. 끝으로 이 책을 읽을 기회를 주신 한빛미디어에 깊은 감사를 드린다.
<한빛미디어 출판사>
개발자라면 믿고보는 “한빛미디어 출판사”라는 수식어가 따라다닐 만큼 IT분야는 물론 다른 분야에서도 양질의 도서를 끊임없이 출판하는 회사입니다. 개발자로서 “나는 프로그래머다”라는 유익한 팟캐스트를 즐겨 듣곤 했는데 한빛미디어에서 후원을 하였기에 수년간 방송이 이어져올 수 있었다 생각하며, 그외에도 리뷰어 활동, 학습지원 등 다양한 분야에서 사회에 공헌하는 개발자와 공생하는 업체입니다. IT 분야에 관심이 많은 분이라면 한빛미디어의 책으로 시작하시면 후회없는 출발을 하실 수 있습니다.(저 역시 최근에 출간된 ‘데이터를 부탁해’까지 100권은 넘게 산 것 같네요…^^;)