Go를 활용한 머신 러닝 [Go 프로그래밍 언어를 사용해 회귀분석, 분류, 클러스터링, 시계열 모델, 신경망 및 딥러닝 구현하기]
- 원서명Machine Learning With Go: Implement Regression, Classification, Clustering, Time-series Models, Neural Networks, and More using the Go Programming Language (ISBN 9781785882104)
- 지은이다니엘 화이트낵(Daniel Whitenack)
- 옮긴이장세윤
- ISBN : 9791161752662
- 30,000원
- 2019년 01월 31일 펴냄
- 페이퍼백 | 384쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 데이터 과학
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
Go 언어를 머신 러닝 분야에 활용하는 내용을 다룬다. Go 언어는 요즘 널리 사용되는 다른 언어와 달리 단순함과 효율성을 강조하는 언어다. 이 책은 Go 언어를 활용해 생산성과 효율성이 높은 머신 러닝 프로그램 작성 방법을 알려준다. 또한 데이터 수집, 정리, 구문 분석, 머신 러닝 프로그램의 평가 및 검증 방법, 회귀 분석, 분류, 군집화, 시계열 분석, 신경망 및 딥러닝 등 머신 러닝에 대한 내용을 충실하게 다루고 있기 때문에 머신 러닝을 공부하고자 하는 독자들에게도 많은 도움을 줄 것이다. 또한 Go 언어를 머신 러닝 분야에 활용하고자 하는 데이터 과학자 및 Go 언어 개발자에게도 좋은 참고 서적이다.
이 책에서 다루는 내용
█ 데이터의 수집, 구성, 구문 분석 및 정리 방법
█ 행렬, 선형 대수학, 통계 및 확률
█ 머신 러닝 모델을 평가하고 검증하는 방법
█ 회귀분석, 분류, 군집화
█ 신경망과 딥러닝
█ 시계열 모델을 활용해 예측 수행 및 이상 감지 작업 수행
█ 분석도구 및 머신 러닝 모델 배포 방법
█ 머신 러닝 모델 최적화 방법
이 책의 대상 독자
█ 머신 러닝 및 데이터 분석에 관심이 있는 Go 프로그래머
█ Go 언어에 관심이 있고 Go를 머신 러닝과 데이터 분석 워크플로에 연동하는 데 관심이 있는 데이터 과학자, 데이터 분석가, 데이터 엔지니어
이 책의 구성
1장부터 3장까지는 머신 러닝 워크플로를 위해 데이터를 준비하고 분석하는 내용이다.
1장, ‘데이터 수집 및 구성’에서는 로컬 및 원격 소스로부터 데이터를 수집, 정리하는 방법과 데이터의 구문을 분석하는 방법을 다룬다. 1장에서는 다양한 장소에 다양한 포맷으로 저장돼 있는 데이터와 상호작용하는 방법과 데이터를 정리하고 구문 분석한 뒤 출력하는 방법을 이해할 수 있다.
2장, ‘행렬, 확률 및 통계’에서는 행렬 및 행렬 연산을 위해 데이터를 구성하는 방법을 다룬다. 머신 러닝에 활용되는 도구들로 Go 프로그램에서 행렬을 형성하는 방법과 이 행렬을 활용해 다양한 유형의 행렬 연산을 수행하는 방법을 이해할 수 있다. 또한 일상 데이터 분석 작업의 핵심인 통계적 측정과 수행 방법에 대해서도 다룬다. 2장을 통해 견고하게 데이터 분석을 요약하는 방법, 분포를 기술하고 시각화하는 방법, 가설을 정량화하고 차원(Dimension) 감소와 같은 데이터세트를 변환하는 방법을 이해할 수 있다.
3장, ‘평가 및 검증’에서는 머신 러닝 애플리케이션의 성능을 측정하고 일반화하는 데 핵심이 되는 평가 및 검증에 대한 내용을 다룬다. 3장을 통해 모델(즉, 평가 모델 측정)의 성능을 계량하기 위한 다양한 측정 방법 간의 차이점뿐만 아니라 이런 성능 측정 모델을 좀 더 일반화해 검증하는 기법을 이해할 수 있다.
4장부터 7장까지는 머신 러닝 기법을 다룬다.
4장, ‘회귀분석’에서는 연속적인 변수를 모델링하고 다른 모델의 기반이 되는 회귀(Regression)를 설명한다. 회귀는 즉시 해석할 수 있는 모델을 만든다. 따라서 조직에서 예측 기능을 도입할 때 매우 좋은 시작점이 될 수 있다.
5장, ‘분류’에서는 대상 변수가 일반적으로 카테고리 형태이거나 레이블(Label)이 붙어있다는 점에서 회귀 분석과 다른 머신 러닝 기법인 ‘분류(Clssification)’를 다룬다. 예를 들어 분류 모델은 이메일을 스팸 카테고리와 비-스팸 카테고리로 분류하거나 네트워크 트래픽이 사기성인지 사기성이 아닌지를 구분할 수 있다.
6장, ‘클러스터링’에서는 샘플의 그룹을 형성하는 데 사용되며 감독되지 않는 머신 러닝 기법인 클러스터링(Clustering)에 대한 내용을 다룬다. 데이터의 구조를 더 잘 이해하기 위해서 자동으로 데이터 요소 그룹을 형성하는 방법을 이해할 수 있을 것이다.
7장, ‘시계열 분석 및 이상 감지’에서는 주식 가격, 사용자 이벤트 등과 같은 시계열(Time Series) 데이터를 모델링하는 데 활용되는 기술을 소개한다. 시계열의 다양한 용어를 이해하고 시계열의 모델을 제작하고, 시계열에서 비정상적인 부분을 감지하는 방법을 알 수 있다.
8장부터 9장까지는 머신 러닝을 활용하는 방법을 다룬다.
8장, ‘신경망 및 딥러닝’에서는 신경망을 활용해 회귀, 분류, 이미지 처리를 수행하는 데 사용되는 기술을 소개한다. 더 복잡한 모델링 기술을 언제 그리고 어떻게 적용하는지 이해할 수 있다.
9장, ‘분석 결과 및 모델 배포하기’에서는 개발한 모델을 프로덕션 환경으로 배포하고 프로덕션 수준의 데이터를 통해 처리 결과를 배포하는 방법에 대해 다룬다. 책에서 사용한 코드를 크게 변경하지 않고 두 가지 작업을 쉽게 처리할 수 있는 방법을 설명한다.
부록, ‘머신 러닝과 관련된 알고리즘 및 기술’에서는 이 책에서 사용하는 용어 및 기술에 대한 내용과 머신 러닝 워크플로우와 관련된 알고리즘, 최적화, 기술에 대한 정보를 제공한다.
목차
목차
- 1장. 데이터 수집 및 구성
- 데이터 처리하기 - Gopher 스타일
- Go를 활용한 데이터 수집 및 구성의 모범 사례
- CSV 파일
- 파일에서 CSV 데이터 읽기
- 예상하지 못한 필드 처리하기
- 예상하지 못한 타입 처리하기
- 데이터 프레임을 활용해 CSV 데이터 조작하기
- JSON
- JSON 파싱하기
- JSON 출력
- SQL 유형 데이터베이스
- SQL 데이터베이스에 연결하기
- 데이터베이스 쿼리하기
- 데이터베이스 수정하기
- 캐싱(Caching)
- 메모리에 데이터 캐싱하기
- 디스크에 로컬로 데이터 캐싱하기
- 데이터 버전 관리
- Pachyderm jargon
- Pachyderm 설치
- 데이터 버전 관리를 위한 데이터 저장소 생성하기
- 데이터 저장소에 데이터 넣기
- 버전 관리되는 데이터 저장소에서 데이터 가져오기
- 참조
- 요약
- 2장. 행렬, 확률 및 통계
- 행렬 및 벡터
- 벡터
- 벡터 연산
- 행렬
- 행렬 연산
- 통계
- 분포(Distribution)
- 통계적 측정 방법
- 분포 시각화하기
- 확률
- 확률 변수(Random Variables)
- 확률 측정방법
- 독립 및 조건부 확률
- 가설 검정(Hypothesis testing)
- 참조
- 요약
- 행렬 및 벡터
- 3장. 평가 및 검증
- 평가(Evaluation)
- 연속형 측정 방법
- 범주형 측정 방법
- 검증(Validation)
- 훈련(학습) 및 테스트 데이터 집합
- 홀드아웃(Holdout) 집합
- 교차 검증(Cross Validation)
- 참조
- 요약
- 평가(Evaluation)
- 4장. 회귀분석
- 회귀분석 모델 용어 이해하기
- 선형 회귀분석
- 선형 회귀분석 개요
- 선형 회귀분석 가정 및 함정
- 선형 회귀분석 예제
- 다중 선형 회귀분석
- 비선형 및 다른 유형의 회귀분석
- 참조
- 요약
- 5장. 분류
- 분류 모델 용어 이해하기
- 로지스틱 회귀분석
- 로지스틱 회귀분석 개요
- 로지스틱 회귀분석의 가정 및 함정(문제점)
- 로지스틱 회귀분석 예제
- k-최근접 이웃 모델
- kNN의 개요
- kNN의 가정 및 함정(문제점)
- kNN 예제
- 의사결정 트리와 랜덤 포레스트
- 의사결정 트리와 랜덤 포레스트 개요
- 의사결정 트리와 랜덤 프레스트의 가정 및 함정(문제점)
- 의사결정 트리 예제
- 랜덤 포레스트 예제
- 나이브 베이즈
- 나이브 베이즈와 가정에 대한 개요
- 나이브 베이즈 예제
- 참조
- 요약
- 6장. 클러스터링
- 클러스터링 모델 용어 이해하기
- 거리 또는 유사도 측정하기
- 클러스터링 기법 평가하기
- 내부 클러스터링 평가 방법
- 외부 클러스터링 평가
- k-평균 클러스터링
- k-평균 클러스터링 개요
- k-평균 클러스터링의 가정 및 함정(문제점)
- k-평균 클러스터링 예제
- 기타 클러스터링 기법
- 참조
- 요약
- 7장. 시계열 분석 및 이상 감지
- Go에서 시계열 데이터 표현하기
- 시계열 데이터 용어 이해하기
- 시계열 관련 통계
- 자기상관(Autocorrelation)
- 편 자기상관(Partial autocorrelation)
- 예측을 위한 자동 회귀 모델
- 자동 회귀 모델 개요
- 자동 회귀 모델의 가정 및 함정(문제점)
- 자동 회귀 모델 예제
- 자동 회귀 이동 평균 모델 및 기타 시계열 분석 모델
- 이상 감지
- 참조
- 요약
- 8장. 신경망 및 딥러닝
- 신경망에 대한 용어 이해하기
- 간단한 신경망 구축하기
- 신경망의 노드
- 신경망 아키텍처
- 이 아키텍처가 동작하는 이유
- 신경망 훈련 및 학습 시키기
- 간단한 신경망 활용하기
- 실제 데이터를 사용해 신경망 훈련시키기
- 신경망 평가하기
- 딥러닝 소개
- 딥러닝 모델이란?
- Go를 활용한 딥러닝
- 참조
- 요약
- 9장. 분석 결과 및 모델 배포하기
- 원격 컴퓨터에서 안정적으로 머신 러닝 모델 실행하기
- Docker 및 Docker 용어에 대한 간단한 소개
- 머신 러닝 응용 프로그램의 Docker-izing
- 확장 가능하고 재현 가능한 머신 러닝 파이프라인 구축하기
- Pachyderm 및 Kubernetes 클러스터 설정하기
- Pachyderm 머신 러닝 파이프라인 구축하기
- 파이프라인 업데이트 및 출처 검사
- 파이프라인 단계 확장하기
- 참조
- 요약
- 원격 컴퓨터에서 안정적으로 머신 러닝 모델 실행하기
- 부록. 머신 러닝과 관련된 알고리즘/기술
- 경사 하강법
- 역전파
도서 오류 신고
정오표
정오표
[p.208 : 아래에서 1행]
동일한
->
다른