Top

파이썬으로 배우는 대규모 머신 러닝 [대규모 데이터 분석과 처리를 위한 다양한 머신 러닝 기법 활용]

  • 원서명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장, ‘스파크를 활용한 실무에서의 머신 러닝’에서는 스파크를 사용해 즉각적으로 데이터를 조작하고 대규모 데이터 세트로 예측 모델을 만들기 위해 필요한 모든 내용을 다룬다.

저자/역자 소개

지은이의 말

머신 러닝은 보통 실제로 활용 가능한 인공지능의 한 부분으로 알려져 있다. 머신 러닝의 목표는 이전에 사용된 적이 없는 데이터 세트의 결과를 최대한 정확하게 예측하기 위해 기존 데이터 세트를 기반으로 하나의 함수를 찾는 것이다. 이는 레이블과 클래스의 형태(분류 문제) 또는 지속적인 값(회귀 문제)의 형태로 정의된다. 실생활에서 볼 수 있는 머신 러닝의 예는 미래 주가 예측부터 일련의 문서에서 저자의 성별을 분류하는 문제에 이르기까지 다양하다. 이 책 전체에서 파이썬으로 구현된 실제 예제를 보게 될 텐데, 이를 통해 가장 중요한 머신 러닝의 개념과 대규모 데이터 세트에 적합한 방법을 명확히 이해하게 될 것이다. 대규모 데이터 세트에 적용할 수 있는 지도 학습(분류 & 회귀)은 물론, (주성분 분석(Principal Component Analysis, PCA), 클러스터링, 주제 모델링 같은) 비지도 학습에 대해서도 살펴볼 것이다.

지은이 소개

바스티앙 스야딘(Bastiaan Sjardin)

