ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [책 리뷰] 파이썬 라이브러리를 활용한 머신러닝 (2판)
    BIG DATA & AI/Machine Learning 2022. 3. 31. 22:37
    반응형

    파이썬 라이브러리를 활용한 머신러닝 [개정2판] / 한빛미디어 / 정가 33,000원

    이 책은 무려 Scikit-learn 핵심 contributor인 안드레아스 뮐러가 지은 '머신러닝 바이블'이라고 감히 소개한다. 머신러닝 이론과 실습을 전반적으로 시작/복습하기 좋으며, 머신러닝에 관심이 있는 개발자라면 누구나 이해할 수 있는 책이다. 물론 머신러닝을 해 본 사람들에게는 기초를 다시 닦기에도 너무 좋은 책이다. 즉 초급자부터 실무자에게 모두 도움이 되는 알찬 contents를 담고 있다고 할 수 있겠다. 다만 머신러닝에 관한 책이라 딥러닝은 keras만 잠깐 언급할 뿐 딥하게 다루지는 않는다.

    참고로 1판에 비해서 개정2판은 흑백->컬러본으로 좀 더 컨텐츠 가시성이 좋아졌으며 trendy한 코드를 많이 담고 있다고 한다.

    내용이 좋아서 실제로 열심히 읽은 책.

    지도 학습, 비지도 학습, 모델 평가, NLP 등이 다뤄지고 마지막 마무리 챕터에서 실무자로서 인상 깊었던 좋은 내용들이 많아서 몇 개 인용/기록하려고 한다.


    머신러닝 문제 접근 방법에 대해:

    전체 데이터 분석과 의사 결정 과정에서 머신러닝 알고리즘이 차지하는 부분은 보통 작습니다. 머신러닝을 효과적으로 사용하려면 한걸음 뒤로 물러나 넓은 시각으로 문제를 바라봐야 합니다. 목표가 있다면 시스템을 구축하기 전에 먼저 성공을 어떻게 정의하고 측정할지, 최종 솔루션이 비즈니스와 연구의 목표에 어떤 영향을 줄지 생각해봐야 합니다. 예를 들어 부정거래 탐지가 목적이라면,

    • 부정거래 예측이 실제로 작동하는지 어떻게 측정할까?
    • 알고리즘을 평가하기 위해 알맞은 데이터를 가지고 있는가?
    • 성공적으로 구축했다면 이 솔루션이 비즈니스에 어떤 영향을 주는가?

    Chapter 5에서 보았듯 이익 증가율이나 손실 감소율 같은 비즈니스 척도를 직접 이용해 알고리즘 성능을 재는 게 가장 좋습니다. 하지만 이런 방식을 사용하기 어려울 때가 많습니다. 간단하게 "완벽한 모델이란 무엇인가?"라는 질문의 답을 찾으면 됩니다.

    모델을 적용할 때 기억해야 할 것은 모델이 커다란 데이터 과학 workflow의 일부라는 것입니다. 모델 구축은 새로운 데이터를 모으고, 정제하고, 만들고, 평가하는 순환 사이클의 한 부분입니다. 모델이 만든 오류를 분석하면 빠진 데이터나 추가로 수집할 데이터, 더 효과적인 모델을 위해 어떻게 작업을 재구성할지에 대한 정보를 많이 얻을 수 있습니다. 더 많은 데이터를 수집하거나 작업 흐름을 바꾸는 것이 매개변수 튜닝을 위해 끝없이 그리드 서치를 돌리는 것보다 훨씬 이득일 수 있습니다.


    기존 시스템에 머신러닝 애플리케이션을 도입할 때의 어려움이 많습니다. 이 경우에는 분석팀에서 찾은 솔루션을 고성능 언어(high-level language를 번역한 듯 하다)를 사용하여 더 큰 프레임워크 안에서 재구현하는 것이 보통 일반적입니다. 핵심은 '단순함'이며, 대규모 머신러닝 소프트웨어 제품을 구축하고 유지하기 위한 타협점으로 구글 머신러닝 팀이 쓴 아래 논문을 추천합니다.

    Machine Learning: The High-Interest Credit Card of Technical Debt - Google, Inc
    https://storage.googleapis.com/pub-tools-public-publication-data/pdf/43146.pdf


    A/B Test:

    대부분의 사용자 서비스는 일종의 블라인드 테스트인 A/B test를 사용합니다. A/B test에서는 사용자 중 일부가 자신도 모르게 A를 사용한 웹사이트나 서비스를 이용하게 됩니다. 반면 나머지 사용자는 알고리즘 B에 노출됩니다. 두 그룹에 대해 적절한 성공 지표를 일정 기간 기록합니다. 그런 다음 알고리즘 A와 알고리즘 B의 측정값을 비교해서 두 방식 중 하나를 선택합니다. A/B test를 사용하면 실전에서 알고리즘을 평가해볼 수 있고 사용자들에게 모델이 노출됐을 때 예상치 못한 결과를 발견할 수도 있습니다. 보통 A가 새 모델이고 B는 기존 시스템입니다.


    함께 읽으면 좋은 책들

    Basic:

    The Elements of Statistical Learning
    Machine Learning: An Algorithmic Perspective
    Pattern Recognization and Machine Learning
    Machine Learning (Warning: over 1000 pages 💫)

    Advanced:

    Introduction to Information Retrieval

    https://nlp.stanford.edu/IR-book/information-retrieval-book.html

     

    Introduction to Information Retrieval

    06 Scoring, term weighting & the vector space model pdf html <!-- slides -->

    nlp.stanford.edu

    https://www.deeplearningbook.org/

     

    Deep Learning

    What is the best way to print the HTML format? Printing seems to work best printing directly from the browser, using Chrome. Other browsers do not work as well.

    www.deeplearningbook.org



    목차

    CHAPTER 1 소개
    1.1 왜 머신러닝인가?
    __1.1.1 머신러닝으로 풀 수 있는 문제
    __1.1.2 문제와 데이터 이해하기
    1.2 왜 파이썬인가?
    1.3 scikit-learn
    __1.3.1 scikit-learn 설치
    1.4 필수 라이브러리와 도구들
    __1.4.1 주피터 노트북
    __1.4.2 NumPy
    __1.4.3 SciPy
    __1.4.4 matplotlib
    __1.4.5 pandas
    __1.4.6 mglearn
    1.5 파이썬 2 vs. 파이썬 3
    1.6 이 책에서 사용하는 소프트웨어 버전
    1.7 첫 번째 애플리케이션: 붓꽃의 품종 분류
    __1.7.1 데이터 적재
    __1.7.2 성과 측정: 훈련 데이터와 테스트 데이터
    __1.7.3 가장 먼저 할 일: 데이터 살펴보기
    __1.7.4 첫 번째 머신러닝 모델: k-최근접 이웃 알고리즘
    __1.7.5 예측하기
    __1.7.6 모델 평가하기
    1.8 요약 및 정리

    CHAPTER 2 지도 학습
    2.1 분류와 회귀
    2.2 일반화, 과대적합, 과소적합
    __2.2.1 모델 복잡도와 데이터셋 크기의 관계
    2.3 지도 학습 알고리즘
    __2.3.1 예제에 사용할 데이터셋
    __2.3.2 k-최근접 이웃
    __2.3.3 선형 모델
    __2.3.4 나이브 베이즈 분류기
    __2.3.5 결정 트리
    __2.3.6 결정 트리의 앙상블
    __2.3.7 (한국어판 부록) 배깅, 엑스트라 트리, 에이다부스트
    __2.3.8 커널 서포트 벡터 머신
    __2.3.9 신경망(딥러닝)
    2.4 분류 예측의 불확실성 추정
    __2.4.1 결정 함수
    __2.4.2 예측 확률
    __2.4.3 다중 분류에서의 불확실성
    2.5 요약 및 정리

    CHAPTER 3 비지도 학습과 데이터 전처리
    3.1 비지도 학습의 종류
    3.2 비지도 학습의 도전 과제
    3.3 데이터 전처리와 스케일 조정
    __3.3.1 여러 가지 전처리 방법
    __3.3.2 데이터 변환 적용하기
    __3.3.3 (한국어판 부록) QuantileTransformer와 PowerTransformer
    __3.3.4 훈련 데이터와 테스트 데이터의 스케일을 같은 방법으로 조정하기
    __3.3.5 지도 학습에서 데이터 전처리 효과
    3.4 차원 축소, 특성 추출, 매니폴드 학습
    __3.4.1 주성분 분석(PCA)
    __3.4.2 비음수 행렬 분해(NMF)
    __3.4.3 t-SNE를 이용한 매니폴드 학습
    3.5 군집
    __3.5.1 k-평균 군집
    __3.5.2 병합 군집
    __3.5.3 DBSCAN
    __3.5.4 군집 알고리즘의 비교와 평가
    __3.5.5 군집 알고리즘 요약
    3.6 요약 및 정리

    CHAPTER 4 데이터 표현과 특성 공학
    4.1 범주형 변수
    __4.1.1 원-핫-인코딩(가변수)
    __4.1.2 숫자로 표현된 범주형 특성
    4.2 OneHotEncoder와 ColumnTransformer: scikit-learn으로 범주형 변수 다루기
    4.3 make_column_transformer로 간편하게 ColumnTransformer 만들기
    4.4 구간 분할, 이산화 그리고 선형 모델, 트리 모델
    4.5 상호작용과 다항식
    4.6 일변량 비선형 변환
    4.7 특성 자동 선택
    __4.7.1 일변량 통계
    __4.7.2 모델 기반 특성 선택
    __4.7.3 반복적 특성 선택
    4.8 전문가 지식 활용
    4.9 요약 및 정리

    CHAPTER 5 모델 평가와 성능 향상
    5.1 교차 검증
    __5.1.1 scikit-learn의 교차 검증
    __5.1.2 교차 검증의 장점
    __5.1.3 계층별 k-겹 교차 검증과 그외 전략들
    __5.1.4 (한국어판 부록) 반복 교차 검증
    5.2 그리드 서치
    __5.2.1 간단한 그리드 서치
    __5.2.2 매개변수 과대적합과 검증 세트
    __5.2.3 교차 검증을 사용한 그리드 서치
    5.3 평가 지표와 측정
    __5.3.1 최종 목표를 기억하라
    __5.3.2 이진 분류의 평가 지표
    __5.3.3 다중 분류의 평가 지표
    __5.3.4 회귀의 평가 지표
    __5.3.5 모델 선택에서 평가 지표 사용하기
    5.4 요약 및 정리

    CHAPTER 6 알고리즘 체인과 파이프라인
    6.1 데이터 전처리와 매개변수 선택
    6.2 파이프라인 구축하기
    6.3 그리드 서치에 파이프라인 적용하기
    6.4 파이프라인 인터페이스
    __6.4.1 make_pipleline을 사용한 파이프라인 생성
    __6.4.2 단계 속성에 접근하기
    __6.4.3 그리드 서치 안의 파이프라인 속성에 접근하기
    6.5 전처리와 모델의 매개변수를 위한 그리드 서치
    6.6 모델 선택을 위한 그리드 서치
    __6.6.1 중복 계산 피하기
    6.7 요약 및 정리

    CHAPTER 7 텍스트 데이터 다루기
    7.1 문자열 데이터 타입
    7.2 예제 애플리케이션: 영화 리뷰 감성 분석
    7.3 텍스트 데이터를 BOW로 표현하기
    __7.3.1 샘플 데이터에 BOW 적용하기
    __7.3.2 영화 리뷰에 대한 BOW
    7.4 불용어
    7.5 tf?idf로 데이터 스케일 변경하기
    7.6 모델 계수 조사
    7.7 여러 단어로 만든 BOW(n-그램)
    7.8 고급 토큰화, 어간 추출, 표제어 추출
    __7.8.1 (한국어판 부록) KoNLPy를 사용한 영화 리뷰 분석
    7.9 토픽 모델링과 문서 군집화
    __7.9.1 LDA
    7.10 요약 및 정리

    CHAPTER 8 마무리
    8.1 머신러닝 문제 접근 방법
    __8.1.1 의사 결정 참여
    8.2 프로토타입에서 제품까지
    8.3 제품 시스템 테스트
    8.4 나만의 추정기 만들기
    8.5 더 배울 것들
    __8.5.1 이론
    __8.5.2 다른 머신러닝 프레임워크와 패키지
    __8.5.3 랭킹, 추천 시스템과 그 외 다른 알고리즘
    __8.5.4 확률 모델링, 추론, 확률적 프로그래밍
    __8.5.5 신경망
    __8.5.6 대규모 데이터셋으로 확장
    __8.5.7 실력 기르기
    8.6 마치며

    반응형

    댓글

Written by Emily.