이 책은 모두 15개의 장의 구성돼 머신러닝의 각종 개념의 설명과 함께 실제로 데이터를 다룰 때 발생하는 여러 문제점과 그 문제점을 해결할 수 있는 실질적 방안을 제공하고 있다. 1장은 머신러닝의 전체 개념을 설명해 주고, 2장부터 9장까지는 최근접 이웃, 나이브 베이즈, 회귀기법, 결정 트리, 랜덤 포레스트, 서포트 벡터 머신, 연관 규칙을 사용한 시장 바스켓 분석, 신경망, K-평균화를 사용한 군집화 등 머신러닝에서 보편적으로 사용되는 반드시 알아야 하는 여러 개념들을 자세히 그러나 비유를 통해 친절하게 설명하고 있다. 모든 장에서 설명한 개념을 실제로 수행해 볼 수 있는 예제가 R로 제공되며, 심화학습을 위한 참고 도서를 알려 준다. 한편 각종 예제는 3판에 비해 예제 자체가 신설 혹은 보강되거나 설명이 대폭 보강됐다. 10장은 특히 모델의 성능을 평가하는 여러 방법과 그 장단점을 설명하며 구축된 모델을 현업에 배포하는 것이 적절한지에 대해 이야기한다. 11장부터는 모델을 실세계에 배포하기 위해 고려해야 하는 여러 사항과 함께 데이터를 준비하고 그 무결성 여부에 따라 처리해야 하는 여러 기법을 설명한다. 특히 15장에서는 빅데이터란 무엇인지 빅데이터를 다룰 때 발생할 수 있는 여러 고려 사항들과 함께 그를 극복하기 위해서는 어떤 점을 유념해야 하는지에 대해 다루고 있다.
Contents
01장. 머신러닝 소개
__머신러닝의 기원
__머신러닝의 사용과 남용
____머신러닝 성공 사례
____머신러닝의 한계
____머신러닝의 윤리
__기계의 학습 방법
____데이터 저장소
____추상화
____일반화
____평가
__실전 머신러닝
____입력 데이터 타입
____머신러닝 알고리듬 형식
____입력 데이터와 알고리듬 매칭
__R을 이용한 머신러닝
____R 패키지 설치
____패키지 로딩과 언로딩
____RStudio 설치
____왜 R인가 왜 지금 R인가?
__요약
02장. 데이터의 관리와 이해
__R 데이터 구조
____벡터
____팩터
____리스트
____데이터 프레임
____행렬과 배열
__R을 이용한 데이터 관리
____데이터 구조 저장, 로드, 제거
____CSV 파일에서 데이터 가져오기와 저장하기
____Rstudio를 이용한 일반적 데이터 세트 형식 가져오기
__데이터 탐색과 이해
____데이터 구조 탐색
____수치 변수 탐색
______중심 경향 측정: 평균과 중앙값
______퍼짐 측정: 사분위수와 다섯 숫자 요약
______수치 변수 시각화: 상자그림
______수치 변수 시각화: 히스토그램
______수치 데이터의 이해: 균등 분포와 정규 분포
______퍼짐 측정: 분산과 표준 편차
____범주 특징 탐색
______중심 경향 측정: 최빈값
____특징 간의 관계 탐색
______관계 시각화: 산포도
______관계 관찰: 이원교차표
__요약
03장. 게으른 학습: 최근접 이웃을 사용한 분류
__최근접 이웃 분류의 이해
____k-NN 알고리듬
______거리로 유사도 측정
______적절한 k 선택
______k-NN 사용을 위한 데이터 준비
____k-NN 알고리듬이 게으른 이유
__예제: k-NN 알고리듬으로 유방암 진단
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
______변환: 수치 데이터 정규화
______데이터 준비: 훈련 및 테스트 데이터 세트 생성
____단계 3: 데이터로 모델 훈련
____단계 4: 모델 성능 평가
____단계 5: 모델 성능 개선
______변환: z-점수 표준화
______K의 대체 값 테스트
__요약
04장. 확률적 학습: 나이브 베이즈 분류
__나이브 베이즈 이해
____베이지안 기법의 기본 개념
______확률의 이해
______결합 확률의 이해
______베이즈 정리를 이용한 조건부 확률 계산
____나이브 베이즈 알고리듬
______나이브 베이즈를 이용한 분류
______라플라스 추정량
______나이브 베이즈에서 수치 특성 이용
__예제: 나이브 베이즈 알고리듬을 이용한 휴대폰 스팸 필터링
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
______데이터 준비: 텍스트 데이터 정리와 표준화
______데이터 준비: 텍스트 문서를 단어로 나누기
______데이터 준비: 훈련 및 테스트 데이터 세트 생성
______텍스트 데이터 시각화: 단어 구름
______데이터 준비: 자주 사용하는 단어의 지시자 특징 생성
____단계 3: 데이터에 대한 모델 훈련
____단계 4: 모델 성능 평가
____단계 5: 모델 성능 개선
__요약
05장. 분할 정복: 의사결정 트리와 규칙 기반의 분류
__의사결정 트리의 이해
____분할 정복
____C5.0 의사결정 트리 알고리듬
______최고의 분할 선택
______의사결정 트리 가지치기
__예제: C5.0 의사결정 트리를 이용한 위험 은행 대출 식별
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
______데이터 준비: 랜덤한 훈련 및 테스트 데이터 세트 생성
____단계 3: 데이터에 대한 모델 훈련
____단계 4: 모델 성능 평가
____단계 5: 모델 성능 개선
____의사결정 트리의 정확도 향상
____더 비싼 실수
__분류 규칙 이해
____분리 정복
____1R 알고리듬
____리퍼 알고리듬
____의사결정 트리에서 규칙 구성
____무엇이 트리와 규칙을 탐욕스럽게 만드는가?
__예제: 규칙 학습자를 이용한 독버섯 식별
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
____단계 3: 데이터에 대한 모델 훈련
____단계 4: 모델 성능 평가
____단계 5: 모델 성능 개선
__요약
06장. 수치 데이터 예측: 회귀 방법
__회귀의 이해
____단순 선형 회귀
____일반 최소 제곱 추정
____상관관계
____다중 선형 회귀
____일반화 선형 모델과 로지스틱 회귀
__예제: 선형 회귀를 사용한 자동차 보험금 청구 예측
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
______특징 간의 관계 탐색: 상관관계 행렬
______특징 간 관계 시각화: 산포도 행렬
____단계 3: 데이터에 대한 모델 훈련
____단계 4: 모델 성능 평가
____단계 5: 모델 성능 개선
______모델 명시: 비선형 관계 추가
______모델 명시: 상호작용 영향 추가
______모두 합치기: 개선된 회귀 모델
______회귀 모델로 예측하기
______심화: 로지스틱 회귀를 사용해 보험 가입자 이탈 예측하기
__회귀 트리와 모델 트리의 이해
____트리에 회귀 추가
__예제: 회귀 트리와 모델 트리로 와인 품질 평가
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
____단계 3: 데이터에 대한 모델 훈련
______의사결정 트리 시각화
____단계 4: 모델 성능 평가
______평균 절대 오차로 성능 측정
____단계 5: 모델 성능 개선
__요약
07장. 블랙박스 방법: 신경망과 서포트 벡터 머신
__신경망의 이해
____생물학적 뉴런에서 인공 뉴런으로
____활성 함수
____네트워크 토폴로지
______계층 수
______정보 이동 방향
______계층별 노드 개수
____역전파로 신경망 훈련
__예제: ANN으로 콘크리트 강도 모델링
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
____단계 3: 데이터 대한 모델 훈련
____단계 4: 모델 성능 평가
____단계 5: 모델 성능 개선
__서포트 벡터 머신의 이해
____초평면을 이용한 분류
______선형적으로 분리 가능한 데이터의 경우
______비선형적으로 분리 가능한 데이터의 경우
____비선형 공간을 위한 커널의 사용
__예제: SVM으로 OCR 수행
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
____단계 3: 데이터에 대한 모델 훈련
____단계 4: 모델 성능 평가
____단계 5: 모델 성능 향상
______SVM 커널 함수 변경
______최적 SVM 비용 파라미터 알아내기
__요약
08장. 패턴 찾기: 연관 규칙을 이용한 장바구니 분석
__연관 규칙의 이해
____연관 규칙 학습을 위한 아프리오리 알고리듬
____규칙 흥미 측정: 지지도와 신뢰도
____아프리오리 원칙을 이용한 규칙 집합의 구축
__예제: 연관 규칙으로 자주 구매되는 식료품 식별
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
______데이터 준비: 거래 데이터를 위한 희소 행렬 생성
______아이템 지지도 시각화: 아이템 빈도 그래프
______거래 데이터 시각화: 희소 행렬 도표화
____단계 3: 데이터에 대한 모델 훈련
____단계 4: 모델 성능 평가
____단계 5: 모델 성능 개선
______연관 규칙 집합 정렬
______연관 규칙의 부분집합 구하기
______연관 규칙을 파일이나 데이터 프레임에 저장하기
______더 효율적인 실행을 위해 Eclat 알고리듬을 사용하기
__요약
09장. 데이터 그룹 찾기: k-평균 군집화
__군집화의 이해
____머신러닝 작업으로서 군집화
____군집화 알고리듬의 클러스터
____k-평균 군집화 알고리듬
______거리 이용해 클러스터 할당 및 수정
______적절한 클러스터 개수 선택
__k-평균 군집화를 이용한 10대 시장 세분화 발굴
____단계 1: 데이터 수집
____단계 2: 데이터 탐색과 준비
______데이터 준비: 결측치 더미 코딩
______데이터 준비: 결측치 대체
____단계 3: 데이터에 대한 모델 훈련
____단계 4: 모델 성능 평가
____단계 5: 모델 성능 개선
__요약
10장. 모델 성능 평가
__분류 성능 측정
____분류기의 예측 이해
____혼동 행렬 자세히 보기
____혼동 행렬을 사용한 성능 측정
____정확도를 넘어: 다른 상능 측도
______카파 통계량
______매튜의 상관 계수
______민감도와 특이도
______정밀도와 재현율
______F-측도
__ROC 곡선으로 성능 트레이드오프 시각화
____ROC 곡선 비교
____ROC 곡선하 영역
____ROC 곡선의 생성과 R로 AUC 계산
__미래의 성능 예측
____홀드아웃 방법
____교차 검증
____부트스트랩 샘플링
__요약
11장. 머신러닝으로 성공하기
__성공적인 머신러닝 전문가를 만드는 것
__성공적인 머신러닝 모델을 만드는 요소
____뻔한 예측 피하기
____공정한 평가 수행
____실세계 영향 고려
____모델에 신뢰 구축
__데이터 과학에 과학을 담기
____R 노트북과 R 마크다운의 사용
____고급 데이터 탐색 수행
______데이터 탐색 로드맵 구축
______이상치 상대하기: 실세계 함정
______예제: 시각적 데이터 탐색에 ggplot2 사용
__요약
12장. 고급 데이터 준비
__특징 공학 수행
____사람과 기계의 역할
____빅데이터와 딥러닝의 영향
__특징 공학의 실제 적용
____힌트 1: 새로운 특징 브레인스토밍
____힌트 2: 문맥에 숨은 통찰력 찾기
____힌트 3: 수치 범위 변환
____힌트 4: 이웃의 행동 관찰
____힌트 5: 연계된 행 활용
____힌트 6: 시계열 분해
____힌트 7: 외부 데이터 첨부
__R의 tidyverse 탐색
____tibble로 타이디 테이블 구조 만들기
____readr와 readxl을 사용해 사각형 파일을 더 빠르게 읽기
____dplyr로 데이터 준비하고 파이프하기
____stringr로 문자 변환
____lubridate를 사용한 데이터 정리
__요약
13장. 까다로운 데이터: 너무 많고, 너무 적고, 너무 복잡
__고차원 데이터의 과제
____특징 선택 적용
______필터 기법
______래퍼 기법과 임베디드 기법
______예제: 특징 선택에 단계적 회귀 사용
______예제: Boruta를 사용한 특징 선택
____특징 추출 수행
______주성분 분석 이해
______예제: PCA를 사용해 고차원 소셜 미디어 데이터 축소
__희소 데이터 사용
____희소 데이터 식별
____예제: 희소 범주형 데이터 재매핑
____예제: 희소 숫자 데이터 빈 만들기
__누락된 데이터 처리
____누락된 데이터의 유형 이해
____결측값 대치 수행
______결측값 표시기가 있는 단순 대치
______결측값 패턴
__불균형 데이터 문제
____데이터 군형 조정을 위한 간단한 전략
____SMOTE를 사용해 합성 균형 데이터 세트 생성
______예제: R에서 SMOTE 알고리듬 적용
____균형이 항상 더 나은지 고려
__요약
14장. 더 나은 학습자 구축
__더 나은 성능을 위해 기본 모델 조정
____하이퍼파라미터 튜닝의 범위 결정
____예제: caret를 사용한 튜닝 자동화
____간단히 튜닝된 모델 만들기
____맞춤형 튜닝 프로세스
__앙상블을 통한 모델 성능 개선
____앙상블 학습의 이해
____인기 있는 앙상블 기반 알고리듬
______배깅
______부스팅
______랜덤 포레스트
______그래디언트 부스팅
______XGBoost를 사용한 익스트림 그래디언트 부스팅
______트리 기반 앙상블이 인기 있는 이유
__메타학습을 위한 모델 쌓기
____모델 쌓기와 혼합 이해
____R에서의 블렌딩 및 스태킹을 위한 실용적인 방법
__요약
15장. 빅데이터 활용
__딥러닝의 실제 적용
____딥러닝으로 시작하기
______딥러닝을 위한 적절한 과제 선택
______텐서플로와 케라스 딥러닝 프레임워크
____컨볼루션 신경망의 이해
______전이 학습과 미세 튜닝
______예제: R에서 사전 훈련된 CNN을 사용한 이미지 분류
__비지도학습과 빅데이터
____고차원적 개념을 임베딩으로 표현
______단어 임베딩 이해
______예제: R에서 텍스트를 이해하기 위한 word2vec 사용
____고차원 데이터 시각화
______빅데이터 시각화를 위한 PCA 사용의 한계
______t-SNE 알고리듬 이해
______예제: t-SNE로 데이터의 자연적 클러스터 시각화
__대규모 데이터 세트 처리에 R 적용
____SQL 데이터베이스에서 데이터 쿼리
______데이터베이스 연결 관리를 위한 정돈된 접근 방식
______dbplyr와 함께 dplyr용 데이터베이스 백엔드 사용
____병렬 처리로 더 빠르게 작업 수행
______R의 실행 시간 측정
______R에서 병렬 처리 활성화
______foreach와 doParallel을 통한 병렬 활용
______caret을 사용해 병렬로 모델 훈련과 평가
____특수 하드웨어와 알고리듬 활용
______아파치 스파크를 통한 맵리듀스 개념의 병렬 컴퓨팅
______H2O로 분산되고 확장 가능한 알고리듬으로 학습
______GPU 컴퓨팅
__요약
Author
브레트 란츠,이병욱
혁신적인 데이터 방법을 이용해 인간의 행동을 이해하고자 10년 이상을 보냈다. 숙련된 사회학자로서 10대들의 소셜 네트워크 웹사이트 프로파일의 대규모 데이터베이스를 연구하면서 처음으로 머신 러닝에 매료됐다. 그 이후로 휴대폰 통화 의료 청구 데이터 자선 활동 등의 여러 학문에 걸친 연구를 진행해왔다. 가족과 시간을 보내고 대학 스포츠를 하고 닥스훈트와 즐겁게 지낼 때가 아니면 데이터에서 통찰력을 찾는 데 관한 지식을 공유하는 전용 웹사이트인 http://dataspelunking.com을 관리한다.
혁신적인 데이터 방법을 이용해 인간의 행동을 이해하고자 10년 이상을 보냈다. 숙련된 사회학자로서 10대들의 소셜 네트워크 웹사이트 프로파일의 대규모 데이터베이스를 연구하면서 처음으로 머신 러닝에 매료됐다. 그 이후로 휴대폰 통화 의료 청구 데이터 자선 활동 등의 여러 학문에 걸친 연구를 진행해왔다. 가족과 시간을 보내고 대학 스포츠를 하고 닥스훈트와 즐겁게 지낼 때가 아니면 데이터에서 통찰력을 찾는 데 관한 지식을 공유하는 전용 웹사이트인 http://dataspelunking.com을 관리한다.