티스토리 뷰

알고리즘 중심의 머신 러닝가이드

머신러닝은 발전이 빨라서 이 책을 보고 첨단을 알기는 어렵다. 하지만 한글로 쉽게 머신러닝을 알고자 한다면 한 번은 읽어볼만 하다. 어느 정도 머신러닝의 개면이 필요한 사람이 처음에 이해하기는 좋다. 기술서이며, 저자의 의견은 없다. 그렇다고 학문적으로 깊게 다룬 것도 없다.편미분이나 수치해석에서 나올 법만 내용을 모조리 이해할 수 없다. 또한 개념서가 아니라 기술서이기 때문에 책을 읽고 어느 정도 알고리즘을 변형해서 쓸 수 있지만 근본적인 변화를 통해 새로운 내용을 창출하기는 어려울 것이다. 책을 따라서 실행해보면 원하는 결과를 확인하면서 전체 개략적인 방법을 느낄 수 있을 것이다.

머신러닝에 필요한 수학/통계학 배경 지식!
머신러닝에 사용되는 주요 알고리즘의 원리!
의사코드가 아닌 파이썬 코드 중심의 예제!

이 책은 머신러닝 알고리즘의 이해를 돕기 위한 책이다. 이 책을 통해 머신러닝에 필요한 프로그래밍뿐만 아니라 관련 수학, 통계 개념을 완벽히 익히는 여행을 시작할 수 있을 것이다.

층 신뢰 신경망과 같은 최근의 머신러닝 동향을 반영했다. 머신러닝을 이해하는 데 필요한 기본 확률과 통계 개념을 제공한다. 신경망을 사용한 지도학습에 대해 배운다. 차원 감축, EM 알고리즘, 최근접 이웃법, 최선 분류 경계, 커널 방법과 최적화를 다룬다. 진화학습, 강화학습, 트리 기반의 학습자 그리고 다양한 학습자들의 예측 값을 합치는 방법들을 다룬다. 자기조직화 특성 지도를 통해서 비지도학습의 중요성을 알아본다. 머신러닝에서의 최신 통계 기반 접근법들을 살펴본다.

2판에 추가된 사항은 심층 신뢰 신경망과 가우시안 프로세스가 추가되었다. 더 자연스러운 흐름을 위해 각 장을 새롭게 재구성했다. 실습을 위한 실행 코드를 추가했으며, 서포트 벡터 머신 자료들을 보강했다. 랜덤 포레스트, 퍼셉트론 수렴 이론, 정확성 측정 방법을 위한 고려사항, 그리고 MLP를 위한 켤레 기울기 최적화에 대한 새로운 자료를 추가했다. 칼만 필터와 파티클 필터에 관한 설명이 추가되었다. 파이썬의 명명 규칙을 수정하고 코드를 개선했다.

책을 학습할 때 함께 제공되는 코드를 직접 실행해 볼 것을 추천한다. 각 장마다 더 읽을거리와 연습 문제를 통해 세부적인 예제를 제공하고 있으며, 예제에 사용된 모든 파이썬 코드는 저자의 웹페이지에서 내려받을 수 있다.

CHAPTER 1 … 들어가기에 앞서_1
1.1 데이터에 질량이 있다면 지구는 블랙홀이 될 것이다 2
1.2 학습 5
1.2.1 머신러닝 5
1.3 머신러닝의 종류 6
1.4 지도학습 8
1.4.1 회귀 9
1.4.2 분류 10
1.5 머신러닝 과정 12
1.6 프로그래밍 노트 14
1.7 이 책의 로드맵 15
* 더 읽을거리 17

CHAPTER 2 … 들어가며_19
2.1 용어 설명 19
2.1.1 가중치 공간 20
2.1.2 차원의 저주 22
2.2 알고 있는 것을 잘 이해하라: 머신러닝 알고리즘 평가하기 24
2.2.1 오버피팅 24
2.2.2 트레이닝, 테스팅, 밸리데이션 세트 25
2.2.3 혼동 행렬 27
2.2.4 정확도 지표 28
2.2.5 수신자 조작 특성 곡선 30
2.2.6 불균형 데이터세트 31
2.2.7 정밀도 측정 32
2.3 데이터를 확률로 변경 33
2.3.1 위험 최소화 36
2.3.2 나이브 베이즈 분류기 37
2.4 기본적인 통계학 39
2.4.1 평균 39
2.4.2 분산과 공분산 40
2.4.3 가우시안 42
2.5 바이어스 분산 트레이드오프 43
* 더 읽을거리 45
* 연습 문제 46

