학계에 종사하거나 연구자, 데이터 과학 엔지니어 또는 대용량의 복잡한 데이터셋으로 작업하는 빅데이터 엔지니어라면 이 책이 도움이 될 것이다. 그리고 데이터 처리 파이프라인과 머신 러닝 애플리케이션을 더 빠르게 확장하려 한다면 역시 이 책이 적합한 동반자가 돼줄 것이다.
이 책의 내용을 충분히 배우려면 적어도 기본적인 머신 러닝 개념은 알고 있어야 한다. 아파치 스파크와 하둡 기반 맵리듀스 같은 오픈소스 툴과 프레임워크에 대해 알고 있으면 좋겠지만, 잘 모르더라도 문제없다. 통계학과 계산 수학에 대한 탄탄한 배경지식이 필요하며 스칼라, 파이썬, 자바에 관해서는 어느 정도 아는 것이 좋다. 하지만 어떤 경우라도 중간 프로그래밍 언어(intermediate programming language)에 익숙하다면 이 책에서 설명하는 논제와 예제들을 충분히 이해할 수 있을 것이다.
- 알고리즘의 명확한 이론적 이해
- 스칼라, 자바, 파이썬, R을 사용한 애플리케이션 개발을 위해 클러스터 및 클라우드 인프라에서 스파크 설정하기
- 대규모 클러스터 또는 클라우드 인프라에서 ML 애플리케이션 스케일 업
- 스파크 ML과 MLlib를 사용해 추천 시스템, 분류, 회귀, 클러스터링, 정서 분석, 차원 감소를 위한 ML 파이프라인 개발하기
- 피처 엔지니어링 중심으로 ML 애플리케이션을 개발하기 위한 대규모 텍스트 처리
- 스파크 스트리밍(Spark Streaming)을 사용해 실시간 스트리밍을 위한 ML 애플리케이션 개발하기
- 교차 유효성 검사, 초매개변수 튜닝, 트레인 분할을 사용한 ML 모델 튜닝
- 동적 모델과 증분 환경에 새로운 모델을 적용할 수 있도록 ML 모델 개선하기
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)을 구성하는 법에 대해서도 역시 논의할 것이다.