파이썬으로 배우는 대규모 머신 러닝 [대규모 데이터 분석과 처리를 위한 다양한 머신 러닝 기법 활용]
- 원서명Large Scale Machine Learning with Python (ISBN 9781785887215)
- 지은이바스티앙 스야딘(Bastiaan Sjardin), 루카 마싸론(Luca Massaron), 알베르토 보스체티(Alberto Boschetti)
- 옮긴이이미정
- ISBN : 9791161750224
- 35,000원
- 2017년 07월 10일 펴냄 (절판)
- 페이퍼백 | 528쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
파이썬을 활용해 대규모 데이터 세트에 머신 러닝을 적용하는 방법을 안내한다. 실제 파이썬 코드를 이용해 현재 가장 많이 사용되는 머신 러닝 기법들과 프레임워크로 대규모 데이터 세트를 처리하는 방법을 설명하고 있다. 기본적으로 파이썬 문법과 머신 러닝 개념을 어느 정도 숙지한 중급 독자를 위한 책으로, 통계와 수학에 대한 실무 지식이 있다면 더욱 이해하기 쉬울 것이다. 머신 러닝 분야에서 언급되는 주요 개념, 프레임워크, 알고리즘, 툴 등을 적절하게 사용하는 예를 제시한다.
이 책에서 다루는 내용
■ 확장성이 뛰어난 머신 러닝 알고리즘 적용 방법
■ 최신 머신 러닝 기법 활용
■ 딥러닝과 확장 가능한 데이터 처리 기법을 활용한 예측 정확도 향상
■ 스파크에서 맵리듀스 프레임워크 활용
■ 스파크 및 하둡을 활용한 효과적인 머신 러닝 알고리즘 적용 방법
■ 강력한 대규모 앙상블 생성
■ 데이터 스트림을 사용해 대규모 데이터 세트에서 선형 및 비선형 예측 모델 학습
이 책의 대상 독자
데이터 과학 분야의 실무자, 개발자, 그리고 크고 복잡한 데이터 세트를 다루려는 모든 사람들에게 적합하다. 가능한 한 많은 독자들을 대상으로 하려고 노력했다. 그러나 이 책이 다루는 주제가 상당히 고급 과정이라는 점을 감안했을 때 강제 사항은 아니지만 분류, 회귀, 오차 최소화 함수, 교차 검증 같은 기본적인 머신 러닝의 개념에 익숙할 것을 권장한다. 또한 이 책에서 제안하는 다양한 해결 방식의 개념을 이해하기 위해 일정 수준 이상의 수학 지식과 함께 파이썬, 주피터 노트북 및 명령행 실행에 어느 정도 경험이 있는 독자를 가정했다. 코드는 다른 언어(R, Java 및 MATLAB) 프로그래머가 따라갈 수 있는 양식으로 작성했다. 이론적으로는 머신 러닝에 익숙하며, 컴퓨터 연산, 메모리 및 I/O 성능 문제로 파이썬을 활용해 R 또는 MATLAB 같은 다른 언어를 다루는 것에 관심이 있는 데이터 과학자에게 적합하다(그러나 이에 국한되지는 않는다).
이 책의 구성
1장, ‘확장성을 향한 첫 걸음’에서는 머신 러닝을 확장하는 문제를 정확한 관점에서 설정하고, 사용할 도구에 익숙해지도록 안내한다.
2장, ‘Scikit-learn으로 확장 가능한 학습’에서는 메모리 소비가 적은 확률적 경사 하강법(Stochastic gradient descent, SGD)에 대한 전략을 설명한다. 이들은 코어에 구애 받지 않는 out-of-core 학습을 기반으로 한다. 또한 해싱 기법처럼 다양한 데이터를 처리할 수 있는 데이터 전처리 기술도 다룰 것이다.
3장, ‘빠른 SVM 구현체’에서는 서포트 벡터 머신(support vector machines) 형태로 비선형성을 찾아낼 수 있는 스트리밍 알고리즘을 다룬다. LIBLINEAR 및 Vowpal Wabbit 같은 Scikit-learn의 대안을 제시할 것이다. 이들은 외부 셸 명령으로 동작하지만, 파이썬 스크립트로 쉽게 래핑되고 호출될 수 있다.
4장, ‘신경망과 딥러닝’에서는 H2O를 활용한 대규모 애플리케이션과 함께 Theano 프레임워크에서 심층 신경망을 적용하는 유용한 방법들을 소개한다. 주목 받는 방법을 성공적으로 적용하는 것과 확장 가능한 솔루션으로 제공하는 것은 또 다른 문제일 수 있다. theanets 패키지로 오토인코더를 통한 비지도 사전 훈련 방법도 사용할 것이다.
5장, ‘텐서플로를 활용한 딥러닝’에서는 신경망을 위한 온라인 방법과 함께 주목 받는 딥러닝 기법들을 다룬다. 현재 텐서플로는 초기 단계에 불과하지만, 프레임워크가 제공하는 머신 러닝 방법은 명쾌하다. 텐서플로 환경에서 케라스를 사용한 합성곱 신경망(Convolutional Neural Networks)도 활용할 것이다.
6장, ‘분류와 회귀 트리 확장’에서는 랜덤 포레스트(random forest), 경사 부스팅(gradient boosting), XGboost를 확장하는 방법을 설명한다. 분류 및 회귀 트리의 약어인 CART는 일반적으로 앙상블 방식의 프레임워크에 적용되는 머신 러닝 기법이다. 또한 H2O를 사용하는 대규모 애플리케이션의 예를 제시할 것이다.
7장, ‘대규모 데이터에 대한 비지도 학습’에서는 비지도 학습을 자세히 살펴보는 것은 물론 PCA, 클러스터 분석, 주제 모델링과 이들을 확장하는 올바른 접근 방법에 대해 살펴볼 것이다.
8장, ‘분산 환경-하둡과 스파크’에서는 단일 머신에서 연산 네트워크로 패러다임이 이동함에 따라 가상 머신 환경에서 스파크를 설정하는 방법을 살펴본다. 파이썬으로 머신 클러스터의 용이한 결합과 성능 향상이 가능해지면서 어렵지 않게 하둡 클러스터의 힘을 활용할 수 있게 됐다.
9장, ‘스파크를 활용한 실무에서의 머신 러닝’에서는 스파크를 사용해 즉각적으로 데이터를 조작하고 대규모 데이터 세트로 예측 모델을 만들기 위해 필요한 모든 내용을 다룬다.
목차
목차
- 1장. 확장성을 향한 첫걸음
- 확장성에 대한 자세한 설명
- 대규모 객체 생성하기
- 파이썬 소개
- 파이썬을 통한 스케일 업
- 파이썬을 통한 스케일 아웃
- 대규모 머신 러닝을 위한 파이썬
- 파이썬 2와 파이썬 3 중 어느 것을 선택할 것인가?
- 파이썬 설치
- 단계적 설치
- 패키지 설치
- 패키지 업그레이드
- 과학용 배포판
- 주피터 / IPython 소개
- 파이썬 패키지
- NumPy
- SciPy
- Pandas
- Scikit-learn
- 요약
- 확장성에 대한 자세한 설명
- 2장. Scikit-learn으로 확장 가능한 학습
- 코어에 구애 받지 않는 학습(Out-of-core learning)
- 실행 가능한 방법으로서 재표본추출
- 한 번에 하나의 객체만으로 최적화를 하는 방법
- 코어에 구애 받지 않는(out-of-core) 학습 시스템 구축
- 소스로부터 데이터를 스트리밍하기
- 현실을 반영하는 데이터 세트
- 첫 번째 예제 - 자전거 대여 데이터 세트 스트리밍하기
- 확률적 학습(Stochastic learning)
- 배치 경사 하강법(Batch gradient descent)
- 확률적 경사 하강법
- Scikit-learn의 SGD 구현체
- SGD 학습 파라미터 정의하기
- 데이터 스트림을 통한 특징 관리
- 목표 설명
- 해싱 기법
- 그 외 기본적인 변환들
- 스트림에서 테스트와 검증
- SGD의 실제 동작
- 요약
- 코어에 구애 받지 않는 학습(Out-of-core learning)
- 3장. 빠른 SVM 구현체
- 실험용 데이터 세트
- 자전거 대여 데이터 세트
- 산림 유형 데이터 세트
- 서포트 벡터 머신
- 경첩 손실 및 변형
- Scikit-learn SVM 구현체에 대한 이해
- 재표본추출에 의한 비선형 SVM
- SGD로 SVM 확장하기
- 정규화를 통한 특징 선택
- SGD에 비선형성 포함시키기
- 명시적 고차원 매핑 시도하기
- 하이퍼파라미터튜닝
- 빠른 SVM 학습을 위한 방법들
- 요약
- 실험용 데이터 세트
- 4장. 신경망과 딥러닝
- 신경망 아키텍처
- 신경망이 학습하는 내용과 방법
- 적합한 아키텍처 선택하기
- 실제로 동작하는 신경망
- sknn 병렬 처리
- 신경망과 정규화
- 신경망과 하이퍼파리미터 최적화
- 신경망과 결정 경계
- H2O를 통한 딥러닝의 확장
- H2O를 활용한 대규모 딥러닝
- H2O에서의 그리드 검색
- 딥러닝과 비지도 사전 학습
- theanets를 활용한 딥러닝
- 오토인코더와 비지도 학습
- 오토인코더
- 요약
- 신경망 아키텍처
- 5장. 텐서플로를 활용한 딥러닝
- 텐서플로 설치
- SkFlow를 활용한 텐서플로에서의 머신 러닝
- 대형 파일을 활용하는 딥러닝-점진적 학습
- Keras와 텐서플로 설치
- Keras를 통한 텐서플로에서의 합성곱 신경망
- 합성곱층
- 풀링층
- 완전 연결층
- 점진적 방식을 사용하는 CNNs
- GPU 컴퓨팅
- 요약
- 6장. 분류와 회귀 트리 확장
- 부트스트랩 모음
- 랜덤 포레스트 및 극단적인 랜덤 포레스트
- 무작위 검색을 통한 빠른 파라미터 최적화
- 극단적인 랜덤 트리와 대형 데이터 세트
- CART와 부스팅
- 경사 부스팅 머신
- XGBoost
- XGBoost 회귀
- 대형 데이터 세트를 스트리밍하는 XGBoost
- XGBoost model persistence
- H2O를 통한 코어에 구애 받지 않는 방식의 CART
- H2O에서의 랜덤 포레스트와 그리드 검색
- H2O에서의 확률적 경사 부스팅과 그리드 검색
- 요약
- 7장. 대규모 데이터에 대한 비지도 학습
- 비지도 방식
- 특징 분해(Feature decomposition) - PCA
- 무작위 PCA
- 증분 PCA
- 희소 PCA
- H2O를 활용한 PCA
- 클러스터링– K-평균
- 초기화 방식
- K-평균의 가정
- 최적의 K 선택하기
- K-평균의 확장-미니 배치
- H2O를 활용한 K-평균
- LDA
- LDA 확장 – 메모리, CPUs, 머신
- 요약
- 8장. 분산환경-하둡(Haddop)과 스파크(Spark)
- 독립형 머신에서 다수의 노드들로
- 분산 프레임워크가 필요한 이유
- VM 환경 설정
- 버추얼박스
- 베이그런트
- VM 사용하기
- 하둡 생태계
- 아키텍처
- HDFS
- 맵리듀스
- 얀
- 스파크
- pySpark
- 요약
- 독립형 머신에서 다수의 노드들로
- 9장. 스파크를 활용한 실무에서의 머신 러닝
- 9장을 위한 VM 환경 설정
- 클러스터 노드들에서 변수 공유하기
- 읽기 전용 브로드캐스트 변수
- 읽기 전용 누산기 변수
- 브로드캐스트와 누산기를 함께 사용하기-예제
- 스파크에서의 데이터 전처리
- JSON 파일과 스파크 데이터 프레임
- 유실 데이터 처리하기
- 메모리에서 테이블을 그룹짓고 생성하기
- 전처리된 데이터 프레임 혹은 RDD를 디스크에 쓰기
- 스파크 데이터 프레임으로 작업하기
- 스파크를 활용한 머신 러닝
- KDD99 데이터 세트를 다루는 스파크
- 데이터 세트 읽기
- 특징 엔지니어링
- 학습기 훈련시키기
- 학습기 성능 평가하기
- 강력한 ML 파이프라인
- 수작업 튜닝
- 교차 검증
- 요약
- 부록. GPU 및 Theano 소개
- GPU 컴퓨팅
- Theano - GPU에서의 병렬 컴퓨팅