인공지능 및 수학을 전공한 데이터 과학자이자 스타트업 창업자다. 레이던 대학(University of Leiden)에서 매사추세츠 공과대학(MIT) 캠퍼스 과정을 이수하고 인지 과학(cognitive science) 분야에서 석사학위를 취득했다. 지난 5년 동안 광범위한 데이터 과학 및 인공지능 프로젝트를 수행했다. 코세라(Coursera)에서 진행되는 미시간대학(University of Michigan) 소셜 네트워크 분석 과정과 존스홉킨스 대학교(Johns Hopkins University) 머신 러닝 과정의 TA를 담당하고 있다. 선호하는 프로그래밍 언어는 파이썬과 R이다. 현재 머신 러닝 및 인공지능 애플리케이션을 대규모로 제공하는 Quandbee(http://www.quandbee.com/)의 공동 창업자로 회사를 이끌고 있다.

루카 마싸론(Luca Massaron)

다변수 통계 분석, 머신 러닝, 고객 분석을 전문으로 하는 데이터 과학자이자 마케팅 리서치 디렉터다. 지난 10년간 추론, 통계, 데이터 마이닝, 알고리즘을 활용해 실제적인 문제를 해결하고, 데이터에서 가치를 창출하는 일에 몸담았다. 이탈리아에서 웹 잠재 고객 분석 분야의 개척자로 활동한 이후 캐글(Kaggle) 상위 10위에 오르기까지 데이터 및 데이터 분석과 관련된 모든 일은 물론, 전문가 및 비전문가를 대상으로 데이터 기반 지식 검색의 잠재력을 입증하는 일에 열정적이었다. 불필요한 정교함보다 단순함을 선호하는 그답게, 기본적인 작업만으로도 데이터 과학 분야에서 많은 업적을 이뤄낼 것으로 믿고 있다.

알베르토 보스체티(Alberto Boschetti)

신호 처리 및 통계 분야의 전문성을 갖춘 데이터 과학자다. 정보 통신 공학 박사학위를 소지했으며, 현재 런던에서 생활하고 있다. 업무상 진행되는 프로젝트에서 자연어 처리 NLP와 머신 러닝, 분산 처리에 이르기까지 다양한 문제들을 다루고 있다. 자신의 일에 매우 열정적이며 모임, 회의 및 기타 행사에 활발히 참여해 데이터 과학 기술 분야의 최신 개발 동향을 지속적으로 파악하고 있다.

옮긴이의 말

머신러닝의 시대다. 빅데이터, 클라우드, IoT와 운명을 같이하여 AI와 더불어 현재 전세계 사람들의 기대와 우려, 관심이 집중되고 있는 기술이다. 이런 상황을 반영하는 듯 조직의 규모, 산업 분야, 사업 영역에 관계없이 경영자 입장에서는 머신러닝을 적용하여 엄청난 가치를 찾아낼 것을 기대하고 실무진에서는 그 "가치"의 구체적인 그림을 그리려고 고심하는 것을 많이 본다. 꼭 필요한 영역에 머신러닝을 도입한다기 보다 소위 요즘 뜬다는 이 기술을 어디에 적용해야 할지 애써 찾는 모습도 보인다. 기술에 대한 오해는 잘못된 기대와 의미 없는 결실로 이어지기도 하므로 무엇보다 기술에 대한 정확한 이해가 선행되어야 할 것이다.

이 책은 머신러닝이라는 분야에서 언급되는 중요한 개념들을 총망라한다. 각 장에서 다루는 주제는 책 한 권으로 다뤄야 할 정도로 그 범위가 방대하다 보니 머신러닝 입문자에게는 다소 난해한 반면 중급자 이상에게는 깊이가 얕게 느껴질 수 있다. 우선 입문자에게는 이 책을 주교재로 공부하되, 모르는 개념이 있을 경우 다른 책들을 참조하는 방법을 권한다. 중급자 이상이라면 이 책에서 중점적으로 다루고 있는 "대규모" 데이터 처리 방법에 무게를 두는 것이 좋겠다. 머신러닝이라는 범주 안에 포함되는 개념, 알고리즘, 툴, 라이브러리, 소프트웨어, 프레임워크의 역할을 파악하는 소득을 얻을 수 있을 것이다.

용어 선택에 고심이 많았다. 머신러닝 관련 서적들이 출판되기 시작한지 얼마 되지 않았고, 근래에 출판된 책들에서 초자 용어가 통일되지 않은 이유다. 수학, 통계에서 이미 번역되어 통용되는 용어는 그대로 사용했으나, 그렇지 않다면 번역으로 의미전달이 분명해지는 경우에만 번역을 했다. 하이퍼파라미터, 모멘텀, 앙상블 등 번역이 오히려 의미전달을 방해하는 경우에는 굳이 억지로 번역하지 않고 음독했다. 파이썬, 하둡 등 소프트웨어, 라이브러리, 프레임워크 이름 역시 음독했다.

여러 가지 다양한 목적으로 이 책을 펼쳤을 개발자, 실무자, 학생, 엔지니어분들께 이 책이 대규모 데이터에 머신러닝을 적용하기 위한 가이드 역할을 충실히 해내길 바란다. 무엇보다 머신러닝이 단지 기술을 위한 기술이 되지 않기를 바라는 마음으로 이 책을 번역했다.

옮긴이 소개

이미정

성균관대 전자전기 컴퓨터공학부를 졸업하고, 한동대학교 정보통신공학 석사학위를 이수했다. 삼성전자 LSI 사업부 기술개발실에 근무했으며, 오라클 미들웨어 사업부에서 컨설턴트로 활동했다. 현재는 MDS 테크놀로지에서 세일즈 엔지니어로 재직 중이다. 에이콘출판사에서 출간한 『Pig를 이용한 빅데이터 처리 패턴』(2014), 『Splunk 6 핵심 기술』(2015), 『빅데이터 마이닝(2017)』을 번역했다.

목차

목차
  • 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의 실제 동작
    • 요약

  • 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에서의 병렬 컴퓨팅

도서 오류 신고

도서 오류 신고

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

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

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