Top

파이썬으로 실무에 바로 적용하는 머신 러닝

  • 지은이강봉주
  • ISBN : 9791161752570
  • 30,000원
  • 2019년 01월 31일 펴냄
  • 페이퍼백 | 424쪽 | 188*235mm
  • 시리즈 : 데이터 과학

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

2019년 세종도서 학술부문 선정도서
요약

머신 러닝을 처음 접하는 독자들이 구현 언어, 구현 패키지, 구현 편집기를 포함해 종합적으로 이해하고 바라볼 수 있도록 안내하는 책이다. 머신 러닝의 기본 개념부터 가장 범용적이고 활용도가 높은 알고리즘을 예제를 통해 설명한다. 더불어 단순한 설명으로만 멈추지 않고, 한 걸음 더 나아가 수식적인 해석도 할 수 있도록 안내한다.

이 책에서 다루는 내용

■ 머신 러닝 구현 언어인 파이썬의 기본 구조
■ 파이썬 편집기 파이참
■ 머신 러닝 기본 패키지인 넘파이, 판다스, 맷플롯립
■ 머신 러닝 패키지인 사이킷런, 케라스
■ 범용 또는 가장 활용이 많은 머신 러닝 알고리즘
■ 알고리즘의 이해를 높이기 위한 적절한 수식 도입 및 구현
■ 알고리즘마다 적절한 예와 예제

이 책의 대상 독자

■ 머신 러닝에 입문하는 데 필요한 내용을 종합적으로 이해하고자 하는 독자
■ 머신 러닝에 입문했으나 좀 더 상세한 알고리즘을 알고 한 걸음 더 나아가고자 하는 독자
■ 머신 러닝을 구현 언어의 코드와 함께 이해하고자 하는 개발자
■ 머신 러닝 알고리즘을 현장에서 바로 적용하고자 하는 데이터 과학자

이 책의 구성

이 책은 크게 두 부분으로 구성돼 있다. 머신 러닝 언어인 파이썬 언어 및 주요 패키지에 대한 설명, 그리고 각각의 알고리즘에 관한 내용이다.
파이썬 언어와 머신 러닝 기본 패키지인 사이킷런(scikit-learn), 케라스(Keras)에 대한 이해가 있다면 바로 10장부터 시작해도 무방하다.
파이썬 언어와 패키지에서 꼭 필요하다고 생각하는 언어의 기본 구조, 넘파이(NumPy), 판다스(Pandas), 맷플롯립(matplotlib), 사이킷런, 케라스를 수록했다. 또한 각 패키지의 설명은 꼭 필요한 클래스와 메소드 위주로 설명했다. 물론 이후의 머신 러닝 알고리즘의 예제에서는 해당 장에서 다루지 않는 다른 클래스와 메소드를 사용하기도 하지만 전반적인 이해를 돕도록 하는 것에 초점을 뒀다.
10장. ‘표기법’, 11장. ‘모델 평가와 선택‘과 12장. ‘선형 회귀에 의한 머신러닝 구조에 대한 이해’는 머신 러닝 이해를 위한 개요라 할 수 있어, 꼭 숙지했으면 하며 이후 다른 장은 개별적으로 필요할 때 살펴봐도 무방하다.
머신 러닝 알고리즘 중에서 가장 많이 활용되는 로지스틱회귀, 결정 나무, 나무 기반의 앙상블 모델인 랜덤 포레스트, 그래디언트 부스팅, 서포트 벡터 머신, 다층 신경망, 합성곱 신경망, 순환 신경망을 수록했으며 비지도 학습 모델인 특이값 분해, 주성분 분석, 연관 분석 및 군집 분석을 수록했다.
각 머신 러닝 알고리즘에서는 핵심이 되는 알고리즘 구조를 수식과 함께 다루며, 이를 구현한 예제도 수록했다. 알고리즘 내용에서 너무 많은 사전 지식이 필요한 경우에는 일정 부분을 하나의 사실로 인정하고 그 이후의 내용을 다룬다. 예를 들어 "특이값 분해"에서 임의의 행렬은 무조건 UDVT로 분해되는데, 분해되는 과정부터 이를 설명하기에는 수학적인 내용의 깊이도 깊고 사전 지식이 많다. 이런 이유에서 "분해가 된다는 것"을 하나의 사실로 인정하고 이후의 내용을 진행하겠다.
신경망 기법에서는 가급적 핵심이 되는 역전파(back propagation) 또는 후진 패스 과정을 간단하나마 예제와 수식으로 설명했다.
가급적 이 한 권으로 머신 러닝의 전반적인 구조와 구현을 설명하고자 했다. 이 의도가 제대로 잘 전달됐으면 한다.

