R을 활용한 머신러닝 4/e [데이터 준비부터 모델 조정, 평가, 빅데이터 작업까지]
- 원서명Machine Learning with R: Learn techniques for building and improving machine learning models, from data preparation to model tuning, evaluation, and working with big data, Fourth Edition (ISBN 9781801071321)
- 지은이브레트 란츠(Brett Lantz)
- 옮긴이이병욱
- ISBN : 9791161758145
- 48,000원 (eBook 38,400원)
- 2024년 01월 24일 펴냄
- 페이퍼백 | 932쪽 | 188*235mm
- 시리즈 : 데이터 과학
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/machine-learning-r-4
요약
이 책은 모두 15개의 장으로 구성돼 머신러닝의 각종 개념의 설명과 함께 실제로 데이터를 다룰 때 발생하는 여러 문제점과 그 문제점을 해결할 수 있는 실질적 방안을 제공하고 있다.
1장은 머신러닝의 전체 개념을 설명해 주고, 2장부터 9장까지는 최근접 이웃, 나이브 베이즈, 회귀기법, 결정 트리, 랜덤 포레스트, 서포트 벡터 머신, 연관 규칙을 사용한 시장 바스켓 분석, 신경망, K-평균화를 사용한 군집화 등 머신러닝에서 보편적으로 사용되는 반드시 알아야 하는 여러 개념들을 자세히 그러나 비유를 통해 친절하게 설명하고 있다. 모든 장에서 설명한 개념을 실제로 수행해 볼 수 있는 예제가 R로 제공되며, 심화학습을 위한 참고 도서를 알려 준다. 한편 각종 예제는 3판에 비해 예제 자체가 신설 혹은 보강되거나 설명이 대폭 보강됐다.
10장은 특히 모델의 성능을 평가하는 여러 방법과 그 장단점을 설명하며 구축된 모델을 현업에 배포하는 것이 적절한지에 대해 이야기한다.
11장부터는 모델을 실세계에 배포하기 위해 고려해야 하는 여러 사항과 함께 데이터를 준비하고 그 무결성 여부에 따라 처리해야 하는 여러 기법을 설명한다. 특히 15장에서는 빅데이터란 무엇인지 빅데이터를 다룰 때 발생할 수 있는 여러 고려 사항들과 함께 그를 극복하기 위해서는 어떤 점을 유념해야 하는지에 대해 다루고 있다.
이 책에서 다루는 내용
◆ 머신러닝의 원시 데이터에서 구현까지의 엔드-투-엔드 과정 학습
◆ 최근접 이웃과 베이지안 기법으로 주요 결과 분류
◆ 결정트리, 규칙, 서포트 벡터 머신을 사용해 미래의 사건 예측
◆ 회귀기법으로 수치 데이터를 예측하고 금융 수치 추정
◆ 인공신경망으로 복잡한 프로세스 모델링
◆ tidyverse를 사용해 데이터를 준비, 변환, 정제
◆ 모델을 평가하고 성능을 향상
◆ R을 SQL 데이터베이스와 Spark, Hadoop, H2O, TensorFlow 등의 떠오르는 빅데이터 기술과 연결
이 책의 대상 독자
데이터에 접근하고 그 데이터를 활용하고자 하는 사업 분석가, 사회 과학자 등의 응용 분야 종사자를 대상으로 하는 책이다. 이미 머신러닝에 대해 약간 알고 있지만 R을 사용한 경험이 없을 수도 있고, 반대로 R에 대해 약간 알고 있지만 머신러닝은 처음이거나 아예 둘 다 처음일 수도 있다. 어떤 경우에도 이 책은 여러분을 빠르게 시작하게 해줄 것이다. 기본 수학과 프로그래밍 개념에 약간이라도 익숙하다면 도움이 되겠지만 사전 경험은 필요하지 않다. 필요한 것은 호기심뿐이다.
이 책의 구성
1장, ‘머신러닝 소개’에서는 머신 학습자(machine learner)를 정의하고 구분해주는 용어와 개념을 살펴보고, 학습 작업을 적절한 알고리듬에 매칭하는 방법을 제시한다.
2장, ‘데이터의 관리와 이해’에서는 R을 이용해서 데이터를 직접 다룰 수 있는 기회를 제공한다. 데이터를 로딩하고, 탐색하고, 이해하는 데 사용되는 필수 데이터 구조와 절차를 설명한다.
3장, ‘게으른 학습: 최근접 이웃을 사용한 분류’에서는 단순하지만 강력한 머신러닝 알고리듬을 이해하고, 첫 번째 실제 작업인 암의 악성 샘플 식별에 적용하는 방법을 알려준다.
4장, ‘확률적 학습: 나이브 베이즈 분류’에서는 최첨단 스팸 필터링 시스템에서 사용하고 있는 확률의 핵심적인 개념을 소개한다. 독자는 자신만의 스팸 필터를 개발하는 과정에서 텍스트 마이닝의 기초를 배울 수 있다.
5장, ‘분할 정복: 의사결정 트리와 규칙 기반의 분류’에서는 예측을 정확하고 쉽게 설명하는 2가지 학습 알고리듬을 탐색한다. 이 방법은 투명성이 중요한 작업에 적용된다.
6장, ‘수치 데이터 예측: 회귀 방법에’서는 수치 예측에 사용되는 머신러닝 알고리듬을 소개한다. 이 기법은 통계 분야에 아주 많이 포함돼 있으므로 수치 관계를 이해하는 데 필요한 필수 척도도 함께 알아본다.
7장, ‘블랙박스 방법: 신경망과 서포트 벡터 머신’에서는 복잡하고 강력한 두 종류의 머신러닝 알고리듬을 다룬다. 수학이 위협적으로 보일 수 있겠지만 내부 작동을 보여주는 예제와 함께 간단한 용어로 진행한다.
8장, ‘패턴 찾기: 연관 규칙을 이용한 장바구니 분석’에서는 많은 소매업체가 채택한 추천 시스템의 알고리듬을 접할 수 있다. 소매업체가 나의 구매 습관을 나보다 더 잘 아는 이유가 궁금한 적이 있었다면 8장에서 그 비밀을 밝혀준다.
9장, ‘데이터 그룹 찾기: k-평균 군집화’에서는 관련 아이템을 군집화하는 절차를 알아본다. 이 알고리듬을 활용해 온라인 커뮤니티에서 프로필을 식별한다.
10장, ‘모델 성능 평가’에서는 머신러닝 프로젝트의 성공 여부를 측정하고 미래 데이터에 대한 학습자의 신뢰할 만한 성능 추정치를 얻는 방법에 대해 정보를 제공한다.
11장, ‘머신러닝으로 성공하기’에서는 교과서 데이터 세트에서 실세계 머신러닝 문제로 전환할 때 마주치는 흔한 함정과 이 문제를 극복하는 데 필요한 도구, 전략, 소프트 스킬을 알아본다.
12장, ‘고급 데이터 준비’에서는 머신러닝 프로세스를 도와 의미 있는 정보를 추출하고자 대용량 데이터 세트를 다루는 데 도움이 되는 tidyverse 패키지를 소개한다.
13장, ‘까다로운 데이터: 너무 많고, 너무 적고, 너무 복잡한 데이터’에서는 유용한 정보가 거대한 데이터 세트 속에서 바늘을 찾는 것과 유사하게 유실돼 머신러닝 프로젝트를 방해할 수 있는 여러 일반적인 문제에 대한 해결책을 고려한다.
14장, ‘더 나은 학습자 구축’에서는 머신러닝 대회 리더보드 상위 팀들이 사용하는 방법을 공개한다. 경쟁심을 갖고 있거나 데이터에서 최대한의 이점을 얻고자 하는 경우 이러한 기술을 여러분의 능력에 추가해야 할 것이다.
15장, ‘빅데이터 활용’에서는 머신러닝의 최전선을 탐구한다. 매우 큰 데이터 세트를 다루는 것부터 R의 작업 속도를 높이는 것까지, 다루는 주제는 여러분이 R로 가능한 범위의 한계를 넓히는 데 도움이 될 것이며, 구글과 같은 대규모 기관에서 이미지 인식 및 텍스트 데이터 이해를 위해 개발한 정교한 도구를 활용할 수 있게 해줄 것이다.
목차
목차
- 01장. 머신러닝 소개
- 머신러닝의 기원
- 머신러닝의 사용과 남용
- 머신러닝 성공 사례
- 머신러닝의 한계
- 머신러닝의 윤리
- 기계의 학습 방법
- 데이터 저장소
- 추상화
- 일반화
- 평가
- 실전 머신러닝
- 입력 데이터 타입
- 머신러닝 알고리듬 형식
- 입력 데이터와 알고리듬 매칭
- R을 이용한 머신러닝
- R 패키지 설치
- 패키지 로딩과 언로딩
- RStudio 설치
- 왜 R인가 왜 지금 R인가?
- 요약
- 02장. 데이터의 관리와 이해
- R 데이터 구조
- 벡터
- 팩터
- 리스트
- 데이터 프레임
- 행렬과 배열
- R을 이용한 데이터 관리
- 데이터 구조 저장, 로드, 제거
- CSV 파일에서 데이터 가져오기와 저장하기
- Rstudio를 이용한 일반적 데이터 세트 형식 가져오기
- 데이터 탐색과 이해
- 데이터 구조 탐색
- 수치 변수 탐색
- 중심 경향 측정: 평균과 중앙값
- 퍼짐 측정: 사분위수와 다섯 숫자 요약
- 수치 변수 시각화: 상자그림
- 수치 변수 시각화: 히스토그램
- 수치 데이터의 이해: 균등 분포와 정규 분포
- 퍼짐 측정: 분산과 표준 편차
- 범주 특징 탐색
- 중심 경향 측정: 최빈값
- 특징 간의 관계 탐색
- 관계 시각화: 산포도
- 관계 관찰: 이원교차표
- 요약
- R 데이터 구조
- 03장. 게으른 학습: 최근접 이웃을 사용한 분류
- 최근접 이웃 분류의 이해
- k-NN 알고리듬
- 거리로 유사도 측정
- 적절한 k 선택
- k-NN 사용을 위한 데이터 준비
- 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 컴퓨팅
- SQL 데이터베이스에서 데이터 쿼리
- 요약
- 딥러닝의 실제 적용