[리뷰] 파이썬 머신러닝 실무 테크닉 100
in Review on Review, Book, 머신러닝, 실무, 테크닉, 100가지, 예제, 데이터, 분석, 최적화, 이미지인식, 자연어처리, 시각화, 전처리, 평가, 검증, 전개, 대책
제이펍
출판사의"파이썬 머신러닝 실무 테크닉 100(시모야마 데루마사, 미키 다카유키, 이토 준지 저/김모세 역)"
를 읽고 작성한 리뷰입니다.
데이터 분석과 관련된 작은 스킬들을 블록식으로 조립하여 MVP 방식에 적합한
소규모 머신러닝 시스템
을 구축하는 과정을 담은 책으로 PC 한 대만으로도 소개한 시스템의 구축이 가능하다.
책은 크게 2개의 파트로 나뉜다. 먼저 1부에서는 데이터 분석 시스템을 완성한 후, 2부에서는 1부의 구조화된 시스템에 모델을 결합하여 머신러닝 시스템으로 업그레이드 하는 과정을 거친다.
대규모의 투자를 감행하여 사내에 AI 시스템을 구축하는 것은 사업이 실패할 경우 감당해야 하는 리스크가 크다. 머신러닝 시스템의 성패는 데이터 수집, 전처리, 모델링, 평가, 문제해결에 이르는 일련의 과정을 얼마나 자주 반복
하며 개선할 수 있느냐에 달려있다.
바로 이런 측면에서 이 책이 장점을 십분 활용할 수 있는데 처음부터 목적없이 대규모의 시스템을 들이기에 앞서 MVP 규모의 소규모 시스템으로 스스로의 가설을 검증해보고 숨은 인사이트를 발견하는 과정을 반복할 수 있도록 자동화
함으로써 목적에 충실한 시스템을 먼저 구현해 볼 수 있다. 이 과정을 반복해나가며 필요할 경우 대규모 시스템으로 진화할 것을 권장하고 있다.
책의 제목과 구성을 볼 때 각각의 스킬이 평행식으로 열거된 100가지 테크닉이 소개되는 것이라고 착각할 수 있으나 100가지 테크닉은 평행적인 나열이 아닌 입체적
인 구성과 상호 유기적인 관계를 갖고 있다.
예를 들면 1장의 앞서 소개된 9가지 스킬은 10번째 스킬로 구조화되며 통합되는 방식이다. 또한 2장의 시각화를 위한 각 스킬들은 3장의 대시보드 시스템에 통합 활용되며 구조화된다.
여기에 엑셀 보고서를 통한 의사소통 문제를 해소하는 4장의 내용이 더해지면 5장의 데이터 분석 시스템이 완성된다. 즉, 1 ~ 4장의 내용이 5장으로 통합 구조화되는 모양이라고 볼 수 있다.
여기에 이르기까지 Pandas에서 자주 활용하는 기본적인 기능과 Python의 기초 지식을 익힐 수 있음은 물론 ipywidgets 패키지를 활용하여 주피터 노트북을 인터랙티브하게 활용할 수 있는 등 여러 단독 스킬들을 배워나갈 수 있다.
파트1의 과정은 파트2에서 대부분 복습할 수 있다. 때문에 파트1에서 잘 이해가지 않는 부분이 있더라도 걱정말고 일단 구조화를 향한 큰 그림에 집중하며 실습해도 큰 문제가 없을 듯하다.
그렇다면 파트2는 파트1 대비 어떤 차이점이 있을까? 제목에서 알 수 있듯 파트2에서는 머신러닝 시스템
을 향한 구조화 과정이라 말할 수 있다.
6장에서는 1장과 매우 유사하나 머신러닝에서 활용할 목적, 설명, 상관관계 등의 변수를 생성한다던가 범주화 처리 같은 머신러닝 모델이 보다 잘 이해할 수 있는 몇가지 과정이 추가된다는 차이가 있다.
7장은 모델링에 집중한다. 가설을 수립하고 설명, 목적 변수를 선정하며, 알고리즘 선정에서 평가에 이르는 일련의 과정이 포함되어 있다.
8장은 앞에서 배운 6 ~ 7장의 내용을 통합 구조화하며 입력 데이터에 지속적인 변경이 가해지더라도 성능을 자동으로 갱신할 수 있는 시스템을 만든다.
9장에서는 이 모든 내용을 통합하며 10장에서 대시보드로 완성한다. 일련의 예측 및 분석 과정도 결국은 내부를 모르는 또 다른 의사결정자와 소통이 필수적이기에 10장에서는 그런 의사 전달 체계를 위한 과정이 포함되어 있다.
조금 더 나아간다면 해석 가능한 인공지능 기법인 XAI의 기술들이 활용될 수 있겠으나 여기에서는 Feature Importance 정도의 기법만 소개되고 있다.
결과적으로 10장까지 다루는 일련의 과정을 통해 최소 규모의 머신러닝 시스템
을 갖출 수 있게 된다. 각 과정에서 군더더기는 최소화되어 제거된 듯 하고 구조화를 향한 목적에 초점을 맞추기 위해 각 기능도 최소로 활용된 느낌이 든다.
이 책을 통해 하나의 잘 구조화된 설계 흐름
을 익히고 난다면 그 위에 살을 붙여 나가는 과정은 또 다른 좋은 레퍼런스로 충분히 가능할 것이라고 생각하기에 책의 내용을 컴팩트하게 압축하여 핵심에만 집중할 수 있게 구성한 점이 마음에 든다.
그렇기에 머신러닝 입문서에서 배운 기초 과정들이 서로 유기적으로 어느 타이밍에 활용할 수 있을지 입체적으로 이해할 수 있게 된다. 예를 들면 테크닉 20의 경우 차원 소멸의 대표적인 알고리즘 t-SNE를 적용한다.
일반적인 입문서로만 학습을 했다면 t-SNE를 배워도 어떤 기초 개념인지는 이해할 수 있어도 이를 어느 타이밍에 어떤 이벤트에 활용해야 할지 바로 떠오르기 어렵게 된다. 하지만 이 책을 통해 일련의 과정을 입체적으로 배우고 나면 그런 기초 요소들을 어느 시점에 적용해야 할지 쉽게 판단이 되는 것이다.
책의 난이도는 데이터 분석을 처음으로 접하는 사람이 도전해도 충분할 것 같다는 생각이 들지만 그래도 Python 프로그래밍 기초 수준은 필요할 듯 하다.
또 본 도서의 과정은 모델의 알고리즘이나 수학적 기초에 집중하는 책이 아니다. 최대한 라이브러리를 이용하고 이론 지식을 소개하지 않는다. 다만 알려진 알고리즘을 어떻게 언제 활용해야 하는지 실무에만 집중하는 책이기에 어느 정도의 모델이나 입문 지식 정도는 알고 실습에 임하면 더욱 도움이 될 것이다.
이 책은 특히 예산이 충분하지 않은 소규모 스타트업의 초기 모델 구축에 도움이 될 것 같다. 그 외에도 개인적으로 소규모 시스템을 구축하고 싶은 독자에게도 추천하고 싶다.