상세 이미지

저자/역자 소개

지은이의 말

이 책은 3년 동안 SAS사의 머신 러닝 강의를 하면서 준비했던 자료를 기반으로 작성했다. 물론 1993년부터 25년간 이어진 데이터 분석에 대한 경험은 하나의 밑바탕이 됐다. 강의를 하면서 과연 “기본 지식” 즉, “개요와 간단한 예제”만을 알고 실무에 잘 적용할 수 있을지 궁금증이 생겼다.
실제 실무에서 프로젝트를 해보면 잘 정의된 데이터와 잘 알려진 예제와 같은 분석이 프로젝트 담당자에게 주어지지 않는다. 모든 것이 낯설고 어떻게 적용할지에 대한 막막함, 그 자체다. 어느 것 하나 제대로 적용하기 어렵다. 이것이 실무 담당자에게 닥친 현실이다.
소위 말하는 데이터 과학자가 알아야 할 지식은 너무나도 많다. 가령 데이터를 가져오기 위한 데이터베이스 접속과 SQL부터 데이터 탐색을 위한 각종 데이터 처리 기술, 마지막으로 간단한 통계량 추출부터 모델 적합을 위한 데이터 구성 기술 등 알아야 할 지식이 많아 이를 시작할 엄두가 나지 않는 경우가 많다. 여기에 더해, 적용할 툴에 대한 지식까지 필요하다. 예를 들어 SAS, 파이썬(Python), R 등을 알아야 한다. 이와 같이 시작하기 전에 알아야 하는 것이 많아, 실무에서 머신 러닝을 적용하기 쉽지 않은 배경에서 이 책을 쓰게 됐다. 나는 가급적 한 권의 책으로 현재까지 잘 알려진 모든 분석 기법을 분석 툴과 함께 전달하고자 했다. 누누히 강조하지만, 무조건 하나의 완결된 프로젝트를 특정 툴을 사용해 처음부터 끝까지 해봐야 한다. 그래야 스스로가 무엇이 부족한지를 절실히 깨달을 수 있다.
이 책은 파이썬과 파이참(PyCharm)을 통해 처음부터 끝까지 하나의 분석 결과를 얻어 낼 수 있도록 했다. 다시 말해, 어떤 부분을 읽다가 다른 책에서 필요한 내용을 찾아 이해한 후, 다시 진행하던 곳으로 오는 것이 아니라, 이 책 안에서 대부분 모든 것을 찾을 수 있도록 했다. 물론 인터넷 탐색을 통해 부족한 점을 더 채워 나갈 수는 있다.
그동안 개요만 계속 공부해서 실무에 적용하기 힘들다고 생각하거나, 알고리즘의 본래 수식적 의미를 알고자 한걸음 더 나아가기를 원하는 독자에게는 이 책이 충실한 가이드가 돼 줄 것이라고 믿는다. 개발자에게는 머신 러닝이 무엇인지, 코드상으로 어떻게 구현되는지 답을 줄 것이며, 실무 담당자에게는 분석 주제에 따른 데이터가 어떻게 정리되고 구현되는지에 대한 실마리를 안겨줄 것이다.
“왜 파이썬인가?”라는 질문은 우문이라고 생각한다. 나는 SAS, 파이썬, R를 사용한 개별 프로젝트를 경험했다. 문제는 툴이 아니다. 문제는 "분석의 목적이 무엇인가", "이용 가능한 데이터인가", "올바른 분석 기법을 적용했는가", "실제 분석의 가치를 생성하기 위한 분석 결과가 실무에 적용 가능한가" 등 전 과정을 고려해 이에 맞는 툴이 선정돼야 한다고 생각한다. 더욱이 최근에는 상용 툴인 SAS도 오픈소스 진영의 툴을 통합하고 있다. 툴 간의 상호 교환과 통합은 자연스러운 흐름이라고 생각한다. 이런 의미에서 이 책은 현 시점의 흐름을 파이썬 언어를 통해 구현했을 뿐인 것이다. 따라서 똑같은 분석 기법이나 흐름은 R로 구현 가능하며, 심지어 SAS로는 더욱 쉽고 시각적으로 구현할 수가 있는 것이다.
이 책은 머신 러닝을 이해하고 활용하는 독자라면 반드시 알아야 할 파이썬 패키지를 수록했다. 이 가운데 기본이 되는 패키지는 넘파이(NumPy), 판다스(Pandas), 맷플롯립(Matplotlib)이다.
이 패키지를 잘 아는 독자라면 해당 장은 읽지 않아도 무방하다. 머신 러닝 분석기법과 관련해서는 기본 패키지로 사이킷런(scikit-learn)과 케라스(Keras)를 선정했다. 이는 반드시 숙지하고 가야할 장이다. 그리고 각 분석기법마다 독특한 패키지가 있을 수 있다. 가령 연관분석에서는 mlxtend 패키지를 사용했다. 패키지는 현재까지 필자가 보기에 가장 안정적이고 많이 이용하는 것으로 선정했다.

