파이썬 라이브러리로 배우는 머신 러닝 핵심 원리
간단한 수학부터 머신 러닝 실무 기법까지!
파이썬 라이브러리로 배우는 머신 러닝 핵심 원리
머신 러닝은 현재 IT 산업에서 가장 인기 있는 검색어 중 하나다. 하지만 머신 러닝이 무엇인지, 어떻게 작동하는지 제대로 이해하지 못하면 길을 잃기 쉽다. 그렇다면 어떻게 학습해야 할까? 저자는 오랫동안 다양한 사람들에게 머신 러닝을 가르치면서 효과적인 학습 방법을 고안했고, 그대로 책에 담았다. 이 책은 그림과 스토리로 개념을 설명하고 바로 파이썬 코드로 구현하는 것에서 시작한다. 수학적 증명을 깊게 파고들거나 개념을 설명하기 위해 수식에 의존하지 않으며, 필요한 수학은 고등학교 수준으로 그때마다 첨가하여 설명한다. 또한, 바닥부터 모델을 구현하지 않고, 넘파이, 판다스, 사이킷런처럼 잘 구현된 강력한 파이썬 라이브러리를 사용해 실용적으로 접근한다. 개념과 기술을 잘 보여주는 양질의 예제를 직접 실행하며 머신 러닝 개념을 이해할 수 있다. 머신 러닝 기본 개념부터 특성 엔지니어링, 하이퍼파라미터 튜닝 등 실무 기법까지 머신 러닝을 제대로 익히고 싶은 모든 분에게 추천한다.
1부 첫 번째 단계
1장 학습이란?
1.1 컴퓨터는 학습할 수 있을까?
1.2 범위, 용어, 예측, 데이터
__1.2.1 특성
__1.2.2 타깃 값과 예측치
1.3 머신 러닝에 기계 모델 집어넣기
1.4 학습 시스템 사례
__1.4.1 카테고리 예측: 분류 모델 사례
__1.4.2 값 예측: 회귀 모델 사례
1.5 학습 시스템 평가
__1.5.1 정확도
__1.5.2 자원 소모
1.6 학습 시스템 구축 프로세스
1.7 학습의 현실과 가정
1.8 마무리
1.8.1 앞으로
1.8.2 참고 사항
2장 기술적 배경
2.1 환경 설정
2.2 수학적 언어의 필요성
2.3 머신 러닝을 위한 소프트웨어
2.4 확률
__2.4.1 단순 사건
__2.4.2 독립
__2.4.3 조건부 확률
__2.4.4 분포
2.5 선형 결합, 가중 합, 점곱
__2.5.1 가중 평균
__2.5.2 제곱합
__2.5.3 오차 제곱합
2.6 기하학적 관점: 공간상 포인트
__2.6.1 직선
__2.6.2 직선을 넘어서
2.7 수식 표현과 +1 트릭
2.8 정해진 틀을 깨는 비선형성
2.9 NumPy vs. 수학의 모든 것
2.9.1 1차원 vs. 2차원
2.10 부동소수점 문제
2.11 마무리
2.11.1 요약
2.11.2 참고 사항
3장 범주 예측: 분류 문제 시작
3.1 분류 문제
3.2 간단한 분류 데이터셋
3.3 학습과 테스트: 시험만을 위해 강의하지 말자
3.4 평가: 시험지 채점
3.5 간단한 분류 모델 #1: 최근접 이웃, 먼 거리 관계, 가정
__3.5.1 유사도 정의
__3.5.2 k-최근접 이웃에서의 k
__3.5.3 답 조합
__3.5.4 k-NN, 파라미터와 논파라메트릭 방법들
__3.5.5 k-nn 분류 모델 생성
3.6 간단한 분류 모델 #2: 나이브 베이즈, 확률, 깨진 약속들
3.7 분류 모델의 간단한 평가
__3.7.1 학습 성능
__3.7.2 분류 문제에서의 자원 활용
__3.7.3 독립적인 자원 평가
3.8 마무리
__3.8.1 주의 사항: 한계점과 아직 해결되지 않은 이슈들
__3.8.2 요약
__3.8.3 참고 사항
__3.8.4 연습 문제
4장 수치형 값 예측: 회귀 모델
4.1 간단한 회귀 데이터셋
4.2 최근접 이웃 회귀와 요약 통계량
__4.2.1 중앙 측정: 중앙값과 평균
__4.2.2 k-NN 회귀 모델 생성
4.3 선형 회귀와 오차
__4.3.1 지구는 평평하지 않다: 경사가 필요한 이유
__4.3.2 기울여 보기
__4.3.3 선형 회귀
4.4 최적화: 최적의 답 선택
__4.4.1 무작위 추측
__4.4.2 무작위 스텝
__4.4.3 똑똑한 스텝
__4.4.4 계산된 지름길
__4.4.5 선형 회귀 적용 사례
4.5 회귀 모델의 간단한 평가와 비교
__4.5.1 평균 제곱근 오차
__4.5.2 학습 성능
__4.5.3 회귀 모델의 자원 활용
4.6 마무리
__4.6.1 한계점과 아직 해결되지 않은 이슈들
__4.6.2 요약
__4.6.3 참고 사항
__4.6.4 연습 문제
2부 평가
5장 학습 모델 평가 및 비교
5.1 평가와 과유불급
5.2 학습 단계 관련 용어
__5.2.1 공장 기계
__5.2.2 기술적으로 이야기하자면
5.3 뭔가 잘못되었다: 과대적합과 과소적합
__5.3.1 합성 데이터와 선형 회귀
__5.3.2 모델 복잡도를 수동으로 조작
__5.3.3 골디락스: 과대적합, 과소적합 그리고 ‘딱 적당한 상태’ 시각화
__5.3.4 단순함
__5.3.5 과대적합에 대해 꼭 기억할 점
5.4 오차부터 비용까지
__5.4.1 손실
__5.4.2 비용
__5.4.3 점수
5.5 (리)샘플링: 소에서 대 생성
__5.5.1 교차 검증
__5.5.2 층화
__5.5.3 반복적 훈련-테스트 분리
__5.5.4 더 나은 길과 뒤섞기
__5.5.5 LOOCV 교차 검증
5.6 쪼개어 보기: 편향과 분산
__5.6.1 데이터의 분산
__5.6.2 모델의 분산
__5.6.3 모델의 편향
__5.6.4 모두 다 함께
__5.6.5 편향-분산 상충 관계의 예시
5.7 시각적 평가와 비교
__5.7.1 학습 곡선: 데이터는 얼마나 많이 필요할까?
__5.7.2 복잡도 곡선
5.8 교차 검증으로 학습 모델 비교
5.9 마무리
__5.9.1 요약
__5.9.2 참고 사항
__5.9.3 연습 문제
6장 분류 모델 평가
6.1 베이스라인 분류 모델
6.2 정확도를 넘어: 분류 모델을 위한 척도
__6.2.1 혼동 행렬에서 혼돈 없애기
__6.2.2 틀릴 수 있는 경우
__6.2.3 혼동 행렬에 기반한 척도
__6.2.4 혼동 행렬 코딩
__6.2.5 다중 클래스 다루기: 다중 클래스 평균
__6.2.6 F1
6.3 ROC 곡선
__6.3.1 ROC의 패턴
__6.3.2 이진 ROC
__6.3.3 AUC 곡선
__6.3.4 다중 클래스 모델, 일대다 그리고 ROC
6.4 또 다른 방법: 일대일
__6.4.1 다중 클래스 AUC 파트 2: 단일 값을 위한 퀘스트
6.5 정밀도-재현율 커브
__6.5.1 정밀도-재현율 상충 관계에 대한 노트
__6.5.2 정밀도-재현율 커브 생성
6.6 누적 반응과 리프트 곡선
6.7 조금 더 복잡한 분류 모델 평가 방법
__6.7.1 이진 분류
__6.7.2 새로운 다중 클래스 문제
6.8 마무리
__6.8.1 요약
__6.8.2 참고 사항
__6.8.3 연습 문제
7장 회귀 모델 평가
7.1 베이스라인 회귀 모델
7.2 회귀 모델의 추가 척도
__7.2.1 커스텀 평가 척도 만들기
__7.2.2 기타 기본 회귀 모델 척도
__7.2.3 R2
7.3 잔차 플롯
__7.3.1 오차 플롯
__7.3.2 잔차 플롯
7.4 정규화 살펴보기
7.5 고도화된 회귀 모델 평가
__7.5.1 여러 척도에 대한 교차 검증 결과
__7.5.2 교차 검증 결과 요약
__7.5.3 잔차
7.6 마무리
__7.6.1 요약
__7.6.2 참고 사항
__7.6.3 연습 문제
3부 더 많은 학습 방법과 개념
8장 더 많은 분류 방법
8.1 분류 문제 다시 보기
8.2 결정 트리
__8.2.1 트리 알고리즘
__8.2.2 돌려 보자: 결정 트리
__8.2.3 결정 트리의 편향과 분산
8.3 서포트 벡터 분류 모델
__8.3.1 SVC 실행
__8.3.2 SVC의 편향과 분산
8.4 로지스틱 회귀
__8.4.1 도박 승산
__8.4.2 확률과 승산, 로그- 승산
__8.4.3 무작정 해 보기: 로지스틱 회귀
__8.4.4 로지스틱 회귀: 괴상한 특성
8.5 판별 분석
__8.5.1 공분산
__8.5.2 방법론
__8.5.3 DA 실행
8.6 가정, 편향 그리고 분류 모델
8.7 분류 모델 비교
__8.7.1 Digits
8.8 마무리
__8.8.1 요약
__8.8.2 참고 사항
__8.8.3 연습 문제
9장 더 많은 회귀 방법
9.1 선형 회귀: 정규화
__9.1.1 정규화 회귀 실행
9.2 서포트 벡터 회귀
__9.2.1 힌지 손실
__9.2.2 선형 회귀에서 정규화 회귀, 그리고 서포트 벡터 회귀까지
__9.2.3 그냥 해 보기 - SVR 스타일
9.3 조각별 상수 회귀
__9.3.1 조각별 상수 회귀 구현
__9.3.2 모델 구현에 대한 일반적인 조언
9.4 회귀 트리
__9.4.1 트리로 회귀 실행
9.5 세 가지 회귀 모델 비교
9.6 마무리
__9.6.1 요약
__9.6.2 참고 사항
__9.6.3 연습 문제
10장 수동 특성 엔지니어링: 데이터 조작
10.1 특성 엔지니어링 용어와 배경
__10.1.1 왜 해야 하나?
__10.1.2 특성 엔지니어링은 언제 해야 하나?
__10.1.3 특성 엔지니어링은 어떻게 발생하나?
10.2 특성 선별과 데이터 축소: 쓰레기 골라 내기
10.3 특성 스케일링
10.4 이산화
10.5 범주형 코딩
__10.5.1 다른 방식의 코딩과 사라진 인터셉트의 흥미로운 사건
10.6 관계와 상호 작용
__10.6.1 수동 특성 생성
__10.6.2 인터랙션
__10.6.3 트랜스포머로 특성 추가
10.7 타깃 조작
__10.7.1 입력 공간 조작
__10.7.2 타깃 조작
10.8 마무리
__10.8.1 요약
__10.8.2 참고 사항
__10.8.3 연습 문제
11장 하이퍼파라미터 튜닝과 파이프라인
11.1 모델, 파라미터, 하이퍼파라미터
11.2 하이퍼파라미터 튜닝
__11.2.1 컴퓨터 과학과 학습 용어에 대한 참고 사항
__11.2.2 완전 검색 사례
__11.2.3 무작위성으로 건초더미에서 바늘 찾기
11.3 재귀적인 토끼 굴로 내려가기: 중첩된 교차 검증
__11.3.1 기본 교차 검증
__11.3.2 그리드서치 모델
__11.3.3 교차 검증 안에 교차 검증
__11.3.4 중첩 교차 검증에 대한 코멘트
11.4 파이프라인
__11.4.1 간단한 파이프라인
__11.4.2 조금 더 복잡한 파이프라인
11.5 파이프라인과 튜닝을 함께
11.6 마무리
__11.6.1 요약
__11.6.2 참고 사항
__11.6.3 연습 문제
4부 복잡도 더하기
12장 학습 모델 조합
12.1 앙상블
12.2 투표 앙상블
12.3 배깅과 랜덤 포레스트
__12.3.1 부트스트래핑
__12.3.2 부트스트래핑에서 배깅으로
__12.3.3 랜덤 포레스트
12.4 부스팅
__12.4.1 부스팅 디테일
12.5 트리 앙상블 방법 비교
12.6 마무리
__12.6.1 요약
__12.6.2 참고 사항
__12.6.3 연습 문제
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 커널 SVC: SVM
__13.2.5 SVM에 관한 노트와 예제
13.3 주성분 분석: 비지도 기법
__13.3.1 준비: 중심 이동
__13.3.2 다른 최적의 직선 찾기
__13.3.3 첫 PCA
__13.3.4 PCA 계산
__13.3.5 피날레: 일반적인 PCA에 관한 노트
__13.3.6 커널 PCA와 매니폴드 방법들
13.4 마무리
__13.4.1 요약
__13.4.2 참고 사항
__13.4.3 연습 문제
14장 도메인별 특성 엔지니어링: 도메인에 최적화된 학습
14.1 텍스트 처리
__14.1.1 텍스트 인코딩
__14.1.2 텍스트 학습 사례
14.2 클러스터링
__14.2.1 k-평균 클러스터링
14.3 이미지 처리
__14.3.1 백-오브-비주얼-워즈
__14.3.2 이미지 데이터
__14.3.3 엔드-투-엔드 시스템
__14.3.4 BoVW 트랜스포머 코드
14.4 마무리
__14.4.1 요약
__14.4.2 참고 사항
__14.4.3 연습 문제
15장 연결, 확장 그리고 앞으로의 방향
15.1 최적화
15.2 선형 회귀 구현
__15.2.1 선형 회귀의 시각적 이해
15.3 로지스틱 회귀 구현
__15.3.1 로지스틱 회귀와 제로-원 코딩
__15.3.2 로지스틱 회귀와 플러스원 마이너스원 코딩
__15.3.3 로직스틱 회귀의 시각적 이해
15.4 SVM 구현
15.5 인공신경망
__15.5.1 인공신경망 관점에서 보는 선형 회귀
__15.5.2 인공신경망 관점에서 보는 로지스틱 회귀
__15.5.3 기본 인공신경망을 넘어서
15.6 확률적 그래픽 모델
__15.6.1 샘플링
__15.6.2 PGM 관점에서 보는 선형 회귀
__15.6.3 PGM 관점에서 보는 로지스틱 회귀
15.7 마무리
__15.7.1 요약
__15.7.2 참고 사항
__15.7.3 연습 문제
부록 A nlwpy.py 살펴보기
부록 B 환경 설정
ㆍ지은이 마크페너
ㆍ옮긴이 황준식
독자의견 남기기