서브메뉴

본문

머신러닝 엔지니어링 (데이터 수집부터 특징 공학, 모델 평가, 배포, 유지보수까지)
머신러닝 엔지니어링 (데이터 수집부터 특징 공학, 모델 평가, 배포, 유지보수까지)
저자 : 안드리 부르코프
출판사 : 제이펍
출판년 : 2021
ISBN : 9791191600452

책소개


머신러닝 설루션 구축 모범 사례와 설계 패턴이 가득한 책!

11개 언어로 출판된 베스트셀러 『The Hundred-Page Machine Learning Book』의 저자 안드리 부르코프가 15년간 인공지능 관련 문제를 해결한 경험과 함께, 업계 리더들의 출판 경험을 바탕으로 이 책을 집필하였다.

목차


추천사 xii
옮긴이 머리말 xv
머리말 xvii
베타리더 후기 xix

CHAPTER 01 도입 1

1.1 표기법 및 정의 2
1.1.1 자료 구조 2 / 1.1.2 대문자 시그마 표기법 3
1.2 머신러닝이란? 4
1.2.1 지도학습 4 / 1.2.2 비지도학습 6
1.2.3 준지도학습 7 / 1.2.4 강화학습 7
1.3 데이터와 머신러닝 용어 8
1.3.1 직접적/간접적으로 사용하는 데이터 8 / 1.3.2 원시 데이터와 깔끔한 데이터 9
1.3.3 훈련 및 홀드아웃 세트 10 / 1.3.4 기준점 11
1.3.5 머신러닝 파이프라인 11 / 1.3.6 매개변수와 초매개변수 12
1.3.7 분류와 회귀 12 / 1.3.8 모델 기반 학습과 인스턴스 기반 학습 13
1.3.9 얕은 학습과 딥러닝 13 / 1.3.10 훈련과 채점 14
1.4 머신러닝을 사용해야 할 때 14
1.4.1 문제가 너무 복잡해서 코딩으로 해결할 수 없을 때 14
1.4.2 문제가 지속적으로 변할 때 15
1.4.3 지각 문제일 때 15
1.4.4 연구되지 않은 현상일 때 16
1.4.5 문제의 목적이 단순할 때 16
1.4.6 비용 효율적인 경우 17
1.5 머신러닝을 사용하지 말아야 할 때 17
1.6 머신러닝 엔지니어링이란? 18
1.7 머신러닝 프로젝트 수명주기 19
1.8 요약 21

CHAPTER 02 프로젝트 시작 전 23

2.1 머신러닝 프로젝트의 우선순위 결정 24
2.1.1 머신러닝의 영향 24 / 2.1.2 머신러닝의 비용 24
2.2 머신러닝 프로젝트의 복잡도 추정 26
2.2.1 미리 알 수 없는 것 26 / 2.2.2 문제 단순화 27
2.2.3 비선형적 훈련 진행 27
2.3 머신러닝 프로젝트의 목표 정의 28
2.3.1 모델이 할 수 있는 작업 28 / 2.3.2 성공적인 모델의 속성 29
2.4 머신러닝팀 구성 30
2.4.1 두 가지 개발 문화 30 / 2.4.2 머신러닝팀의 구성원 31
2.5 머신러닝 프로젝트가 실패하는 이유 32
2.5.1 숙련된 개발자 부족 32 / 2.5.2 경영진의 지원 부족 33
2.5.3 데이터 인프라 부족 34 / 2.5.4 데이터 레이블링의 어려움 34
2.5.5 고립된 조직과 협업 부족 35 / 2.5.6 기술적으로 실행 불가능한 프로젝트 35
2.5.7 기술팀과 비즈니스팀 간의 소통 부족 35
2.6 요약 36

CHAPTER 03 데이터 수집 및 준비 39