지은이 소개

강봉주

1984년 서울대 계산통계학과에 입학해 학사를 취득하고 동 대학원 통계학과에서 석사 및 박사 학위를 취득했다. 1993년, 국내 SAS에서 첫 직장 생활을 했으며 이때부터 데이터 분석 관련 컨설팅 작업을 수행했다. 1995년 유니컨설팅 회사를 창립해, 주로 제조 분야에서 데이터 분석 컨설팅 및 관련 통계 패키지를 개발했다. 1997년 유니보스를 창립해 금융 분야 데이터 분석 컨설팅 및 CRM 관련 패키지를 개발했으며, 2004년에 ㈜배닌을 창립해 오픈소스 기반의 머신 러닝 및 딥러닝 프로젝트를 수행하고 있다.

목차

목차
  • 1장. 머신 러닝 개요
    • 1.1 머신 러닝의 정의
    • 1.2 머신 러닝의 응용 분야
    • 1.2.1 가상 개인 비서
    • 1.2.2 구글 맵
    • 1.2.3 상품 추천
    • 1.3 머신 러닝의 기술적 단계
    • 1.4 머신 러닝 알고리즘
    • 1.5 머신 러닝 알고리즘의 범위
    • 1.6 머신 러닝 알고리즘의 구현

  • 2장. 파이썬 설치
    • 2.1 개요
    • 2.2 아나콘다를 이용한 파이썬 설치
    • 2.2.1 아나콘다 내려받기
    • 2.2.2 아나콘다 설치
    • 2.3 파이참 내려받기 및 설치
    • 2.4 텐서플로 설치
    • 2.5 케라스 설치
    • 2.6 추가 패키지 설치 및 환경 변수 설정

  • 3장. 파이참 개요
    • 3.1 개요
    • 3.2 프로젝트 생성
    • 3.3 전체 화면 구성
    • 3.4 개발 환경 맞춤
    • 3.5 코드 작성 도우미 기능
    • 3.6 파이썬 파일 생성
    • 3.7 탐색
    • 3.8 디버깅
    • 3.9 버전 관리
    • 3.10 재구성
    • 3.11 단축키 찾기

  • 4장. 파이썬 언어에 대한 이해
    • 4.1 개요
    • 4.2 데이터형
    • 4.3 식별자의 표기
    • 4.4 값의 할당
    • 4.5 형변환
    • 4.6 열 컨테이너 인덱싱
    • 4.7 논리 연산자
    • 4.8 문 구성
    • 4.9 모듈 가져오기
    • 4.10 조건문
    • 4.11 수학 함수
    • 4.12 조건 반복문
    • 4.13 컨테이너형 일반 연산
    • 4.14 리스트 연산
    • 4.15 딕셔너리 연산
    • 4.16 집합 연산
    • 4.17 함수 정의
    • 4.18 문자열 연산
    • 4.19 포맷 구성하기

  • 5장. 패키지 이해
    • 5.1 개요
    • 5.2 배열 생성
    • 5.3 배열 연산
    • 5.4 배열 요소 값 정하기
    • 5.5 다차원 배열
    • 5.6 배열 조각내기
    • 5.7 팬시 인덱싱
    • 5.8 배열 생성자
    • 5.9 배열의 추가(행 또는 열)
    • 5.10 배열의 축과 계산
    • 5.11 배열의 방송

  • 6장. 판다스 패키지 이해
    • 6.1 개요
    • 6.2 데이터 구조
    • 6.3 부분 데이터 구성
    • 6.4 데이터 요약
    • 6.5 신규 열 생성
    • 6.6 결측값 처리
    • 6.7 데이터 결합
    • 6.8 그룹화
    • 6.9 모양 변경

  • 7장. Matplotlib 패키지 이해
    • 7.1 개요
    • 7.2 데이터 준비
    • 7.3 그래프 준비
    • 7.4 그래프 생성
    • 7.5 그래프 수정
    • 7.6 그래프 저장
    • 7.7 그래프 보여주기 및 초기화

  • 8장. scikit-learn 패키지 이해
    • 8.1 개요
    • 8.2 데이터 불러오기
    • 8.3 데이터 분할
    • 8.4 모델 적합 및 평가
    • 8.5 모수 추정값
    • 8.6 비지도 학습의 예

  • 9장. 케라스 패키지 이해
    • 9.1 개요
    • 9.2 다층 신경망 구현
    • 9.3 심층 신경망 구현

  • 10장. 표기법

  • 11장. 모델 평가와 선택
    • 11.1 개요
    • 11.2 훈련 데이터
    • 11.3 모델 적합도의 측정
    • 11.4 편향-분산 균형

  • 12장. 선형 회귀에 의한 머신러닝 구조에 대한 이해
    • 12.1 개요
    • 12.2 가설함수와 비용함수
    • 12.3 알고리즘
    • 12.4 비용함수의 원천

  • 13장. 분류 문제와 로지스틱회귀분석
    • 13.1 개요
    • 13.2 선형회귀 대 로지스틱회귀
    • 13.3 비용함수
    • 13.4 로그-오즈
    • 13.5 연결 함수
    • 13.6 분류 문제에서의 모델 평가
    • 13.7 소프트맥스 회귀
    • 13.8 예제

  • 14장. 모델 선택 및 정규화
    • 14.1 개요
    • 14.2 교차 검증
    • 14.3 변수 선택
    • 14.4 정규화 과정과 변수 선택
    • 14.5 예제

  • 15장. 분류와 회귀 나무
    • 15.1 개요
    • 15.2 회귀 나무
    • 15.3 최적 회귀 나무의 선택
    • 15.4 분류 나무
    • 15.5 나무의 몇 가지 이슈
    • 15.6 예제

  • 16장. 랜덤 포레스트
    • 16.1 개요
    • 16.2 배깅
    • 16.3 OOB 오차
    • 16.4 변수 중요도
    • 16.5 랜덤 포레스트 알고리즘
    • 16.6 랜덤 포레스트에서의 변수 중요도
    • 16.7 예제

  • 17장. 그래디언트 부스팅
    • 17.1 개요
    • 17.2 부스팅
    • 17.3 ADABOOST.M1
    • 17.4 부스팅과 가법 모델
    • 17.5 전진 순차방식 가법 모델링
    • 17.6 지수 손실함수와 적응 부스팅
    • 17.7 부스팅의 확장
    • 17.8 부스팅의 초 모수 조정
    • 17.9 부스팅의 정규화
    • 17.10 예제

  • 18장. 서포트 벡터 머신
    • 18.1 개요
    • 18.2 로지스틱회귀와 초평면
    • 18.3 표기법
    • 18.4 마진과 최적 마진 분류기(optimal margin classifier)
    • 18.5 라그랑지 쌍대성
    • 18.6 라그랑지 쌍대성을 이용한 최대 마진 분류기
    • 18.7 커널
    • 18.8 정규화와 비분리 경우
    • 18.9 여유 변수(slack variable)와 초 모수 C
    • 18.10 비용함수
    • 18.11 서포트 벡터 머신의 모수 추정
    • 18.12 예제: 커널 함수로 분리 가능한 경우(하드 마진)
    • 18.13 예제: 커널 함수로 분리가 불가능한 경우(소프트 마진)
    • 18.14 예제: 선형 이외의 커널 함수 적용
    • 18.15 초 모수의 결정
    • 18.16 예제: [BANK] 데이터 적용

  • 19장. 다층 신경망
    • 19.1 개요
    • 19.2 표기법
    • 19.3 전진 패스
    • 19.4 활성함수
    • 19.5 전진 패스의 예시
    • 19.6 후진 패스
    • 19.7 후진 패스의 예시
    • 19.8 초깃값 주기
    • 19.9 기울기 소멸 문제
    • 19.10 입력변수의 표준화
    • 19.11 과적합 문제
    • 19.12 예제: [BANK] 데이터 적용

  • 20장. 합성곱 신경망
    • 20.1 개요
    • 20.2 합성곱층
    • 20.3 결합층
    • 20.4 완전연결층
    • 20.5 합성곱 신경망 아키텍처의 예시
    • 20.6 모수의 추정
    • 20.7 예제: [DIGITS] 데이터 적용(다층 신경망)
    • 20.8 예제: [DIGITS] 데이터 적용(합성곱 신경망)

  • 21장. 순환 신경망
    • 21.1 개요
    • 21.2 기본 순환 신경망
    • 21.3 모수의 추정
    • 21.4 후진 패스 예제
    • 21.5 장단기 기억 신경망
    • 21.6 LSTM 예시

  • 22장. 특이값 분해
    • 22.1 개요
    • 22.2 정의
    • 22.3 분해 행렬의 계산
    • 22.4 특이값 분해 계산
    • 22.5 특이값 분해 예제: 추천 시스템

  • 23장. 주성분 분석
    • 23.1 개요
    • 23.2 정의
    • 23.3 주성분의 계산
    • 23.4 주성분을 이용한 차원 축소
    • 23.5 주성분의 기학학적 의미
    • 23.6 주성분의 계산 예제
    • 23.7 주성분을 이용한 분석(예: MNIST 손글씨 숫자 데이터)

  • 24장. 연관 분석
    • 24.1 개요
    • 24.2 표기법
    • 24.3 지지도, 신뢰도 그리고 향상도
    • 24.4 APRIORI 알고리즘
    • 24.5 APRIORI 알고리즘 예시
    • 24.6 APRIORI 알고리즘의 문제
    • 24.7 예제

  • 25장. 군집 분석
    • 25.1 개요
    • 25.2 표기법
    • 25.3 k-평균 군집화
    • 25.4 k-평균 군집화 알고리즘
    • 25.5 k-평균 군집화 알고리즘 예시
    • 25.6 격차 통계량을 이용한 k의 선택
    • 25.7 격차 통계량 계산 예제
    • 25.8 실루엣 값을 이용한 군집의 평가
    • 25.9 실루엣 값 계산 예제

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

[p.93 : 코드]
5,,6,7,8
->
5,6,7,8

[p.177 : 코드 5행]
logisticModel.fit(x, y)
->
logisticModel.fit(x.values.reshape(-1,1), y)