Top

스칼라와 머신 러닝 2/e [풍부한 설명으로 배우는 스칼라 머신 러닝 구현]

  • 원서명Scala for Machine Learning - Second Edition: Data processing, ML algorithms, smart analytics, and more (ISBN 9781787122383)
  • 지은이패트릭 니콜라스(Patrick R. Nicolas)
  • 옮긴이이판호
  • ISBN : 9791161752327
  • 45,000원
  • 2018년 11월 28일 펴냄
  • 페이퍼백 | 864쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 데이터 과학

책 소개

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

머신 러닝에 스칼라를 적용하고자 하는 개발자를 위한 책이다. 멀티 패러다임 언어인 스칼라의 특성과 관련 디자인 패턴 등 개발자에게 필요한 스칼라의 기본적인 특성부터 데이터 파이프라인과 처리, 주요 머신 러닝 알고리즘의 구현에 대해 자세히 설명한다. 대부분의 예제는 금융 데이터를 기반으로 구현돼 있으며, 직접 스칼라로 작성한 모든 코드와 알고리즘을 상세하게 설명한다. 부록에서는 주요 머신 러닝 알고리즘에서 쓰이는 수학적 개념과 관련 논문이 정리돼 있어서 필요한 내용을 쉽게 참조할 수 있다. 이 책은 수준 높은 스칼라 코드를 작성하는 데 활용할 수 있는 참고 서적으로도 가치가 크다.

이 책에서 다루는 내용

■ 과학적 연산을 위한 동적 작업 흐름 구축
■ 시계열로부터 패턴을 추출하기 위한 오픈소스 라이브러리의 활용
■ 자신만의 분류, 군집화, 혹은 진화 알고리즘 작성
■ 스파크의 상대적 성능 조정과 평가 수행
■ 순차적 데이터를 위한 확률적 모형 터득
■ 정칙화 및 커널화 같은 고급 기술을 통한 실험
■ 신경망과 몇몇 딥러닝 아키텍처에 대해 파고들기 ■ 기본적인 몇 가지 멀티암드 밴딧 알고리즘의 적용
■ 스칼라 병렬 컬렉션, 아카 액터, 아파치 스파크 클러스터를 이용한 빅데이터 문제 해결
■ 금융 시장의 기술적 분석에 핵심적인 학습 전략 적용

이 책의 대상 독자

머신 러닝 알고리즘을 만들고 검증하고 적용하길 원하고 스칼라 프로그래밍에 대한 배경지식을 갖춘 소프트웨어 개발자를 위한 책이다. 또한 이 책은 함수형 프로그래밍을 살펴보고자 하거나 스칼라를 사용해 기존 애플리케이션의 확장성을 개선하려는 데이터 과학자에게도 도움이 될 수 있다.

이 책의 구성