CHAPTER 3 … 뉴런, 뉴럴 네트워크, 선형 판별식_47
3.1 뇌와 뉴런 47
3.1.1 헵의 법칙 48
3.1.2 맥컬록과 피츠의 뉴런들 49
3.1.3 맥컬록과 피츠 뉴럴 모델의 한계점 51
3.2 뉴럴 네트워크 52
3.3 퍼셉트론 53
3.3.1 학습률 55
3.3.2 바이어스 값 입력 56
3.3.3 퍼셉트론 학습 알고리즘 57
3.3.4 퍼셉트론 학습의 예제: 논리 함수 58
3.3.5 구현 60
3.4 선형 분리성 66
3.4.1 퍼셉트론 수렴 이론 68
3.4.2 배타적 논리합 함수 70
3.4.3 도움이 될 만한 통찰력 71
3.4.4 또 다른 예제: 피마 인디언 데이터세트 73
3.4.5 전처리: 데이터 사전 준비 76
3.5 선형 회귀 77
3.5.1 선형 회귀 예제 79
* 더 읽을거리 80
* 연습 문제 81

CHAPTER 4 … 다층 퍼셉트론_83
4.1 전향 85
4.1.1 바이어스 86
4.2 후향: 오차 역전파 86
4.2.1 다층 퍼셉트론 알고리즘 90
4.2.2 가중치 초기화하기 93
4.2.3 다른 출력 활성화 함수들 94
4.2.4 순차와 배치 트레이닝 96
4.2.5 지역 최솟값 96
4.2.6 모멘텀 정하기 98
4.2.7 미니배치와 확률적 기울기 하강 99
4.2.8 개선점들 99
4.3 다층 퍼셉트론의 실제 100
4.3.1 트레이닝 데이터 양 100
4.3.2 은닉층의 수 100
4.3.3 학습을 중지해야 할 시기 102
4.4 MLP의 활용 예 103
4.4.1 회귀 문제 103
4.4.2 MLP에서의 분류 107
4.4.3 분류 예: 아이리스 데이터세트 108
4.4.4 시계열 예측 111
4.4.5 데이터 압축: 자기 연산 네트워크 114
4.5 MLP 사용법 116
4.6 역전파 유도 117
4.6.1 네트워크 출력 값과 오류 118
4.6.2 네트워크의 오류 118
4.6.3 활성화 함수의 요건들 120
4.6.4 오류 역전달 121
4.6.5 출력 활성화 함수들 124
4.6.6 오차 함수의 대안 126
* 더 읽을거리 126
* 연습 문제 127

CHAPTER 5 … 방사 기저 함수와 스플라인_131
5.1 수용영역 132
5.2 방사 기저 함수 네트워크 135
5.2.1 RBF 네트워크 트레이닝 137
5.3 보간법과 기저 함수 140
5.3.1 기저 확장 143
5.3.2 3차 스플라인 144
5.3.3 데이터에 스플라인 맞추기 144
5.3.4 스무딩 스플라인/스플라인 다듬질 145
5.3.5 고차원 147
5.3.6 경계를 넘어 148
* 더 읽을거리 148
* 연습 문제 149

CHAPTER 6 … 차원 축소_151
6.1 선형 판별 분석 153
6.2 주성분 분석 157
6.2.1 다층 퍼셉트론과의 관계 161
6.2.2 커널 PCA 162
6.3 인자 분석 164
6.4 독립 성분 분석 167
6.5 지역 선형 임베딩 168
6.6 아이소맵 172
6.6.1 다차원 스케일링 172
* 더 읽을거리 174
* 연습 문제 175

CHAPTER 7 … 확률학습_177
7.1 가우시안 혼합 모델 177
7.1.1 기댓값 최대화 179
7.1.2 정보 기준 182
7.2 최근접 이웃법 183
7.2.1 최근접 이웃 스무딩 185
7.2.2 효율적인 거리 계산: KD 트리 186
7.2.3 거리 측정 191
* 더 읽을거리 193
* 연습 문제 194