3.1 데이터에 대한 질문 40
3.1.1 데이터를 구할 수 있는가? 40 / 3.1.2 데이터 세트의 크기가 충분히 큰가? 41
3.1.3 데이터를 사용할 수 있나? 43 / 3.1.4 데이터를 이해할 수 있나? 45
3.1.5 데이터를 신뢰할 수 있나? 45
3.2 일반적인 데이터 관련 문제 47
3.2.1 높은 비용 47 / 3.2.2 품질 불량 49 / 3.2.3 잡음 49 / 3.2.4 편향 50
3.2.5 낮은 예측력 57 / 3.2.6 오래된 견본 58 / 3.2.7 특잇값 59 / 3.2.8 데이터 누출 60
3.3 좋은 데이터란? 61
3.3.1 좋은 데이터는 유익함 61
3.3.2 좋은 데이터는 넓은 적용 범위를 가짐 61
3.3.3 좋은 데이터는 실제 입력을 반영함 61
3.3.4 좋은 데이터는 편향되지 않음 62
3.3.5 좋은 데이터는 피드백 루프의 결과가 아님 62
3.3.6 좋은 데이터의 레이블은 일관됨 62
3.3.7 좋은 데이터는 충분히 큼 63
3.3.8 좋은 데이터 요약 63
3.4 상호 작용 데이터 처리 64
3.5 데이터 누출의 원인 64
3.5.1 목표가 특징의 함수인 경우 65 / 3.5.2 목표가 특징에 숨어 있는 경우 65
3.5.3 미래를 반영하는 특징 66
3.6 데이터 분할 67
3.6.1 분할 중 누출 69
3.7 결측 속성 처리 70
3.7.1 결측값 대체 기술 70 / 3.7.2 대체 중 누출 72
3.8 데이터 증강 72
3.8.1 이미지 데이터 증강 73 / 3.8.2 텍스트 데이터 증강 74
3.9 불균형 데이터 처리 76
3.9.1 오버샘플링 77 / 3.9.2 언더샘플링 77
3.9.3 하이브리드 전략 78
3.10 데이터 샘플링 전략 79
3.10.1 단순 랜덤 샘플링 79 / 3.10.2 체계적인 샘플링 80
3.10.3 계층화된 샘플링 80
3.11 데이터 저장 81
3.11.1 데이터 형식 82 / 3.11.2 데이터 저장소 레벨 83
3.11.3 데이터 버전 관리 85 / 3.11.4 문서화와 메타데이터 87
3.11.5 데이터 수명주기 88
3.12 데이터 처리 모범 사례 88
3.12.1 재현성 88 / 3.12.2 데이터 우선, 알고리즘은 그 다음 89
3.13 요약 89

CHAPTER 04 특징 공학 93

4.1 특징 공학을 사용하는 이유 94
4.2 특징 공학을 사용하는 방법 95
4.2.1 텍스트에 대한 특징 공학 95 / 4.2.2 단어 가방의 작동 원리 98
4.2.3 범주형 특징을 숫자로 변환 98 / 4.2.4 특징 해싱 101
4.2.5 주제 모델링 102 / 4.2.6 시계열 특징 105 / 4.2.7 창의력 활용 108
4.3 특징 쌓기 108
4.3.1 특징 벡터 쌓기 109 / 4.3.2 개별 특징 쌓기 109
4.4 좋은 특징의 특성 111
4.4.1 높은 예측력 111 / 4.4.2 빠른 계산 능력 111 / 4.4.3 신뢰성 111
4.4.4 비상관성 112 / 4.4.5 기타 특성 112
4.5 특징 선택 113
4.5.1 긴 꼬리 자르기 113 / 4.5.2 보루타 114
4.5.3 L1-정규화 117 / 4.5.4 과제별 특징 선택 117
4.6 특징 합성 117
4.6.1 특징 이산화 118 / 4.6.2 관계형 데이터에서 특징 합성 119
4.6.3 데이터로부터 특징 합성 121 / 4.6.4 다른 특징으로부터 특징 합성 121
4.7 데이터를 통한 특징 학습 122
4.7.1 단어 임베딩 122 / 4.7.2 문서 임베딩 124
4.7.3 모든 객체에 대한 임베딩 125 / 4.7.4 임베딩 차원 선택 126
4.8 차원 축소 127
4.8.1 PCA를 통한 빠른 차원 축소 127 / 4.8.2 시각화를 위한 차원 축소 128
4.9 특징 스케일링 128
4.9.1 정규화 129 / 4.9.2 표준화 130
4.10 특징 공학에서 데이터 누출 131
4.10.1 잠재적인 문제 131 / 4.10.2 설루션 131
4.11 특징 저장과 문서화 131
4.11.1 스키마 파일 131 / 4.11.2 특징 저장소 133
4.12 특징 공학 모범 사례 135
4.12.1 여러 가지 간단한 특징 생성 135 / 4.12.2 기존 시스템 재사용 136
4.12.3 필요한 경우에만 식별자를 특징으로 사용 136 / 4.12.4 가능하면 크기를 줄인다 136
4.12.5 계수 사용은 신중하게 137 / 4.12.6 특징은 필요할 때 선택 138
4.12.7 코드 테스트는 주의 깊게 138 / 4.12.8 코드, 모델, 데이터의 동기화 상태 유지 139
4.12.9 특징 추출 코드 분리 139 / 4.12.10 모델과 특징 추출기를 함께 직렬화 139
4.12.11 특징값 기록 139
4.13 요약 140