1장. ‘시작하기’에서는 통계적 분석, 분류, 회귀, 예측, 군집화, 최적화에 대한 기본 개념을 소개한다. 또한 스칼라 언어, 특성, 라이브러리와 간단한 애플리케이션 구현을 다룬다.
2장. ‘데이터 파이프라인’에서는 분류에 대한 전형적인 작업 흐름, 편향/분산 상반 관계(trade-off)에 대한 개념과 금융 시장의 기술적 분석에 적용된 스칼라 의존성 주입을 사용한 검증을 설명한다.
3장. ‘데이터 전처리’에서는 시계열 분석을 다루며 데이터 전처리 및 이동 평균, 이산 푸리에 변환, 재귀적 칼만 필터와 같은 평활 기술을 구현하는 데 스칼라를 활용한다.
4장. ‘비지도 학습’에서는 K-평균 군집화, 가우스 조합 기댓값-최대화, 함수 근사와 같은 핵심 군집화 방법을 다룬다.
5장. ‘차원 축소’에서는 쿨백-라이블러 발산, 선형 모형을 위한 주성분 분석, 비선형 모형에 적용된 다면성의 개요를 설명한다.
6장. ‘단순 베이즈 분류기’에서는 확률적 그래프 모형과 더 구체적으로는 단순 베이즈 모형 및 이를 텍스트 마이닝에 적용하는 것에 집중한다.
7장. ‘순차적 데이터 모형’에서는 마코프 과정과 은닉 마코프 모형의 완전한 구현, 금융 시장 데이터에서의 패턴 인식에 적용된 조건적 무작위장(CRF, Conditional Random Field)을 소개한다.
8장. ‘몬테카를로 추론’에서는 박스-뮬러 테크닉을 사용한 가우스 샘플링, 교체를 통한 부트스트랩 복제, 그리고 폭넓게 적용 가능한 알고리즘인 메트로폴리스-헤이스팅스 알고리즘을 마코프 체인 몬테카를로를 위해 설명한다.
9장. ‘회귀와 정칙화’에서는 선형 및 최소제곱 회귀의 전형적인 구현, 정칙화(regularization) 기술로서의 능형 회귀, 로지스틱 회귀를 다룬다.
10장. ‘다층 퍼셉트론’에서는 전방 전달 신경망(FFNN, Feed-Forward Neural Network)과 다층 퍼셉트론 분류기의 완전한 구현을 설명한다.
11장. ‘딥러닝’에서는 희소 오토인코더와 스칼라에서의 차원 축소를 위한 제한된 볼츠만 머신, 나선형 신경망을 구현한다.
12장. ‘커널 모형과 서포트 벡터 머신’에서는 서포트 벡터 머신(SVM) 분류 및 회귀 구현을 통한 커널 함수의 개념, 이상치 탐지를 위한 단일 클래스 SVM을 다룬다.
13장. ‘진화적 연산’에서는 진화적 연산(evolutionary computing)에 대한 기본과 다목적 유전 알고리즘의 서로 다른 구성 요소 구현을 다룬다.
14장. ‘멀티암드 밴딧’에서는 입실론-탐욕 알고리즘을 사용한 탐색-활용 상반 관계의 개념, 상단신뢰도 제한 기술, 환경 제한이 없는 톰슨 샘플링을 소개한다.
15장. ‘강화 학습’에서는 Q-학습 알고리즘의 구현을 통해 강화 학습의 개념을 살펴보고 학습 분류기 시스템을 구축하기 위한 템플릿을 소개한다.
16장. ‘스칼라와 아카에서의 병렬화’에서는 확장 가능한 애플리케이션을 만들기 위한 아티팩트 및 프레임워크를 설명하고, 스칼라 병렬 컬렉션과 아카 기반으로 분산화된 연산의 상대 성능을 평가한다.
17장. ‘아피치 스파크 MLlib’에서는 아파치 스파크의 아키텍처와 핵심 개념, 머신 러닝을 활용하는 회복력 있는 분산 데이터셋, 재사용 가능한 ML 파이프라인, 분산된 다이버전스(divergence)로 MLlib 확장, 스파크 스트리밍 라이브러리의 예제 등을 다룬다.
부록 A. ‘기본 개념’에서는 이 책 전반에 걸쳐 사용된 스칼라 언어 구조, 선형대수의 요소, 최적화 기술을 설명한다.
부록 B. ‘참조’에서는 장별로 참조 자료를 보여주는 리스트를 제공한다.

저자/역자 소개

지은이의 말

뉴스 미디어나 기술 콘퍼런스, 심지어는 커피숍에서조차 빅데이터에 대해 듣지 않는 날이 이제 거의 없다. 처리 모니터링, 리서치 또는 간단한 인간 행동으로부터 수집된 데이터의 양은 점점 증가하고 있으며, 이것으로부터 지식을 뽑아낼 수 있어야만 가치가 있을 것이다.
이 책은 머신 러닝이 무엇인지, 왜 해야 하는지, 어떻게 하는지를 다룬다.

● 머신 러닝의 목적과 수학적 기초는 무엇인가?
● 머신 러닝 알고리즘을 구현하는 데 스칼라가 이상적인 언어인 이유는 무엇인가?
● 실제 세계의 문제를 해결하는 데 머신 러닝을 어떻게 적용할 것인가?

이 책 전반에 걸쳐 머신 러닝 알고리즘을 다이어그램, 수학 공식, 문서화된 스칼라 코드 조각으로 설명하며, 여러분만의 방식으로 핵심 개념을 이해하도록 해줄 것이다.

지은이 소개

패트릭 니콜라스(Patrick R. Nicolas)

캘리포니아 애자일 SDEAgile SDE의 공학 이사다. 소프트웨어공학, C++, 자바와 최근의 스칼라/스파크 애플리케이션 구축에 이르기까지 25년 이상의 경력을 보유했으며, 여러 개의 관리 직위를 맡아왔다. 실시간 분석, 모델링, 비선형 모형 개발 등에 관심이 많다.

옮긴이의 말

