Top

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장, ‘분석 결과 및 모델 배포하기’에서는 개발한 모델을 프로덕션 환경으로 배포하고 프로덕션 수준의 데이터를 통해 처리 결과를 배포하는 방법에 대해 다룬다. 책에서 사용한 코드를 크게 변경하지 않고 두 가지 작업을 쉽게 처리할 수 있는 방법을 설명한다.
부록, ‘머신 러닝과 관련된 알고리즘 및 기술’에서는 이 책에서 사용하는 용어 및 기술에 대한 내용과 머신 러닝 워크플로우와 관련된 알고리즘, 최적화, 기술에 대한 정보를 제공한다.

저자/역자 소개

지은이의 말

좋은 기술력을 가진 회사와 대기업 모두 머신 러닝과 인공 지능이 유행이다. 데이터 과학자들은 무인 자동차에서부터 고양이 그리기에 이르기까지 모든 분야에 머신 러닝을 사용한다. 하지만 데이터 과학 커뮤니티를 찾아보면 파이썬과 R 사이에서 발생하는 언어 전쟁을 쉽게 접할 수 있을 것이다. 머신 러닝에 대한 대부분의 내용은 이런 언어들이 차지하고 있으며 기업 등 조직에서 머신 러닝을 연동할 때는 이런 언어가 유일한 선택인 것처럼 보인다. 이 책에서는 머신 러닝의 세 번째 옵션인 구글에서 만든 오픈 소스 프로그래밍 언어 Go에 대해서 살펴본다.
Go 프로그래머의 사고 방식과 더불어 Go 언어의 고유한 기능이 데이터 과학자들이 접하는 공통된 문제를 극복하는 데 도움이 될 수 있다. 특히 데이터 과학자들은 (불행하게도) 비효율적이고 유지보수가 불가능하며 나쁜 코드를 생산하는 것으로 악명이 높다. 이 책은 이런 문제점을 언급하며, 높은 수준에서 유지보수가 가능한 애플리케이션을 생성하면서 머신 러닝에서 생산성을 유지하는 방법을 보여준다. 또한 기존 엔지니어링 조직 내에서 분석 및 머신 러닝 코드를 통합하는 공통 과제를 극복하는 방법에 대해서도 보여준다.
이 책은 독자들이 Go를 활용해 강력하고 가치 있는 애플리케이션의 제작을 통해 생산적이고 혁신적인 데이터 분석가로 발돋움할 수 있도록 도움을 줄 것이다. 이 책은 이를 위해 Go를 통한 머신 러닝의 기술적인 면과 프로그래밍적인 면을 분명하게 소개한다. 그러나 이 책은 또한 독자들이 현실 세계의 분석을 위한 작업 흐름과 철학을 이해할 수 있도록 안내하는 역할도 한다.

지은이 소개

다니엘 화이트낵(Daniel Whitenack)

파키덤(Pachyderm)을 활용해 데이터 과학을 연구하는 숙련된 데이터 과학자다. 예측 모델, 데이터 시각화, 통계 분석 등을 포함하는 혁신적인 분산 데이터 파이프라인을 개발한다. 전 세계의 콘퍼런스(GopherCon, JuliaCon, PyCon, ODSC, Spark 서밋 등)에 활발히 참여해 발표하며 퍼듀 대학교에서 데이터 과학과 엔지니어링을 가르치고 있다. 또한 주피터(Juphyter)의 Go 커널을 관리하며 다양한 오픈 소스 데이터 과학 프로젝트에 적극적으로 기여하고 있다.

옮긴이의 말

이 책은 데이터 분석 및 머신 러닝에서 Go 프로그래밍 언어를 활용하는 데 필요한 전반적인 내용을 다루고 있다. 머신 러닝과 데이터 분석에 관심이 있는, Go 언어를 다룰 줄 아는 프로그래머나 Go 언어와 머신 러닝을 연동하는 데 관심이 있는 독자들에게 좋은 참고 서적이 될 수 있다.
1부로 볼 수 있는 1장부터 3장은 머신 러닝을 위해 데이터를 준비하고 분석하는 내용으로 구성돼 있다. 데이터의 수집, 정리, 데이터의 구문 분석, 머신 러닝 프로그램의 성능을 측정하고 검증하는 내용으로 구성돼 있다. 2부, 4장에서 7장까지는 회귀분석, 분류, 클러스터링, 시계열 분석과 같은 다양한 머신 러닝 기법을 다루는 내용으로 구성돼 있다. 머신 러닝 모델의 가장 기본이 되는 회귀 분석을 시작으로 카테고리 형태로 데이터를 분류하는 분류 기법, 흩어져 있는 데이터를 여러 데이터 그룹으로 모으는 방법인 클러스터링, 시계열 데이터 분석에 대한 내용을 다룬다. 이를 통해 다양한 머신 러닝 기법에 대해 살펴보고 Go를 활용해 결과를 도출하는 방법을 살펴볼 수 있다. 3부, 8장과 9장에서는 머신 러닝을 활용하는 방법을 다룬다. 8장은 신경망 및 딥러닝을 통해 회귀분석, 분류와 같은 머신 러닝을 처리하는 데 신경망을 활용하는 기술을 소개한다. 8장을 통해 더 복잡한 데이터 모델링 기법을 적용하는 방법을 이해할 수 있다. 9장에서는 지금까지 개발한 머신 러닝 모델을 제품 환경으로 배포하는 방법과 데이터 처리 결과를 배포하는 방법을 살펴본다.
구글에서 만든 Go 언어는 출시 이후 여러 분야에서 점점 더 많이 활용되고 있다. Go 언어는 단순함을 유지하려고 노력하는 언어이기 때문에 빠르게 배울 수 있다는 장점이 있다. 책에서는 이런 특정을 반영해 높은 수준에서 유지보수가 가능한 프로그램을 생성하면서 머신 러닝에서 생산성을 유지하는 방법을 보여준다. 따라서 이 책은 생산성이 높은 머신 러닝 프로그램을 작성하고자 하는 데이터 과학자와 Go 언어를 활용해 머신 러닝 분야를 배우고자 하는 독자들에게 많은 도움이 될 것이다.
번역을 진행하면서 저자의 의도를 파악하려고 많은 노력을 기울였지만 의도를 제대로 파악하지 못한 부분이 있을지도 모르겠다. 번역이 잘못된 부분을 비롯해 책에 관련된 어떠한 의견이라도 보내준다면 소중히 여겨 더 좋은 책으로 만들어 가는 데 참고하겠다.

옮긴이 소개

장세윤

유니티 한국 지사에서 필드 엔지니어로 근무하며 기술 지원, 유니티 엔진 기술 홍보, 기술 문서 번역 업무를 진행했다. 현재는 유니티 엔진, 언리얼 엔진을 활용한 게임 개발 교육을 진행하는 프리랜서 강사 및 기술 서적 번역가로 활동하고 있다.

목차

목차
  • 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)
    • 참조
    • 요약

  • 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.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.208 : 아래에서 1행]
동일한
->
다른