대용량 머신 러닝과 스파크 [빅데이터 기반의 머신 러닝 애플리케이션 구축]
- 원서명Large Scale Machine Learning with Spark: Discover everything you need to build robust machine learning applications with Spark 2.0 (ISBN 9781785888748)
- 지은이레자울 카림(Rezaul Karim), 마헤디 카이저(Mahedi Kaysar)
- 옮긴이이지훈
- ISBN : 9791161751771
- 35,000원
- 2018년 07월 16일 펴냄 (절판)
- 페이퍼백 | 560쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 데이터 과학
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
아파치 스파크와 스파크 ML 라이브러리를 이용해 대용량 데이터에서 특징을 찾고 머신 러닝 파이프 라인을 구축하며, 이를 새로운 데이터와 문제 유형에 맞게 튜닝하는 방법을 배운다. 그리고 모델을 빌드하고 프로덕션 환경에 배포하는 방법도 살펴본다. 머신 러닝 및 스파크에 관해 최소한의 지식만 있더라도 예제를 따라 해보면서 머신 러닝과 솔루션을 함께 탐색할 수 있다.
이 책에서 다루는 내용
■ 알고리즘의 명확한 이론적 이해
■ 스칼라, 자바, 파이썬, R을 사용한 애플리케이션 개발을 위해 클러스터 및 클라우드 인프라에서 스파크 설정하기
■ 대규모 클러스터 또는 클라우드 인프라에서 ML 애플리케이션 스케일 업
■ 스파크 ML과 MLlib를 사용해 추천 시스템, 분류, 회귀, 클러스터링, 정서 분석, 차원 감소를 위한 ML 파이프라인 개발하기
■ 피처 엔지니어링 중심으로 ML 애플리케이션을 개발하기 위한 대규모 텍스트 처리
■ 스파크 스트리밍(Spark Streaming)을 사용해 실시간 스트리밍을 위한 ML 애플리케이션 개발하기
■ 교차 유효성 검사, 초매개변수 튜닝, 트레인 분할을 사용한 ML 모델 튜닝
■ 동적 모델과 증분 환경에 새로운 모델을 적용할 수 있도록 ML 모델 개선하기
이 책의 대상 독자
학계에 종사하거나 연구자, 데이터 과학 엔지니어 또는 대용량의 복잡한 데이터셋으로 작업하는 빅데이터 엔지니어라면 이 책이 도움이 될 것이다. 그리고 데이터 처리 파이프라인과 머신 러닝 애플리케이션을 더 빠르게 확장하려 한다면 역시 이 책이 적합한 동반자가 돼줄 것이다.
이 책의 내용을 충분히 배우려면 적어도 기본적인 머신 러닝 개념은 알고 있어야 한다. 아파치 스파크와 하둡 기반 맵리듀스 같은 오픈소스 툴과 프레임워크에 대해 알고 있으면 좋겠지만, 잘 모르더라도 문제없다. 통계학과 계산 수학에 대한 탄탄한 배경지식이 필요하며 스칼라, 파이썬, 자바에 관해서는 어느 정도 아는 것이 좋다. 하지만 어떤 경우라도 중간 프로그래밍 언어(intermediate programming language)에 익숙하다면 이 책에서 설명하는 논제와 예제들을 충분히 이해할 수 있을 것이다.
이 책의 구성
1장. '스파크를 이용한 데이터 분석의 개요'에서는 스파크의 개요와 컴퓨팅 패러다임, 설치를 다루므로 스파크를 시작하는 데 도움을 준다. 스파크의 주요 컴포넌트를 간략히 설명하고, RDD(Resilient Distributed Dataset)와 데이터셋(Dataset)으로 인한 새로운 컴퓨팅의 발전에 초점을 맞춘다. 그러고 나서 스파크의 머신 러닝 라이브러리 생태계에 주목해본다. 아마존 EC2(Amazon EC2)를 확장하기 전에, 스파크와 메이븐(Maven)을 사용해 간단한 머신 러닝 애플리케이션을 설치하고 구성하고 패키지하는 방법을 보여준다.
2장. '머신 러닝 모범 사례'에서는 통계적 머신 러닝 테크닉의 개념을 소개한다. 이는 머신 러닝에 대해 최소한만 알고 있는 수준부터 어느 정도는 알고 있는 실무 영역의 수준까지 아우르므로 모든 입문자들에게 도움이 될 것이다. 2장의 후반부에서는 주로 애플리케이션 유형 및 요구 사항에 맞게 적합한 머신 러닝 알고리즘을 선택하기 위한 약간의 권장 사항을 제공한다. 그 다음 대규모 머신 러닝 파이프라인을 적용할 때 몇 가지 모범 사례들을 살펴본다.
3장. '데이터 이해를 통한 문제 이해'에서는 이용 가능한 데이터를 가지고 머신 러닝 문제에 대한 기본적인 내용을 이해하는 것을 목표로, 구조화된 데이터 작업을 위한 데이터셋과 RDD API를 상세히 다룬다. 이 장을 배우고 나면 기본적이고 복잡한 데이터 조작을 손쉽게 다룰 수 있게 된다. 프로그래밍과 성능 면에서 도움이 되도록, RDD와 데이터셋을 기반으로 데이터 조작을 사용하는 스파크의 기본 추상화와 비교해본다. 또한 메모리에 RDD 또는 데이터 객체를 유지하도록 스파크를 사용하고, 이것이 이후 단계의 병렬 작업에서도 효율적으로 재사용될 수 있도록 안내한다.
4장. '피처 엔지니어링을 통한 지식 추출'에서는 예측 모델을 생성하기 위해서는 사용해야 하는 기능을 아는 것이 중요하다. 뿐만 아니라, 이러한 기능을 아는 것은 검사할 문제 영역에 대한 고도의 지식이 필요할 만큼 어렵다. 누군가가 작업 중인 문제에 가장 유용하거나 가장 관련성이 있는 기능들을 데이터에서 자동으로 선택할 수도 있다. 이런 문제들을 고려해 4장에서는 피처 엔지니어링을 상세히 다루고 피처 엔지니어링 모범 사례와 함께 적용 이유를 설명한다. 이외에도 스파크 MLlib API와 스파크 ML API 모두를 사용해 대규모 머신 러닝 기술에 적용된 피처 추출, 변환, 선택에 대한 이론적 설명과 사례들이 논의될 것이다.
5장. '예제로 보는 지도 및 비지도 학습'에서는 이전 장들을 기반으로 널리 사용되는 사례들을 통해 이용 가능한 데이터에 대한 지도 및 비지도 기술들을 새로운 문제에 빠르고 강력하게 적용하는 방법에 대한 실질적인 지식을 제공한다. 이러한 사례들은 스파크 관점에서 소개된다.
6장. '확장 가능한 머신 러닝 파이프라인 빌드'에서는 머신 러닝의 궁극적인 목표가 지루하고 시간 소모적인 인간의 개입과 상호작용 없이 데이터로부터 모델을 자동으로 빌드할 수 있는 머신을 만드는 것이라고 설명한다. 따라서 여기서는 스파크 MLlib와 스파크 ML을 사용해 실용적이고 널리 사용되는 머신 러닝 파이프라인과 애플리케이션의 생성에 대해 살펴본다. 이 두 가지 API는 자세히 설명될 것이고, 이들 모두에 대한 기준 라인 사용 사례도 역시 다뤄질 것이다. 그러고 나서 데이터 로드 증가에 대처할 수 있도록 ML 애플리케이션을 확장하는 방향으로 초점을 맞춘다.
7장. '머신 러닝 모델 튜닝'에서는 알고리즘이나 머신 러닝 애플리케이션 튜닝이 알고리즘이 최상의 성능을 발휘할 수 있도록 모델에 영향을 주는 매개변수를 검토하고 최적화하는 과정임을 보여준다. 모델 튜닝을 안내하는 것을 목표로, 여기서는 ML 알고리즘의 성능을 최적화하기 위해 사용되는 주요 기술을 다루고, MLlib와 스파크 ML 관점 모두에서 기술을 설명한다. 또한 초매개변수, MLlib 및 스파크 ML을 사용한 그리드 검색 매개변수, 가설 테스트, 랜덤 검색 매개변수 튜닝, 교차 유효성 검사 등과 같은 여러 매개변수를 튜닝해 ML 모델 성능을 향상시키는 방법을 보여준다.
8장. '머신 러닝 모델 조정'에서는 알고리즘을 새로운 데이터와 문제 유형에 적용할 수 있도록 하는 고급 머신 러닝 기술을 다룬다. 주로 배치/스트리밍 아키텍처와 스파크 스트리밍을 사용한 온라인 러닝 알고리즘에 초점을 맞춘다. 궁극적인 목표는 정적인 머신 러닝에 역동성을 더하는 것이다. 아울러 머신 러닝 알고리즘이 데이터에서 점차적으로 학습하는 방법, 즉 알고리즘이 새로운 학습 인스턴스를 볼 때마다 모델이 업데이트되는 방법을 소개한다.
9장. '스트리밍 및 그래픽 데이터를 사용한 고급 머신 러닝'에서는 스파크 MLlib와 스파크 ML 심리 분석을 수행하는 방법을 보여준다. 또한 스파크 MLlib를 사용한 대규모 영화 추천 의 도움으로, 예를 들어 토픽 모델링에서 스트리밍과 그래프 데이터에 머신 러닝 기술을 적용하는 방법을 설명한다. 결국 사용 가능한 API를 통해 트위터 같은 데이터 소스를 스트리밍해서 실시간 애플리케이션, 예측적 애플리케이션을 빌드할 수 있게 될 것이다. 이어서 트위터 데이터 분석을 통해 대규모 사회 시스템을 개발하는 방법도 살펴볼 텐데, 이를 위해 소셜 네트워크 분석이 일반적으로 사용된다.
10장. '외부 라이브러리를 이용한 설정 및 작업'에서는 데이터 분석을 확장하기 위한 외부 라이브러리 사용을 안내한다. 스파크 코어와 ML/MLlib로 머신 러닝 애플리케이션을 위한 서드파티 패키지 또는 라이브러리를 배치하는 것에 대한 사례가 제공되며, 시계열을 위해 스파크의 코어 라이브러리를 사용해 외부 라이브러리를 컴파일하고 사용하는 방법에 대해서도 논의한다. 탐색 데이터를 조작하고 다루는 법을 향상시키기 위해 스파크R(SparkR)을 구성하는 법에 대해서도 역시 논의할 것이다.
목차
목차
- 1장. 스파크를 이용한 데이터 분석의 개요
- 스파크 개요
- 스파크의 기본 사항
- 스파크의 장점
- 스파크를 사용한 새로운 컴퓨팅 패러다임
- 전통적인 분산 컴퓨팅
- 코드에서 데이터로의 이동
- RDD: 새로운 컴퓨팅 패러다임
- 스파크 에코시스템
- 스파크 코어 엔진
- 스파크 SQL
- 데이터프레임과 데이터셋 통합
- 스파크 스트리밍
- 그래프 계산: GraphX
- 머신 러닝과 스파크 ML 파이프라인
- 통계 계산: 스파크R
- 스파크 머신 러닝 라이브러리
- 스파크를 이용한 머신 러닝
- 스파크 MLlib
- 스파크 ML
- 스파크 설치와 시작하기
- 종속성을 사용해 애플리케이션 패키징
- 샘플 머신 러닝 애플리케이션 실행
- 스파크 셸에서 스파크 애플리케이션 실행
- 로컬 클러스터에서 스파크 애플리케이션 실행
- EC2 클러스터에서 스파크 애플리케이션 실행
- 참고 문헌
- 요약
- 스파크 개요
- 2장. 머신 러닝 모범 사례
- 머신 러닝이란?
- 현대 문헌에서의 머신 러닝
- 일반적인 머신 러닝 워크플로우
- 머신 러닝 작업
- 지도 학습
- 비지도 학습
- 강화 학습
- 추천 시스템
- 준지도 학습
- 실제 머신 러닝 문제
- 머신 러닝 클래스
- 규칙 추출과 회귀
- 가장 널리 사용하는 머신 러닝 문제
- 스파크 대규모 머신 러닝 API
- 스파크 머신 러닝 라이브러리
- 실용적인 머신 러닝 우수 사례
- ML 애플리케이션 개발 전의 우수 사례
- ML 애플리케이션 개발 후 모범 사례
- 애플리케이션에 알맞은 알고리즘 선택
- 알고리즘을 선택할 때 고려 사항
- 알고리즘을 선택할 때 데이터를 함께 고려하기
- 널리 사용하는 ML 알고리즘에 대한 참고 사항
- 요약
- 머신 러닝이란?
- 3장. 데이터 이해를 통한 문제 이해
- 데이터 분석 및 준비
- 데이터 준비 프로세스
- 탄력적 분산 데이터셋의 기본사항
- 데이터셋 읽기
- RDD로 사전 처리
- 키와 값의 쌍으로 작업하기
- 변환에 대한 추가 정보
- 데이터셋 기본 사항
- 데이터셋을 생성하기 위해 데이터셋 읽기
- 데이터셋으로 사전 처리
- 데이터셋 조작에 대한 추가 정보
- 자바빈에서 데이터셋 생성
- 문자열과 타입 클래스에서 데이터셋 생성
- RDD, DataFrame, Dataset 간의 비교
- 스파크와 데이터 과학자 워크플로우
- 스파크에 대해 좀 더 깊게 살펴보기
- 공유 변수
- 요약
- 데이터 분석 및 준비
- 4장. 피처 엔지니어링을 통한 지식 추출
- 피처 엔지니어링의 최첨단 기술
- 피처 추출 vs. 피처 선택
- 피처 엔지니어링의 중요성
- 피처 엔지니어링과 데이터 탐색
- 피처 추출: 데이터에서 피처 생성
- 피처 선택: 데이터에서 필터링 피처
- 피처 엔지니어링의 모범 사례
- 데이터 이해
- 혁신적인 피처 추출 방법
- 스파크로 피처 엔지니어링
- 머신 러닝 파이프라인: 개요
- 파이프라인: 스파크 ML 예제
- 피처 변환, 추출, 선택
- 고급 피처 엔지니어링
- 피처 구성
- 피처 학습
- 피처 엔지니어링의 반복 프로세스
- 딥러닝
- 요약
- 피처 엔지니어링의 최첨단 기술
- 5장. 예제로 보는 지도 및 비지도 학습
- 머신 러닝 클래스
- 지도 학습
- 스파크를 이용한 지도 학습: 사례
- 스파크를 이용한 항공기 지연 분석
- 비지도 학습
- 비지도 학습 사례
- 추천 시스템
- 스파크에서 협업 필터링
- 고급 학습과 일반화
- 지도 학습의 일반화
- 요약
- 머신 러닝 클래스
- 6장. 확장 가능한 머신 러닝 파이프라인 빌드
- 스파크 머신 러닝 파이프라인 API
- 데이터셋 추상화
- 파이프라인
- 스파크를 사용한 암 진단 파이프라인
- 스파크를 사용한 유방암 진단 파이프라인
- 스파크를 사용한 암 예후 파이프라인
- 데이터셋 탐색
- 스파크 ML/MLlib를 사용한 유방암 예후 파이프라인
- 스파크 코어를 이용한 장바구니 분석
- 배경
- 동기
- 데이터셋 탐색
- 문제 설명
- 스파크를 이용한 대규모 장바구니 분석
- 스파크 코어를 사용한 알고리즘 솔루션
- SAMBA에서 올바른 매개변수의 튜닝과 설정
- 스파크를 이용한 OCR 파이프라인
- 데이터 탐색과 준비
- 스파크 ML과 스파크 MLlib를 사용한 OCR 파이프라인
- 스파크 MLlib와 ML을 사용한 토픽 모델링
- 스파크 MLlib를 사용한 토픽 모델링
- 확장성
- 스파크를 사용한 신용 위험 분석 파이프라인
- 신용 위험 분석이란? 왜 중요한가?
- 스파크 ML을 이용한 신용 위험 분석 개발
- 스파크 ML을 사용한 신용 위험 파이프라인
- ML 파이프라인 확장
- 크기의 중요성
- 크기 vs. 왜곡 고려 사항
- 비용과 인프라
- 조언 및 성능 고려 사항
- 요약
- 스파크 머신 러닝 파이프라인 API
- 7장. 머신 러닝 모델 튜닝
- 머신 러닝 모델 튜닝에 대한 세부 사항
- 모델 튜닝의 일반적인 문제
- 머신 러닝 모델 평가
- 회귀 모델 평가
- 이진 분류 모델 평가
- 멀티클래스 분류 모델 평가
- 클러스터링 모델 평가
- 유효성 검사 기술과 평가 기술
- 머신 러닝 모델을 위한 매개변수 튜닝
- 초매개변수 튜닝
- 그리드 검색 매개변수 튜닝
- 랜덤 검색 매개변수 튜닝
- 교차 유효성 검사
- 가설 테스트
- 스파크 MLlib의 ChiSqTestResult를 사용한 가설 테스트
- 스파크 MLlib Kolmogorov-Smirnov 테스트를 사용한 가설 테스트
- 스파크 MLlib의 스트리밍 유의도 검정
- 머신 러닝 모델 선택
- 교차 검증 기술을 통한 모델 선택
- 트레이닝 유효성 검사 분할을 통한 모델 선택
- 요약
- 8장. 머신 러닝 모델 조정
- 머신 러닝 모델 적용
- 기술 개요
- ML 모델의 일반화
- 일반화된 선형 회귀
- 스파크를 사용한 일반화된 선형 회귀
- 증분 알고리즘을 통한 적용
- 증분 서포트 벡터 머신
- 증분 신경망
- 증분 베이지안 네트워크
- ML 모델 재사용을 통한 적용
- 문제 설명과 목적
- 데이터 탐색
- 심장 질환 예측 모델 개발
- 동적 환경에서 머신 러닝
- 온라인 학습
- 통계 학습 모델
- 적대 모델
- 요약
- 머신 러닝 모델 적용
- 9장. 스트리밍 및 그래픽 데이터를 사용한 고급 머신 러닝
- 실시간 ML 파이프라인 개발
- 비구조화된 텍스트 데이터로서 스트리밍 데이터 수집
- 시계열과 소셜 네트워크 분석
- 시계열 분석
- 소셜 네트워크 분석
- 스파크를 사용한 영화 추천
- 스파크 MLlib를 사용한 모델 기반 영화 추천
- 스트리밍에서 실시간 ML 파이프라인 개발
- 트위터에서 실시간 트윗 데이터 수집
- 8단계: 스트리밍 스위치 제어
- 스파크를 사용한 토픽 모델링
- 그래프 데이터와 준지도 그래프 기반 학습에 대한 ML 파이프라인
- GraphX 소개
- 요약
- 실시간 ML 파이프라인 개발
- 10장. 외부 라이브러리를 이용한 설정 및 작업
- 스파크가 포함된 서드파티 ML 라이브러리
- 스파크 코어로 외부 라이브러리 사용
- 클라우데라 Spark-TS를 사용한 시계열 분석
- 시계열 데이터
- Spark-TS 설정
- TimeSeriesRDD
- RStudio로 스파크R 설정
- 윈도우에서 하둡 런타임 설정
- 요약