머신 러닝 교과서 with 파이썬, 사이킷런, 텐서플로(개정 3판)
아마존 머신 러닝 분야 베스트셀러! 그 명성 그대로!
머신 러닝, 딥러닝 핵심 알고리즘에서 GAN, 강화 학습까지!
코드 실행만으로는 머신 러닝과 딥러닝을 충분히 이해할 수 없다. 머신 러닝과 딥러닝을 제대로 이해하고 싶다면 코드 외에도 관련 이론과 알고리즘의 뒤편에 있는 수학 개념을 알아야 한다. 이 책은 이해를 돕는 개념 설명, 머신 러닝과 딥러닝 핵심 알고리즘의 작동 방식과 사용 방법, 그 밑바탕이 되는 수학, 실용적인 예제, 빠지기 쉬운 함정을 피하는 방법까지 이론과 코드를 균형 있게 설명한다. 파이썬 언어와 파이썬 기반의 머신 러닝 핵심 라이브러리(SciPy, NumPy, scikit-learn, Matplotlib, Pandas)를 사용해 머신 러닝을, 텐서플로(TensorFlow 2)를 사용해 딥러닝을 실습해본다. 특히 딥러닝은 최신 텐서플로 2에 맞춰 대폭 수정 및 보강되었다. 그러고 나서 GAN과 강화 학습도 자세하게 다룬다. 머신 러닝과 딥러닝 기본기를 탄탄하게 다지고 싶은 분께 추천한다.
«머신 러닝 교과서 with 파이썬, 사이킷런, 텐서플로(개정 3판)»는 3~7장을 공개합니다.
전자책 구입
목차
- 1장 컴퓨터는 데이터에서 배운다
- 1.1 데이터를 지식으로 바꾸는 지능적인 시스템 구축
- 1.2 머신 러닝의 세 가지 종류
- 1.2.1 지도 학습으로 미래 예측
- 1.2.2 강화 학습으로 반응형 문제 해결
- 1.2.3 비지도 학습으로 숨겨진 구조 발견
- 1.3 기본 용어와 표기법 소개
- 1.3.1 이 책에서 사용하는 표기법과 규칙
- 1.3.2 머신 러닝 용어
- 1.4 머신 러닝 시스템 구축 로드맵
- 1.4.1 전처리: 데이터 형태 갖추기
- 1.4.2 예측 모델 훈련과 선택
- 1.4.3 모델을 평가하고 본 적 없는 샘플로 예측
- 1.5 머신 러닝을 위한 파이썬
- 1.5.1 파이썬과 PIP에서 패키지 설치
- 1.5.2 아나콘다 파이썬 배포판과 패키지 관리자 사용
- 1.5.3 과학 컴퓨팅, 데이터 과학, 머신 러닝을 위한 패키지
- 1.6 요약
- 2장 간단한 분류 알고리즘 훈련
- 2.1 인공 뉴런: 초기 머신 러닝의 간단한 역사
- 2.1.1 인공 뉴런의 수학적 정의
- 2.1.2 퍼셉트론 학습 규칙
- 2.2 파이썬으로 퍼셉트론 학습 알고리즘 구현
- 2.2.1 객체 지향 퍼셉트론 API
- 2.2.2 붓꽃 데이터셋에서 퍼셉트론 훈련
- 2.3 적응형 선형 뉴런과 학습의 수렴
- 2.3.1 경사 하강법으로 비용 함수 최소화
- 2.3.2 파이썬으로 아달린 구현
- 2.3.3 특성 스케일을 조정하여 경사 하강법 결과 향상
- 2.3.4 대규모 머신 러닝과 확률적 경사 하강법
- 2.4 요약
- 3장 사이킷런을 타고 떠나는 머신 러닝 분류 모델 투어
- 3.1 분류 알고리즘 선택
- 3.2 사이킷런 첫걸음: 퍼셉트론 훈련
- 3.3 로지스틱 회귀를 사용한 클래스 확률 모델링
- 3.3.1 로지스틱 회귀의 이해와 조건부 확률
- 3.3.2 로지스틱 비용 함수의 가중치 학습
- 3.3.3 아달린 구현을 로지스틱 회귀 알고리즘으로 변경
- 3.3.4 사이킷런을 사용하여 로지스틱 회귀 모델 훈련
- 3.3.5 규제를 사용하여 과대적합 피하기
- 3.4 서포트 벡터 머신을 사용한 최대 마진 분류
- 3.4.1 최대 마진
- 3.4.2 슬랙 변수를 사용하여 비선형 분류 문제 다루기
- 3.4.3 사이킷런의 다른 구현
- 3.5 커널 SVM을 사용하여 비선형 문제 풀기
- 3.5.1 선형적으로 구분되지 않는 데이터를 위한 커널 방법
- 3.5.2 커널 기법을 사용하여 고차원 공간에서 분할 초평면 찾기
- 3.6 결정 트리 학습
- 3.6.1 정보 이득 최대화: 자원을 최대로 활용
- 3.6.2 결정 트리 만들기
- 3.6.3 랜덤 포레스트로 여러 개의 결정 트리 연결
- 3.7 k-최근접 이웃: 게으른 학습 알고리즘
- 3.8 요약
- 4장 좋은 훈련 데이터셋 만들기: 데이터 전처리
- 4.1 누락된 데이터 다루기
- 4.1.1 테이블 형태 데이터에서 누락된 값 식별
- 4.1.2 누락된 값이 있는 훈련 샘플이나 특성 제외
- 4.1.3 누락된 값 대체
- 4.1.4 사이킷런 추정기 API 익히기
- 4.2 범주형 데이터 다루기
- 4.2.1 순서가 있는 특성 매핑
- 4.2.2 클래스 레이블 인코딩
- 4.2.3 순서가 없는 특성에 원-핫 인코딩 적용
- 4.3 데이터셋을 훈련 데이터셋과 테스트 데이터셋으로 나누기
- 4.4 특성 스케일 맞추기
- 4.5 유용한 특성 선택
- 4.5.1 모델 복잡도 제한을 위한 L1 규제와 L 2 규제
- 4.5.2 L 2 규제의 기하학적 해석
- 4.5.3 L1 규제를 사용한 희소성
- 4.5.4 순차 특성 선택 알고리즘
- 4.6 랜덤 포레스트의 특성 중요도 사용
- 4.7 요약
- 5장 차원 축소를 사용한 데이터 압축
- 5.1 주성분 분석을 통한 비지도 차원 축소
- 5.1.1 주성분 분석의 주요 단계
- 5.1.2 주성분 추출 단계
- 5.1.3 총 분산과 설명된 분산
- 5.1.4 특성 변환
- 5.1.5 사이킷런의 주성분 분석
- 5.2 선형 판별 분석을 통한 지도 방식의 데이터 압축
- 5.2.1 주성분 분석 vs 선형 판별 분석
- 5.2.2 선형 판별 분석의 내부 동작 방식
- 5.2.3 산포 행렬 계산
- 5.2.4 새로운 특성 부분 공간을 위해 선형 판별 벡터 선택
- 5.2.5 새로운 특성 공간으로 샘플 투영
- 5.2.6 사이킷런의 LDA
- 5.3 커널 PCA를 사용하여 비선형 매핑
- 5.3.1 커널 함수와 커널 트릭
- 5.3.2 파이썬으로 커널 PCA 구현
- 5.3.3 새로운 데이터 포인트 투영
- 5.3.4 사이킷런의 커널 PCA
- 5.4 요약
- 6장 모델 평가와 하이퍼파라미터 튜닝의 모범 사례
- 6.1 파이프라인을 사용한 효율적인 워크플로
- 6.1.1 위스콘신 유방암 데이터셋
- 6.1.2 파이프라인으로 변환기와 추정기 연결
- 6.2 k-겹 교차 검증을 사용한 모델 성능 평가
- 6.2.1 홀드아웃 방법
- 6.2.2 k-겹 교차 검증
- 6.3 학습 곡선과 검증 곡선을 사용한 알고리즘 디버깅
- 6.3.1 학습 곡선으로 편향과 분산 문제 분석
- 6.3.2 검증 곡선으로 과대적합과 과소적합 조사
- 6.4 그리드 서치를 사용한 머신 러닝 모델 세부 튜닝
- 6.4.1 그리드 서치를 사용한 하이퍼파라미터 튜닝
- 6.4.2 중첩 교차 검증을 사용한 알고리즘 선택
- 6.5 여러 가지 성능 평가 지표
- 6.5.1 오차 행렬
- 6.5.2 분류 모델의 정밀도와 재현율 최적화
- 6.5.3 ROC 곡선 그리기
- 6.5.4 다중 분류의 성능 지표
- 6.6 불균형한 클래스 다루기
- 6.7 요약
- 7장 다양한 모델을 결합한 앙상블 학습
- 7.1 앙상블 학습
- 7.2 다수결 투표를 사용한 분류 앙상블
- 7.2.1 간단한 다수결 투표 분류기 구현
- 7.2.2 다수결 투표 방식을 사용하여 예측 만들기
- 7.2.3 앙상블 분류기의 평가와 튜닝
- 7.3 배깅: 부트스트랩 샘플링을 통한 분류 앙상블
- 7.3.1 배깅 알고리즘의 작동 방식
- 7.3.2 배깅으로 Wine 데이터셋의 샘플 분류
- 7.4 약한 학습기를 이용한 에이다부스트
- 7.4.1 부스팅 작동 원리
- 7.4.2 사이킷런에서 에이다부스트 사용
- 7.5 요약
- 8장 감성 분석에 머신 러닝 적용
- 8.1 텍스트 처리용 IMDb 영화 리뷰 데이터 준비
- 8.1.1 영화 리뷰 데이터셋 구하기
- 8.1.2 영화 리뷰 데이터셋을 더 간편한 형태로 전처리
- 8.2 BoW 모델 소개
- 8.2.1 단어를 특성 벡터로 변환
- 8.2.2 tf-idf를 사용하여 단어 적합성 평가
- 8.2.3 텍스트 데이터 정제
- 8.2.4 문서를 토큰으로 나누기
- 8.3 문서 분류를 위한 로지스틱 회귀 모델 훈련
- 8.4 대용량 데이터 처리: 온라인 알고리즘과 외부 메모리 학습
- 8.5 잠재 디리클레 할당을 사용한 토픽 모델링
- 8.5.1 LDA를 사용한 텍스트 문서 분해
- 8.5.2 사이킷런의 LDA
- 8.6 요약
- 9장 웹 애플리케이션에 머신 러닝 모델 내장
- 9.1 학습된 사이킷런 추정기 저장
- 9.2 데이터를 저장하기 위해 SQLite 데이터베이스 설정
- 9.3 플라스크 웹 애플리케이션 개발
- 9.3.1 첫 번째 플라스크 애플리케이션
- 9.3.2 폼 검증과 화면 출력
- 9.4 영화 리뷰 분류기를 웹 애플리케이션으로 만들기
- 9.4.1 파일과 폴더: 디렉터리 구조 살펴보기
- 9.4.2 메인 애플리케이션 app.py 구현
- 9.4.3 리뷰 폼 구성
- 9.4.4 결과 페이지 템플릿 만들기
- 9.5 공개 서버에 웹 애플리케이션 배포
- 9.5.1 PythonAnywhere 계정 만들기
- 9.5.2 영화 분류 애플리케이션 업로드
- 9.5.3 영화 분류기 업데이트
- 9.6 요약
- 10장 회귀 분석으로 연속적 타깃 변수 예측
- 10.1 선형 회귀
- 10.1.1 단순 선형 회귀
- 10.1.2 다중 선형 회귀
- 10.2 주택 데이터셋 탐색
- 10.2.1 데이터프레임으로 주택 데이터셋 읽기
- 10.2.2 데이터셋의 중요 특징 시각화
- 10.2.3 상관관계 행렬을 사용한 분석
- 10.3 최소 제곱 선형 회귀 모델 구현
- 10.3.1 경사 하강법으로 회귀 모델의 파라미터 구하기
- 10.3.2 사이킷런으로 회귀 모델의 가중치 추정
- 10.4 RANSAC을 사용하여 안정된 회귀 모델 훈련
- 10.5 선형 회귀 모델의 성능 평가
- 10.6 회귀에 규제 적용
- 10.7 선형 회귀 모델을 다항 회귀로 변환
- 10.7.1 사이킷런을 사용하여 다항식 항 추가
- 10.7.2 주택 데이터셋을 사용한 비선형 관계 모델링
- 10.8 랜덤 포레스트를 사용하여 비선형 관계 다루기
- 10.8.1 결정 트리 회귀
- 10.8.2 랜덤 포레스트 회귀
- 10.9 요약
- 11장 레이블되지 않은 데이터 다루기: 군집 분석
- 11.1 k-평균 알고리즘을 사용하여 유사한 객체 그룹핑
- 11.1.1 사이킷런을 사용한 k-평균 군집
- 11.1.2 k- 평균 ++로 초기 클러스터 센트로이드를 똑똑하게 할당
- 11.1.3 직접 군집 vs 간접 군집
- 11.1.4 엘보우 방법을 사용하여 최적의 클러스터 개수 찾기
- 11.1.5 실루엣 그래프로 군집 품질을 정량화
- 11.2 계층적인 트리로 클러스터 조직화
- 11.2.1 상향식으로 클러스터 묶기
- 11.2.2 거리 행렬에서 계층 군집 수행
- 11.2.3 히트맵에 덴드로그램 연결
- 11.2.4 사이킷런에서 병합 군집 적용
- 11.3 DBSCAN을 사용하여 밀집도가 높은 지역 찾기
- 11.4 요약
- 12장 다층 인공 신경망을 밑바닥부터 구현
- 12.1 인공 신경망으로 복잡한 함수 모델링
- 12.1.1 단일층 신경망 요약
- 12.1.2 다층 신경망 구조
- 12.1.3 정방향 계산으로 신경망 활성화 출력 계산
- 12.2 손글씨 숫자 분류
- 12.2.1 MNIST 데이터셋 구하기
- 12.2.2 다층 퍼셉트론 구현
- 12.3 인공 신경망 훈련
- 12.3.1 로지스틱 비용 함수 계산
- 12.3.2 역전파 알고리즘 이해
- 12.3.3 역전파 알고리즘으로 신경망 훈련
- 12.4 신경망의 수렴
- 12.5 신경망 구현에 관한 몇 가지 첨언
- 12.6 요약
- 13장 텐서플로를 사용한 신경망 훈련
- 13.1 텐서플로와 훈련 성능
- 13.1.1 성능 문제
- 13.1.2 텐서플로란?
- 13.1.3 텐서플로 학습 순서
- 13.2 텐서플로 처음 시작하기
- 13.2.1 텐서플로 설치
- 13.2.2 텐서플로에서 텐서 만들기
- 13.2.3 텐서의 데이터 타입과 크기 조작
- 13.2.4 텐서에 수학 연산 적용
- 13.2.5 split( ), stack( ), concat( ) 함수
- 13.3 텐서플로 데이터셋 API(tf.data)를 사용하여 입력 파이프라인 구축
- 13.3.1 텐서에서 텐서플로 데이터셋 만들기
- 13.3.2 두 개의 텐서를 하나의 데이터셋으로 연결
- 13.3.3 shuffle( ), batch( ), repeat( ) 메서드
- 13.3.4 로컬 디스크에 있는 파일에서 데이터셋 만들기
- 13.3.5 tensorflow_datasets 라이브러리에서 데이터셋 로드
- 13.4 텐서플로로 신경망 모델 만들기
- 13.4.1 텐서플로 케라스 API(tf.keras)
- 13.4.2 선형 회귀 모델 만들기
- 13.4. 3 .compile( )과 .fit( ) 메서드를 사용한 모델 훈련
- 13.4.4 붓꽃 데이터셋을 분류하는 다층 퍼셉트론 만들기
- 13.4.5 테스트 데이터셋에서 훈련된 모델 평가
- 13.4.6 훈련된 모델 저장하고 복원
- 13.5 다층 신경망의 활성화 함수 선택
- 13.5.1 로지스틱 함수 요약
- 13.5.2 소프트맥스 함수를 사용한 다중 클래스 확률 예측
- 13.5.3 하이퍼볼릭 탄젠트로 출력 범위 넓히기
- 13.5.4 렐루 활성화 함수
- 13.6 요약
- 14장 텐서플로 구조 자세히 알아보기
- 14.1 텐서플로의 주요 특징
- 14.2 텐서플로의 계산 그래프: 텐서플로 v2로 이전
- 14.2.1 계산 그래프 이해
- 14.2.2 텐서플로 v1.x에서 그래프 만들기
- 14.2.3 텐서플로 v2로 이전
- 14.2.4 입력 데이터를 모델에 주입: 텐서플로 v1.x 스타일
- 14.2.5 입력 데이터를 모델에 주입: 텐서플로 v2 스타일
- 14.2.6 함수 데코레이터로 계산 성능 높이기
- 14.3 모델 파라미터를 저장하고 업데이트하기 위한 텐서플로 변수 객체
- 14.4 자동 미분과 GradientTape로 그레이디언트 계산
- 14.4.1 훈련 가능한 변수에 대한 손실의 그레이디언트 계산
- 14.4.2 훈련하지 않는 변수에 대한 그레이디언트 계산
- 14.4.3 여러 개의 그레이디언트 계산
- 14.5 케라스 API를 사용하여 일반적인 구조 구현하기
- 14.5.1 XOR 분류 문제 풀어 보기
- 14.5.2 케라스 함수형 API로 유연성이 높은 모델 만들기
- 14.5.3 케라스의 Model 클래스 기반으로 모델 만들기
- 14.5.4 사용자 정의 케라스 층 만들기
- 14.6 텐서플로 추정기
- 14.6.1 특성 열 사용
- 14.6.2 사전에 준비된 추정기로 머신 러닝 수행
- 14.6.3 추정기를 사용하여 MNIST 손글씨 숫자 분류
- 14.6.4 케라스 모델에서 추정기 만들기
- 14.7 요약
- 15장 심층 합성곱 신경망으로 이미지 분류
- 15.1 합성곱 신경망의 구성 요소
- 15.1.1 CNN과 특성 계층 학습
- 15.1.2 이산 합성곱 수행
- 15.1.3 서브샘플링
- 15.2 기본 구성 요소를 사용하여 심층 합성곱 신경망 구성
- 15.2.1 여러 개의 입력 또는 컬러 채널 다루기
- 15.2.2 드롭아웃으로 신경망 규제
- 15.2.3 분류를 위한 손실 함수
- 15.3 텐서플로를 사용하여 심층 합성곱 신경망 구현
- 15.3.1 다층 CNN 구조
- 15.3.2 데이터 적재와 전처리
- 15.3.3 텐서플로 케라스 API를 사용하여 CNN 구현
- 15.4 합성곱 신경망을 사용하여 얼굴 이미지의 성별 분류
- 15.4.1 CelebA 데이터셋 로드
- 15.4.2 이미지 변환과 데이터 증식
- 15.4.3 CNN 성별 분류기 훈련
- 15.5 요약
- 16장 순환 신경망으로 순차 데이터 모델링
- 16.1 순차 데이터 소개
- 16.1.1 순차 데이터 모델링: 순서를 고려한다
- 16.1.2 시퀀스 표현
- 16.1.3 시퀀스 모델링의 종류
- 16.2 시퀀스 모델링을 위한 RNN
- 16.2.1 RNN 반복 구조 이해
- 16.2.2 RNN의 활성화 출력 계산
- 16.2.3 은닉 순환과 출력 순환
- 16.2.4 긴 시퀀스 학습의 어려움
- 16.2.5 LSTM 셀
- 16.3 텐서플로로 시퀀스 모델링을 위한 RNN 구현
- 16.3.1 첫 번째 프로젝트: IMDb 영화 리뷰의 감성 분석
- 16.3.2 두 번째 프로젝트: 텐서플로로 글자 단위 언어 모델 구현
- 16.4 트랜스포머 모델을 사용한 언어 이해
- 16.4.1 셀프 어텐션 메커니즘 이해
- 16.4.2 멀티-헤드 어텐션과 트랜스포머 블록
- 16.5 요약
- 17장 새로운 데이터 합성을 위한 생성적 적대 신경망
- 17.1 생성적 적대 신경망 소개
- 17.1.1 오토인코더
- 17.1.2 새로운 데이터 합성을 위한 생성 모델
- 17.1.3 GAN으로 새로운 샘플 생성
- 17.1.4 GAN의 생성자와 판별자 손실 함수 이해
- 17.2 밑바닥부터 GAN 모델 구현
- 17.2.1 구글 코랩에서 GAN 모델 훈련
- 17.2.2 생성자와 판별자 신경망 구현
- 17.2.3 훈련 데이터셋 정의
- 17.2.4 GAN 모델 훈련하기
- 17.3 합성곱 GAN과 바서슈타인 GAN으로 합성 이미지 품질 높이기
- 17.3.1 전치 합성곱
- 17.3.2 배치 정규화
- 17.3.3 생성자와 판별자 구현
- 17.3.4 두 분포 사이의 거리 측정
- 17.3.5 GAN에 EM 거리 사용
- 17.3.6 그레이디언트 페널티
- 17.3.7 WGAN-GP로 DCGAN 모델 훈련
- 17.3.8 모드 붕괴
- 17.4 다른 GAN 애플리케이션
- 17.5 요약
- 18장 강화 학습으로 복잡한 환경에서 의사 결정
- 18.1 경험에서 배운다
- 18.1.1 강화 학습 이해
- 18.1.2 강화 학습 시스템의 에이전트-환경 인터페이스 정의
- 18.2 강화 학습의 기초 이론
- 18.2.1 마르코프 결정 과정
- 18.2.2 마르코프 결정 과정의 수학 공식
- 18.2.3 강화 학습 용어: 대가, 정책, 가치 함수
- 18.2.4 벨먼 방정식을 사용한 동적 계획법
- 18.3 강화 학습 알고리즘
- 18.3.1 동적 계획법
- 18.3.2 몬테카를로를 사용한 강화 학습
- 18.3.3 시간 차 학습
- 18.4 첫 번째 강화 학습 알고리즘 구현
- 18.4.1 OpenAI 짐 툴킷 소개
- 18.4.2 Q-러닝으로 그리드 월드 문제 풀기
- 18.4.3 심층 Q-러닝
- 18.5 전체 요약
- 부록 A 윈도에 아나콘다, 사이킷런, 텐서플로 설치
- A.1 아나콘다 설치
- A.2 사이킷런, 텐서플로 설치
- A.3 예제 노트북 실행
- A.4 주피터 노트북 뷰어와 구글 코랩 사용