28 March 2022

파이썬 라이브러리를 활용한 머신러닝(번역개정2판) 사이킷런 핵심 개발자가 쓴 머신러닝과 데이터 과학 실무서

사이킷런 핵심개발자가 썼다는 것 하나만으로도 이 책을 설명할 수 있다. 1판으로도 사이킷런 공식문서를 보다가 이해되지 않는 부분이 있을 때 이 책을 찾아보면서 놓치고 있던 것들을 찾고 배울 수 있어서 1판이 출판된지 시간이 제법 지났어도 두고두고 봤다. 사이킷런은 버전1.0으로 넘어오면서 API에 여러 변화가 있었고 또 과거의 API로는 동작하지 않는 코드들도 일부 있다. 사이킷런을 사용하면서 점점 문서화나 시각화도 코드 밑바닥부터 구현해야 했던 디시전트리의 plot_tree 와 같은 모델을 설명하는 코드가 사용자 친화적으로 바뀌어 가고 있음을 느낀다.

개정2판을 통해 역자분의 부록도 늘어났다. 1판에서도 한국어 자연어처리 예제가 있었는데 한국어 자연어처리 예제와 함께 앙상블 모델에서는 에이다부스트, 엑스트라 트리, 히스토그램 가발 그레디언트 부스팅도 따로 설명하고 있다. QuantileTransformer 과 PowerTransformer, 반복 교차 검증에 대한 내용도 따로 집필이 되어 있다.

또, 1판 이후에도 여러 머신러닝, 딥러닝 책을 번역하고 집필하신 역자 분의 책이라 믿고 읽을 수 있는 책이다. 이 분의 역서나 집필서를 보면 이 분의 팬이 되지 않을 수 없다. 이 책의 1판을 통해 정말 많은 걸 배웠는데 업데이트 된 내용까지 읽어 볼 수 있게 되어 감사할 따름이다.

1판에서와 마찬가지로 사이킷런 핵심개발자인 안드레아스뮐러의 인터뷰도 있는데 이 부분이 가장 재미있었다.

  • 이 책을 쓴 이유

복잡한 수학을 동원하지 않고 실용적으로 머신러닝을 구축하는데 중점을 두고 있는 책이며, 수식보다는 scikit-learn API 를 통해 설명하기 때문에 추상화된 API에 대한 몇 가지 사용법만 알고 있다면 알고리즘을 깊숙하게 이해하고 있지 않더라도 머신러닝 모델을 활용한 어플리케이션을 개발 할 수 있도록 해준다. 미적분, 선형대수, 확률, 통계에 대한 수식을 모르더라도 사이킷런이 제공해 주는 API 를 통해 모델을 개발하고 성능을 개선해 볼 수 있기 때문에 수학에 대한 부담감은 내려 놓고 읽을 수 있는 책이고 또 사이킷런 라이브러리가 그렇다.

어렵고 복잡한 수식보다는 사이킷런 API를 통해 주로 설명하고 또 핵심개발자에 의해 쓰여졌기 때문에 필수 알고리즘 위주로 설명하고 있다.

  • 딥러닝이 큰 붐을 일으키고 있다.

딥러닝의 발전을 보면 꼭 딥러닝을 해야될 것 같지만 머신러닝으로 풀 수 있는 문제도 많다. 딥러닝은 의미를 찾기 어려운 데이터에서 특징을 추출하는데 뛰어나지만 정형 데이터에서는 여전히 머신러닝이 좋은 성능을 내며 딥러닝이 잘 맞지 않기도 하며 비정형 데이터를 딥러닝으로 훈련하기 위해서는 데이터와 자원이 많이 필요한데 소수의 연구자들만이 모델을 훈련시킬 자원을 갖고 있다는 내용도 공감이 된다.

최근에는 colab, kaggle notebook 등을 통해서 GPU를 직접 구매하지 않고 사용할 수도 있지만 비정형 데이터를 다루다보면 여전히 속도가 오래걸려 원하는 결과를 얻기까지 시간이 오래 걸릴 때가 많다.

  • 가장 간단한 것부터 시작하자.

오픈소스에 기여할 때는 가장 간단한 것부터 시작하라는 조언도 마음에 든다. 무슨 일이든 가장 쉽고 간단한 것을 먼저 해야 성취감을 얻으면서 앞으로 나아갈 수 있다. 1판에서도 사이킷런에 공헌하기 보다는 다른 작은 프로젝트에 먼저 공헌해 보라는 인터뷰 내용이 있었는데 작은 것부터 시작해서 조금씩 성장해 가는 좋은 자세에 대한 조언도 마음에 든다.

1판에서도 인터뷰 내용을 재미있게 읽었었는데 2판에서도 인터뷰 내용이 인상적이었다. 사이킷런 버전1.0에서 변경된 부분이 많아서 워닝 메시지가 나올 때마다 비교해 보면서 개선된 점을 찾을 수 있었는데 개정2판을 통해 사이킷런을 좀 더 잘 익혀볼 수 있길 기대해 본다.

이 책은 가장 자주 보고 많은 걸 배울 수 있던 책이었는데 2판도 앞으로 자주 열어보면서 사이킷런을 사용해 보려고 한다.

이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 책을 제공받아 작성했습니다.