CHAPTER 8 … 서포트 벡터 머신_195
8.1 최적 분리 196
8.1.1 마진과 서포트 벡터들 197
8.1.2 제약적 최적화 문제 A 199
8.1.3 비선형 분리 문제를 위한 슬랙 변수 202
8.2 커널 203
8.2.1 커널 고르기 205
8.2.2 XOR 예제 206
8.3 서포트 벡터 머신 알고리즘 206
8.3.1 구현 207
8.3.2 예제 211
8.4 SVM의 연장 213
8.4.1 다계층 분류 213
8.4.2 SVM 회귀 214
8.4.3 다른 이점들 215
* 더 읽을거리 216
* 연습 문제 217

CHAPTER 9 … 최적화와 탐색_219
9.1 언덕 내려가기 220
9.1.1 테일러 전개식 223
9.2 최소제곱법 225
9.2.1 레벤버그 말쿼트 알고리즘 225
9.3 켤레 기울기 230
9.3.1 켤레 기울기의 예제 233
9.3.2 켤레 기울기와 MLP 234
9.4 탐색: 세 가지 방법 237
9.4.1 완전 탐색 237
9.4.2 탐욕 탐색 238
9.4.3 언덕 오르기 238
9.5 활용과 탐험 239
9.6 담금질 기법 240
9.6.1 비교 241
* 더 읽을거리 243
* 연습 문제 243

CHAPTER 10 … 진화학습_245
10.1 유전 알고리즘 247
10.1.1 스트링 표현 248
10.1.2 적합성 평가 248
10.1.3 개체수 249
10.1.4 자손 만들기: 부모 선택 249
10.2 자손 만들기: 유전 연산자 251
10.2.1 크로스오버 251
10.2.2 돌연변이 253
10.2.3 정예주의, 토너먼트, 그리고 틈새 254
10.3 유전 알고리즘 사용하기 256
10.3.1 지도 색칠 256
10.3.2 단절된 균형 258
10.3.3 예제: 배낭 문제 258
10.3.4 예제: 포피크 문제 259
10.3.5 GA의 한계 261
10.3.6 유전 알고리즘을 사용해서 뉴럴 네트워크 트레이닝하기 261
10.4 유전 프로그래밍 262
10.5 샘플링과 유전학습을 접합하기 264
* 더 읽을거리 265
* 연습 문제 267

CHAPTER 11 … 강화학습 _269
11.1 개관 270
11.2 예제: 길을 잃다 272
11.2.1 상태 공간과 행동 공간 274
11.2.2 당근과 채찍: 보상 함수 274
11.2.3 할인 276
11.2.4 행동 선택 276
11.2.5 정책 277
11.3 마르코프 결정 과정 278
11.3.1 마르코프 성질 278
11.3.2 마르코프 결정 과정 확률 279
11.4 가치 280
11.5 휴가 예제: 강화학습 사용 284
11.6 살사와 Q 학습의 다른 점 285
11.7 강화학습의 사용 287
* 더 읽을거리 288
* 연습 문제 288

CHAPTER 12 … 트리학습_291
12.1 결정 트리 사용 292
12.2 결정 트리 만들기 293
12.2.1 정보 이론의 엔트로피 293
12.2.2 ID3 295
12.2.3 트리와 그래프 파이썬으로 구현하기 298
12.2.4 결정 트리 구현 299
12.2.5 연속 변수 값 처리하기 301
12.2.6 계산 복잡도 303
12.3 분류와 회귀 트리 303
12.3.1 지니 불순도 303
12.3.2 회귀 트리 304
12.4 분류 예시 305
* 더 읽을거리 307
* 연습 문제 308

CHAPTER 13 … 위원회의 결정: 앙상블 학습_311
13.1 부스팅 313
13.1.1 아다부스트 313
13.1.2 스텀핑 318
13.2 배깅 318
13.2.1 서브배깅 319
13.3 랜덤 포레스트 320
13.3.1 부스팅과 비교하기 322
13.4 분류기를 종합하는 다른 방법들 323
* 더 읽을거리 325
* 연습 문제 326