CHAPTER 05 지도 모델 훈련(1부) 143

5.1 모델 개발을 시작하기 전에 144
5.1.1 스키마 적합성 검증 144 / 5.1.2 달성 가능한 성능 수준 정의 144
5.1.3 성능 지표 선택 145 / 5.1.4 올바른 기준선 선택 145
5.1.5 데이터를 세 개의 세트로 분할 148 / 5.1.6 지도학습의 전제 조건 149
5.2 머신러닝을 위한 레이블 표현 150
5.2.1 다중 클래스 분류 150 / 5.2.2 다중 레이블 분류 151
5.3 학습 알고리즘 선택 151
5.3.1 학습 알고리즘의 주요 특성 152 / 5.3.2 알고리즘 스팟 검사 153
5.4 파이프라인 구축 154
5.5 모델 성능 평가 156
5.5.1 회귀 분석의 성능 지표 156 / 5.5.2 분류의 성능 지표 157
5.5.3 순위를 위한 성능 지표 163
5.6 초매개변수 조정 167
5.6.1 그리드 검색 167 / 5.6.2 랜덤 검색 169
5.6.3 무작위-미세한 검색 170 / 5.6.4 기타 기술 170
5.6.5 교차 검증 170
5.7 얕은 모델 훈련 171
5.7.1 얕은 모델 훈련 전략 171 / 5.7.2 모델 저장 및 복원 172
5.8 편향-분산 간 절충 174
5.8.1 과소적합 174 / 5.8.2 과적합 175 / 5.8.3 절충 176
5.9 정규화 177
5.9.1 L1 및 L2 정규화 178 / 5.9.2 다른 형태의 정규화 179
5.10 요약 179

CHAPTER 06 지도 모델 훈련(2부) 183

6.1 심층 모델 훈련 전략 183
6.1.1 신경망 훈련 전략 184 / 6.1.2 성능 지표 및 비용 함수 185
6.1.3 매개변수 초기화 전략 188 / 6.1.4 최적화 알고리즘 189
6.1.5 학습률 감소 스케줄 192 / 6.1.6 정규화 194
6.1.7 네트워크 크기 검색 및 초매개변수 조정 195 / 6.1.8 다중 입력 처리 198
6.1.9 다중 출력 처리 198 / 6.1.10 전이 학습 199
6.2 모델 쌓기 201
6.2.1 앙상블 학습 유형 201 / 6.2.2 모델 쌓기 알고리즘 202
6.2.3 모델을 쌓을 때 데이터 누출 203
6.3 분포 이동 처리 204
6.3.1 분포 이동 유형 204 / 6.3.2 적대적 검증 204
6.4 불균형 데이터 세트 처리 205
6.4.1 클래스 가중치 205 / 6.4.2 다시 샘플링한 데이터 세트 앙상블 206
6.4.3 기타 기술 207
6.5 모델 교정 207
6.5.1 잘 교정된 모델 208 / 6.5.2 교정 기술 209
6.6 문제 해결 및 오류 분석 210
6.6.1 모델의 성능이 떨어지는 이유 210 / 6.6.2 반복적 모델 개선 211
6.6.3 오류 분석 211 / 6.6.4 복잡한 시스템의 오류 분석 213
6.6.5 부분 지표 사용 215 / 6.6.6 잘못된 레이블 수정 215
6.6.7 추가로 레이블링할 견본 찾기 216 / 6.6.8 딥러닝 문제 해결 216
6.7 모범 사례 218
6.7.1 좋은 모델 제공 218 / 6.7.2 검증된 오픈소스 활용 219
6.7.3 비즈니스별 성능 측정 최적화 219 / 6.7.4 밑바닥부터 개선 219
6.7.5 연속적인 정정 방지 220 / 6.7.6 연속된 모델은 주의해서 사용 220
6.7.7 효율적인 코드 작성, 컴파일, 병렬화 221
6.7.8 최신 데이터와 이전 데이터에 대한 테스트 223
6.7.9 똑똑한 알고리즘보다 더 많은 데이터가 좋음 223
6.7.10 새로운 데이터가 좀 더 좋은 특징보다 뛰어남 224
6.7.11 작은 진전의 수용 224
6.7.12 용이한 재현성 224
6.8 요약 225

