머신러닝/딥러닝을 처음 시작하는 분들을 위한 책입니다!
《나의 첫 머신러닝/딥러닝》은 머신러닝/딥러닝을 시작하려는 모든 분들을 대상으로 합니다. 간단한 그림과 명쾌한 설명으로 이해하기 쉬운 알고리즘부터 차근차근 단계별로 배우면서 어려움 없이 머신러닝/딥러닝을 학습할 수 있도록 구성했습니다.
이번 개정판에서는 최신 트렌드로 자리 잡은 임베딩 및 전이학습의 이론과 실습을 추가했고, 최신 텐서플로 2로 작성된 코드를 구글 코랩을 활용해 온라인에서 직접 실습할 수 있게 구성했습니다.
★ 이 책에서 배우는 내용 ★
- 머신러닝 필수 개념
- 딥러닝 필수 개념
- k-최근접 이웃
- 서포트 벡터 머신
- 의사결정 트리
- 나이브 베이즈
- 앙상블
- 군집화
- 선형회귀
- 로지스틱 회귀
- 주성분 분석
- 다층 퍼셉트론
- 컨볼루셔널 뉴럴 네트워크(CNN)
- 순환신경망(RNN)
- 오토인코더
- Word2Vec, FastText, Glove
- 전이학습
도서 상세 이미지
허민석(Minsuk Heo)
실리콘밸리에서 행복하게 살고 있는 평범한 머신러닝 개발자입니다. 취미로 머신러닝/딥러닝 지식과 경험을 유튜브 채널로 공유하고 많은 머신러닝 개발자, 데이터 과학자, 학생분들과 소통하며 살고 있습니다.
- ▣ 01장: 개발자가 처음 만난 머신러닝의 세계
- 1.1 머신러닝이란?
- 1.2 프로젝트 과정 미리보기
- 1.3 실습의 중요성
- ▣ 02장: 실습 준비
- 2.1 예제 코드
- 2.2 구글 코랩(Google Colaboratory)
- ▣ 03장: 자주 등장하는 머신러닝 필수 개념
- 3.1 지도학습과 비지도학습
- 3.1.1 지도학습
- 3.1.2 비지도학습
- 3.2 분류와 회귀
- 3.2.1 분류
- 3.2.2 회귀
- 3.3 과대적합과 과소적합
- 3.3.1 과소적합
- 3.3.2 과대적합
- 3.4 혼동 행렬
- 3.5 머신러닝 모델의 성능 평가
- 3.5.1 TP(true positive) – 맞는 것을 올바르게 예측한 것
- 3.5.2 TN(true negative) – 틀린 것을 올바르게 예측한 것
- 3.5.3 FP(false positive) – 틀린 것을 맞다고 잘못 예측한 것
- 3.5.4 FN(false negative) – 맞는 것을 틀렸다고 잘못 예측한 것
- 3.5.5 정확도
- 3.5.6 정밀도
- 3.5.7 재현율
- 3.5.8 F1 점수
- 3.6 k-폴드 교차 검증
- 3.1 지도학습과 비지도학습
- ▣ 04장: 머신러닝 알고리즘 실습
- 4.1 머신러닝 알고리즘 실습 개요
- 4.1.1 알고리즘 선정 이유
- 4.2 k-최근접 이웃(k-Nearest Neighbor, kNN)
- 4.2.1 [이론] k-최근접 이웃 알고리즘(kNN)
- 4.2.2 [실습] 농구선수의 게임 데이터를 활용한 포지션 예측
- 4.3 서포트 벡터 머신(SVM)
- 4.3.1 [이론] 서포트 벡터 머신
- 4.3.2 [실습] 농구선수의 게임 기록을 학습해서 포지션을 예측해보자
- 4.4 의사결정 트리
- 4.4.1 [이론] 의사결정 트리
- 4.4.2 [실습] 서울 지역(강동, 강서, 강남, 강북) 다중 분류하기
- 4.5 나이브 베이즈
- 4.5.1 [이론] 나이브 베이즈
- 4.5.2 [실습] 가우시안 나이브 베이즈를 활용한 붓꽃 분류
- 4.5.3 [실습] 베르누이 나이브 베이즈를 활용한 스팸 분류
- 4.5.4 [실습] 다항분포 나이브 베이즈를 활용한 영화 리뷰 분류
- 4.6 앙상블
- 4.6.1 [이론] 배깅
- 4.6.2 [이론] 부스팅
- 4.6.3 [실습] 랜덤 포레스트 손글씨 분류
- 4.6.4 [실습] 보팅 앙상블 손글씨 분류
- 4.7 군집화
- 4.7.1 [이론] k 평균 알고리즘
- 4.7.2 [실습] 키와 몸무게에 따른 체형 군집화
- 4.8 선형회귀
- 4.8.1 [이론] 선형회귀
- 4.8.2 [실습] 선형회귀
- 4.9 로지스틱 회귀
- 4.9.1 [이론] 로지스틱 회귀
- 4.9.2 [실습] 단일 입력 로지스틱 회귀
- 4.9.3 [실습] 다중 입력 로지스틱 회귀
- 4.9.4 [실습] 소프트맥스(다중 분류 로지스틱 회귀)
- 4.10 주성분 분석
- 4.10.1 [이론] 주성분 분석
- 4.10.2 [실습] 식습관 데이터를 차원축소시켜서 시각화하기
- 4.1 머신러닝 알고리즘 실습 개요
- ▣ 05장: 딥러닝의 기본 개념
- 5.1 딥러닝의 탄생
- 5.2 딥러닝과 머신러닝의 관계
- 5.3 딥러닝 이름의 유래
- 5.4 딥러닝 탄생 배경
- 5.5 퍼셉트론
- 5.6 다층 퍼셉트론
- 5.7 뉴런(노드)
- 5.8 딥러닝의 학습
- 5.8.1 순전파(forward propagation)
- 5.8.2 손실함수
- 5.8.3 최적화
- 5.8.4 역전파
- 5.8.5 옵티마이저
- 5.9 딥러닝의 과대적합
- 5.9.1 드롭아웃
- 5.9.2 조기 종료
- 5.10 [실습] 퍼셉트론
- 5.11 [실습] 뉴런(노드)
- 5.12 [실습] 다층 퍼셉트론으로 XOR 구현하기
- 5.13 [실습] 다층 퍼셉트론으로 손글씨 숫자 분류하기
- ▣ 06장: 딥러닝
- 6.1 컨볼루셔널 뉴럴 네트워크(CNN)
- 6.1.1 [이론] CNN
- 6.1.2 [실습] CNN
- 6.2 순환신경망(RNN)
- 6.2.1 [이론] RNN
- 6.2.2 [이론] LSTM
- 6.2.3 [실습] RNN 기초
- 6.2.4 [실습] LSTM 기초
- 6.2.5 [실습] LSTM - 지문을 읽고 주제 분류하기
- 6.3 오토인코더
- 6.3.1 [이론] 오토인코더
- 6.3.2 [실습] 손글씨 숫자 데이터 시각화
- 6.4 단어 임베딩
- 6.4.1 [이론] Word2Vec
- 6.4.2 [실습] Word2Vec
- 6.4.3 [실습] 사전 학습된 Word2Vec 맛보기
- 6.4.4 [이론] FastText
- 6.4.5 [실습] 사전학습된 FastText 맛보기
- 6.4.6 [실습] 사전 학습된 Glove 맛보기
- 6.5 전이 학습
- 6.5.1 [이론] 전이 학습
- 6.5.2 [실습] 사전 학습된 임베딩으로 사용자 리뷰 분류하기
- 6.1 컨볼루셔널 뉴럴 네트워크(CNN)
- ▣ 참고문헌
- 딥러닝 이론/실습
- 파이썬 활용 데이터 과학 및 엔지니어링
- Numpy
- IPython
- Matplotlib
- Seaborn
- Cython
- Pandas
- scikit-learn
- scikit-image
- Jupyter Notebook
- Keras
- Tensorflow
63쪽, 예제 코드를 다음 코드로 교체(C_candidates 변수명 변경)
# 시각화할 비용 후보들을 저장 C_candidates = [] C_candidates.append(clf.best_params_['C'] * 0.01) C_candidates.append(clf.best_params_['C']) C_candidates.append(clf.best_params_['C'] * 100) # 시각화할 감마 후보들을 저장 gamma_candidates = [] gamma_candidates.append(clf.best_params_['gamma'] * 0.01) gamma_candidates.append(clf.best_params_['gamma']) gamma_candidates.append(clf.best_params_['gamma'] * 100) # 3점슛과 블로킹 횟수로 학습 X = train[['3P', 'BLK']] # 농구선수 포지션을 학습 모델의 분류값으로 사용 Y = train['Pos'].tolist() # 시각화를 위해 센터(C)와 슈팅가드(SG)를 숫자로 표현 position = [] for gt in Y: if gt == 'C': position.append(0) else: position.append(1) classifiers = [] # 파라미터 후보들을 조합해서 학습된 모델들을 저장 for C in C_candidates: for gamma in gamma_candidates: clf = SVC(C=C, gamma=gamma) clf.fit(X, Y) classifiers.append((C, gamma, clf)) # 각 모델을 시각화 plt.figure(figsize=(18, 18)) xx, yy = np.meshgrid(np.linspace(0, 4, 100), np.linspace(0, 4, 100)) for (k, (C, gamma, clf)) in enumerate(classifiers): Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) plt.subplot(len(C_candidates), len(gamma_candidates), k + 1) plt.title("gamma=10^%d, C=10^%d" % (np.log10(gamma), np.log10(C)), size='medium') plt.pcolormesh(xx, yy, -Z, cmap=plt.cm.RdBu) plt.scatter(X['3P'], X['BLK'], c=position, cmap=plt.cm.RdBu_r, edgecolors='k')
73쪽, 본문 7번째 줄
분리했을 때의 엔트로피는
0.966
이며,==>
분리했을 때의 엔트로피는
0.81
이며,73쪽, 본문 10번째 줄
"긴 생머리"로 데이터를 분리할 때의 정보 획득:
0.034
==>
"긴 생머리"로 데이터를 분리할 때의 정보 획득:
0.19
90쪽, 표 4.4.2를 다음 표로 교체(ground_truth와 prediction 열의 순서를 변경)
111쪽, 페이지 중간 명령어를 변경(라이브러리 버전 업그레이드로 인한 오류)
cv.inverse_transform(encoded_input[0])
==>
cv.inverse_transform(encoded_input[0].reshape(1,-1))
139쪽, 본문 첫 번째 줄
데이터가 c1에서
c2
클러스터로==>
데이터가 c1에서
c3
클러스터로142쪽, 첫 번째 코드 예제
data_points = df.values kmeans = KMeans(n_clusters=3).fit(data_points)
==>
data_points = df.values kmeans = KMeans(n_clusters=3).fit(data_points) kmeans.cluster_centers_ df['cluster_id'] = kmeans.labels_