최근 머신 러닝이나 딥러닝에 대한 관심이 조금 사그라든 것 같지만, 적어도 데이터 분석이나 데이터 처리 분야에서 일하는 개발자에게 요구되는 머신 러닝 관련 지식이나 기술 수준은 점차 높아지고 있는 것이 현실이다. 실제 관련 업무에 머신 러닝 알고리즘이 적용되는 사례가 늘어나고 있을 뿐만 아니라, 머신 러닝을 실험하거나 실무에 적용할 수 있게 해주는 라이브러리나 프레임워크 또한 양적 측면과 질적 측면 모두에서 빠르게 개선되고 있다.
일반적으로 실무에서 머신 러닝이나 고도화된 알고리즘을 적용하려 하면, 먼저 쉽게 접할 수 있는 파이썬이나 R 등과 같은 언어에 기반을 둔 도구로 실험해본다. 실험해보고 나서 유용하다고 판단되면, 기존에 운용하고 있는 서버 및 데이터에 부응하도록 적절히 설계하는 동시에 엔터프라이즈급에 걸맞은 프레임워크를 사용하게 된다. 이러한 측면에서 자바 중심의 JVM 진영에서는 아파치 스파크(Apache Spark)가 크게 각광받고 있다.
회사에서 몇 가지 검토를 마친 후 프로젝트에 스파크를 적용하기로 했다고 가정해보자. 그리고 이를 수행해야 하는 책임이 여러분에게 주어졌다. 스파크는 스칼라로 돼 있기 때문에 여러분이 스칼라에 대한 지식을 어느 정도 갖고 있지 않았다면 회사는 여러분에게 이 일을 맡기지 않았을 것이다. 혹 자바 분야에서 잔뼈가 굵은 개발자라면, 스칼라는 물론 머신 러닝 알고리즘도 처음부터 배워야만 할 수 있다. 어찌 됐든 여러분은 스칼라를 피할 수 없게 됐다.
이제 여러분은 멀티 패러다임 언어로서 스칼라가 지닌 특성과 관련 디자인 패턴 등을 심도 있게 학습해야 한다. 또한 주요 머신 러닝 알고리즘에 대해서도 공부해야 한다. 이 책이야말로 바로 그러한 상황에 놓인 개발자에게 최적의 가이드라 할 수 있다. 이 책은 머신 러닝에 스칼라를 적용하고자 하는 개발자에게 필요한 스칼라의 기본적인 특성부터 데이터 파이프라인과 처리, 주요 머신 러닝 알고리즘의 구현까지 모두 망라해 자세히 설명한다. 대부분의 예제는 금융 데이터를 기반으로 구현돼 있으며, 특히 저자가 직접 스칼라로 작성한 모든 코드와 알고리즘을 상세히 설명한 점이 특징이다. 소스 코드를 살펴보며 저자의 설명을 따라가는 일이 다소 지루하고 힘들 수도 있지만, 한 단계 발전된 개발자가 되려면 피할 수 없는 일이다.
또한 주요 머신 러닝 알고리즘에서 사용되는 수학적 개념과 관련 논문이 부록으로 정리돼 있으므로 필요한 내용을 쉽게 참조할 수 있다. 이 책은 수준 높은 스칼라 코드를 작성하는 데 활용할 수 있는 참고 서적으로도 큰 가치를 지닌다.

옮긴이 소개

이판호

성균관대학교에서 통계학을 전공했으며 금융 업계에서 주로 데이터 분석 관련 업무를 맡아왔다. 프로그래밍 세계에 본격적으로 입문한 이후로는 데이터를 기반으로 하는 금융 투자 및 이를 위한 프로그램 개발에 관심을 두고 있다. 에이콘출판사에서 펴낸 『R 병렬 프로그래밍』(2017), 『파이썬으로 배우는 데이터 과학 2/e』(2017), 『Akka 쿡북』(2018)을 번역했다.

목차