CHAPTER 07 모델 평가 229

7.1 오프라인 평가와 온라인 평가 231
7.2 A/B 테스트 233
7.2.1 G-테스트 233 / 7.2.2 Z-테스트 236
7.2.3 결론 및 주의사항 238
7.3 멀티 암드 밴딧 239
7.4 모델 성능에 대한 통계적 한계 242
7.4.1 분류 오류에 대한 통계 구간 243 / 7.4.2 부트스트래핑 통계 구간 244
7.4.3 회귀를 위한 부트스트래핑 예측 구간 245
7.5 테스트 세트 적합성 평가 246
7.5.1 뉴런 커버리지 246 / 7.5.2 돌연변이 테스트 247
7.6 모델 특성 평가 248
7.6.1 강건성 248 / 7.6.2 공정성 249
7.7 요약 250

CHAPTER 08 모델 배포 253

8.1 정적 배포 254
8.2 사용자 기기에 동적 배포 255
8.2.1 모델 매개변수 배포 255 / 8.2.2 직렬화된 객체 배포 255
8.2.3 브라우저에 배포 256 / 8.2.4 장점과 단점 256
8.3 서버에 동적 배포 256
8.3.1 가상 머신에 배포 257 / 8.3.2 컨테이너에 배포 258
8.3.3 서버리스 배포 259 / 8.3.4 모델 스트리밍 261
8.4 배포 전략 264
8.4.1 단일 배포 264 / 8.4.2 자동 배포 265
8.4.3 카나리 배포 265 / 8.4.4 멀티 암드 밴딧 265
8.5 자동화된 배포, 버전 관리, 메타데이터 266
8.5.1 모델에 수반하는 항목 266 / 8.5.2 버전 동기화 266
8.5.3 모델 버전 관리를 위한 메타데이터 267
8.6 모델 배포 모범 사례 268
8.6.1 알고리즘 효율성 268 / 8.6.2 심층 모델 배포 272
8.6.3 캐싱 272 / 8.6.4 모델 및 코드에 대한 전달 형식 273
8.6.5 간단한 모델로 시작 275 / 8.6.6 외부인에 대한 테스트 276
8.7 요약 276

CHAPTER 09 모델 서빙, 모니터링, 유지보수 279

9.1 모델 서빙 런타임의 특성 280
9.1.1 보안 및 정확성 280 / 9.1.2 배포 용이성 280
9.1.3 모델 유효성 보장 281 / 9.1.4 복구 용이성 281
9.1.5 훈련/서빙 왜곡 방지 281 / 9.1.6 숨겨진 피드백 루프 방지 282
9.2 모델 서빙 모드 283
9.2.1 배치 모드 서빙 283 / 9.2.2 인간에 대한 주문형 서빙 283
9.2.3 머신에 대한 주문형 서빙 286
9.3 현실에서의 모델 서빙 287
9.3.1 오류에 대한 대비 287 / 9.3.2 오류 처리 288
9.3.3 변화에 대한 준비 및 대처 290 / 9.3.4 인간 본성에 대한 준비 및 대처 291
9.4 모델 모니터링 293
9.4.1 무엇이 잘못될 수 있는가? 293 / 9.4.2 모니터링 대상 및 방법 294
9.4.3 기록할 내용 297 / 9.4.4 남용 감시 298
9.5 모델 유지보수 299
9.5.1 업데이트 시기 299 / 9.5.2 업데이트 방법 300
9.6 요약 303

CHAPTER 10 결론 307

10.1 핵심 요점 308
10.2 다음에 읽을 내용 312
10.3 감사의 말 313

QuickMenu