CHAPTER 14 … 비지도학습_327
14.1 k-means 알고리즘 328
14.1.1 노이즈 다루기 332
14.1.2 k-means 뉴럴 네트워크 332
14.1.3 정규화 334
14.1.4 더 좋은 가중치 갱신 방법 335
14.1.5 예제: 아이리스 데이터세트 336
14.1.6 경쟁학습을 군집화에 이용하기 337
14.2 벡터 양자화 338
14.3 자기조직화 지도 339
14.3.1 SOM 알고리즘 342
14.3.2 이웃 연결 343
14.3.3 자기조직화 345
14.3.4 네트워크 차원과 경계 조건 346
14.3.5 SOM을 이용한 예제 348
* 더 읽을거리 349
* 연습 문제 351

CHAPTER 15 … 마르코프 체인 몬테 카를로 _353
15.1 샘플링 354
15.1.1 난수 354
15.1.2 가우시안 난수 355
15.2 몬테 카를로가 아니면 죽기 357
15.3 제안 분포 359
15.4 마르코프 체인 몬테 카를로 363
15.4.1 마르코프 체인 363
15.4.2 메트로폴리스 해스팅스 알고리즘 364
15.4.3 시뮬레이티드 어닐링 366
15.4.4 깁스 샘플링 368
* 더 읽을거리 370
* 연습 문제 370

CHAPTER 16 … 그래프 모델_373
16.1 베이지언 네트워크 375
16.1.1 예제: 시험에 대한 두려움 375
16.1.2 근사 추론 380
16.1.3 베이지언 네트워크 만들기 383
16.2 마르코프 랜덤 필드 385
16.3 은닉 마르코프 모델 388
16.3.1 포워드 알고리즘 391
16.3.2 비터비 알고리즘 394
16.3.3 바움 웰치 또는 포워드 백워드 알고리즘 395
16.4 트래킹 방법 399
16.4.1 칼만 필터 400
16.4.2 입자 필터 407
* 더 읽을거리 411
* 연습 문제 412

CHAPTER 17 … 대칭 가중치와 심층 신뢰 네트워크_415
17.1 정력적인 학습: 홉필드 네트워크 416
17.1.1 연상 기억 416
17.1.2 연상 기억 만들기 417
17.1.3 에너지 함수 422
17.1.4 홉필드 네트워크의 수용력 425
17.1.5 연속 홉필드 네트워크 426
17.2 확률 뉴런-볼츠만 머신 427
17.2.1 제한 볼츠만 머신 429
17.2.2 CD 알고리즘 유도 435
17.2.3. 지도학습 439
17.2.4 유향 신뢰 네트워크 441
17.3 딥러닝/심층학습 444
17.3.1 심층 신뢰 네트워크 448
* 더 읽을거리 452
* 연습 문제 453

CHAPTER 18 … 가우시안 프로세스_455
18.1 가우시안 프로세스 회귀 458
18.1.1 노이즈 추가하기 459
18.1.2 구현 462
18.1.3 파라미터 학습하기 463
18.1.4 구현 465
18.1.5 공분산 함수 고르기 467
18.2 가우시안 프로세스 분류 468
18.2.1 라플라스 근사 469
18.2.2 사후 확률 계산 469
18.2.3 구현 471
* 더 읽을거리 474
* 연습 문제 475


APPENDIX A … 파이썬_477
A.1 파이썬과 다른 패키지들 설치 477
A.2 시작하기 478
A.2.1 MATLAB과 R 사용자를 위한 파이썬 482
A.3 기본 코드 483
A.3.1 코드 작성하기와 코드 임포팅 483
A.3.2 흐름 제어 484
A.3.3 함수 485
A.3.4 문서 설명글 486
A.3.5 map과 lambda 486
A.3.6 예외 487
A.3.7 클래스 488
A.4 넘파이와 Matplotlib 사용하기 489
A.4.1 배열 489
A.4.2 난수 493
A.4.3 선형 대수 493
A.4.4 그래프 그리기 494
A.4.5 주의 사항 495
* 더 읽을거리 496
* 연습 문제 497

찾아보기 499