목차
  • 1장. 시작하기
    • 호기심 있는 독자를 위한 수학적 표기법
    • 왜 머신 러닝인가?
      • 분류
      • 예측
      • 최적화
      • 회귀
    • 왜 스칼라인가?
      • 함수형 언어로서의 스칼라
      • 객체 지향 언어로서의 스칼라
      • 확장성 있는 언어로서의 스칼라
    • 모형 범주화
    • 머신 러닝 알고리즘의 분류
      • 비지도 학습
      • 지도 학습
      • 준지도 학습
      • 강화 학습
    • 자바 라이브러리 활용하기
    • 도구와 프레임워크
      • 자바
      • 스칼라
      • SBT
      • 아파치 커먼즈 매스
      • JFreeChart
      • 그 외 라이브러리와 프레임워크
    • 소스 코드
      • 관례
    • 맛보기
      • 간단한 작업 흐름 작성하기
    • 요약

  • 2장. 데이터 파이프라인
    • 모형화
      • 모형이란 무엇인가?
      • 모형 대 디자인
      • 특성 선택하기
      • 특성 추출하기
    • 방법론 정의하기
    • 모나드적 데이터 변환
      • 오류 처리
      • 모나드의 구출
    • 작업 흐름 연산 모형
      • 수학적 추상화 지원
      • 작업 흐름 구축을 위해 믹스인 구성하기
      • 모듈화하기
    • 데이터 프로파일링
      • 불변 통계량
      • Z-점수와 가우스 분포
    • 모형 평가하기
      • 검증
      • 곡선하 면적
      • 교차 검증
      • 분산-편향 분해
      • 과적합
    • 요약

  • 3장. 데이터 전처리
    • 스칼라에서의 시계열
      • 컨텍스트 바운드
      • 타입과 연산
      • 레이지 뷰
    • 이동 평균
      • 단순 이동 평균
      • 가중 이동 평균
      • 지수 이동 평균
    • 푸리에 분석
      • 이산 푸리에 변환
      • DFT 기반 필터링
      • 시장 순환 감지
    • 이산 칼만 필터
      • 상태 공간 추정
      • 전이 방정식
      • 측정 방정식
      • 재귀적 알고리즘
    • 다른 전처리 기술
    • 요약

  • 4장. 비지도 학습
    • K-평균 군집화
      • K-평균
    • 기댓값-최대화
      • 가우스 조합 모형
      • EM의 개요
      • 구현
      • 분류
      • 테스트
      • 온라인 EM
      • 요약

  • 5장. 차원 축소
    • 모형 복잡도 문제
    • 발산
      • 쿨백-라이블러 발산
      • 상호 정보
    • 주성분 분석
      • 알고리즘
      • 구현
      • 테스트 사례
      • 평가
      • PCA 확장하기
    • 비선형 모형
      • 커널 PCA
      • 다양체
    • 요약

  • 6장. 단순 베이즈 분류기
    • 확률적 그래프 모형
    • 단순 베이즈 분류기
      • 다항 단순 베이즈 소개
      • 구현
    • 다변량 베르누이 분류
      • 모형
      • 구현
    • 단순 베이즈와 텍스트 마이닝
      • 기본적인 정보 검색
      • 구현
      • 테스트
    • 장점과 단점
    • 요약

  • 7장. 순차적 데이터 모형
    • 마코프 결정 과정
      • 마코프 성질
      • 1차 이산 마코프 체인
    • 은닉 마코프 모형
      • 표기법
      • 람다 모형
      • 디자인
      • 평가(CF-1)
      • 훈련(CF-2)
      • 디코딩
      • 모두 합치기
      • 테스트 사례 1: 훈련
      • 테스트 사례 2: 평가
      • 필터링 기술로서의 HMM
    • 조건부 무작위장
      • CRF 소개
      • 선형 연쇄 CRF
    • 정칙화 CRF와 텍스트 분석
      • 특성 함수 모형
      • 디자인
      • 구현
      • 테스트
    • CRF와 HMM 비교하기
    • 성능 고려 사항
    • 요약

  • 8장. 몬테카를로 추론
    • 샘플링의 목적
    • 가우스 샘플링
      • 박스-뮬러 변환
    • 몬테카를로 근사
      • 개론
      • 구현
    • 교체를 통한 부트스트래핑
      • 개요
      • 리샘플링
      • 구현
      • 부트스트랩의 장단점
    • 마코프 연쇄 몬테카를로
      • 개요
      • 메트로폴리스-헤이스팅스
      • 구현
      • 테스트
    • 요약

  • 9장. 회귀와 정칙화
    • 선형 회귀
      • 일변량 선형 회귀
      • 통상적인 최소제곱 회귀
    • 정칙화
      • Ln 조도 불이익
      • 능형 회귀
      • 디자인
      • 구현
      • 테스트 사례
    • 수치적 최적화
    • 로지스틱 회귀
      • 로지스틱 함수
      • 디자인
      • 훈련 작업 흐름
      • 분류
    • 요약

  • 10장. 다층 퍼셉트론
    • 전방 전달 신경망
      • 생물학적 배경
      • 수학적 배경
    • 다층 퍼셉트론
      • 활성화 함수
      • 네트워크 토폴로지
      • 디자인
      • 설정
      • 네트워크 구성 요소
      • 모형
      • 문제의 타입(방식)
      • 온라인 훈련 대 배치 훈련
      • 훈련 회차
      • 훈련과 분류
    • 평가
      • 실행 프로파일
      • 학습률의 영향
      • 가속도 인자의 영향
      • 은닉층 개수의 영향
      • 테스트 사례
    • 이점과 한계
    • 요약

  • 11장. 딥러닝
    • 희소 오토인코더
      • 저완성 오토인코더
      • 결정적 오토인코더
      • 범주화
      • 전방 전달 희소, 저완성 오토인코더
      • 희소성 갱신 방정식
      • 구현
    • 제한된 볼츠만 머신
      • 볼츠만 머신
      • 이항 제한된 볼츠만 머신
    • 합성곱 신경망
      • 국소 수용 영역
      • 가중치 공유하기
      • 합성곱층
      • 부표본층
      • 한데 모으기
    • 요약

  • 12장. 커널 모형과 서포트 벡터 머신
    • 커널 함수
      • 개요
      • 일반적인 판별 커널
      • 모나드적 커널 합성
    • 서포트 벡터 머신
      • 선형 SVM
      • 비선형 SVM
      • 서포트 벡터 분류기
      • 1계층 SVC로 이상치 찾기
      • 서포트 벡터 회귀
    • 성능 고려 사항
    • 요약

  • 13장. 진화적 연산
    • 진화
      • 기원
      • NP 문제
      • 진화적 연산
    • 유전 알고리즘과 머신 러닝
    • 유전 알고리즘 구성 요소
      • 인코딩
      • 유전 연산자
      • 적합도 점수
    • 구현
      • 소프트웨어 디자인
      • 핵심 구성 요소
      • 선택
      • 개체군 증가율 통제하기
      • GA 설정
      • 교배
      • 변이
      • 생식
      • 풀이기
    • 거래 전략을 위한 GA
      • 거래 전략의 정의
      • 테스트 사례: 2008년 가을 시장 붕괴
    • 유전 알고리즘의 장점과 위험
    • 요약

  • 14장. 멀티암드 밴딧
    • K-암드 밴딧
      • 탐색-활용 상반 관계
      • 기대 누적 후회
      • 베이즈 베르누이 밴딧
      • 엡실론-탐욕 알고리즘
    • 톰슨 샘플링
      • 밴딧 컨텍스트
      • 사전/사후 베타 분포
      • 구현
      • 시뮬레이션된 탐색과 활용
    • 신뢰 상단
      • 신뢰 구간
      • 구현
    • 요약

  • 15장. 강화 학습
    • 강화 학습
      • 문제 이해하기
      • 해법: Q-학습
      • 구현
      • Q-학습을 사용한 옵션 거래
      • 한데 합하기
      • 평가
      • 강화 학습의 장점과 단점
    • 학습 분류기 시스템
      • LCS 소개
      • 학습과 평가 조합하기
      • 전문 용어
    • 요약

  • 16장. 스칼라와 아카에서의 병렬화
    • 개요
    • 스칼라
      • 객체 생성
      • 스트림
      • 병렬 컬렉션
    • 액터를 통한 확장성
      • 액터 모형
      • 분할
      • 액터를 넘어: 반응적 프로그래밍
    • 아카
      • 마스터-워커
      • 퓨처
    • 요약

  • 17장. 아파치 스파크 MLlib
    • 개요
    • 아파치 스파크 코어
      • 왜 스파크인가?
      • 디자인 원칙
      • 스파크로 실험하기
    • MLlib 라이브러리
      • 개요
      • RDD 만들기
      • MLlib을 사용한 K-평균
      • 테스트
    • 재사용 가능한 ML 파이프라인
      • 재사용 가능한 ML 변환
      • 아파치 스파크와 ScalaTest
    • 스파크 확장하기
      • 쿨백-라이블러 발산
      • 구현
      • 쿨백-라이블러 평가기
    • 스트리밍 엔진
      • 왜 스트리밍인가?
      • 배치와 실시간 처리
      • 아키텍처 개요
      • 이산화 스트림
      • 사용 사례: 연속적인 파싱
      • 체크포인팅
    • 성능 평가
      • 개변수 조정하기
      • 성능 고려 사항
    • 장점과 단점
    • 요약

  • 부록 A. 기본 개념
    • 스칼라 프로그래밍
    • 수학
    • 금융 101

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안