Top

Building Machine Learning Systems with Python 한국어판 [Scikit-learn 라이브러리로 구현하는 기계 학습 시스템]

  • 원서명Building Machine Learning Systems with Python (ISBN 9781782161400)
  • 지은이윌리 리커트, 루이스 페드로 코엘류
  • 옮긴이전철욱
  • ISBN : 9788960775367
  • 30,000원
  • 2014년 03월 31일 펴냄 (절판)
  • 페이퍼백 | 324쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

요약

파이썬을 활용해 대표적인 Scikit-learn 오픈소스 라이브러리로 실제 기계 학습 시스템을 구현하는 방법을 보여주는 책이다. 일반적인 CSV 데이터가 아닌 독자들이 실제로 해 보고 싶었던 문제인 위키피디아의 주제별 분류, 트위터의 감성 분류, 영화 추천, 사진의 범주적 분류, MP3의 음악 장르 분류 등을 기계 학습을 통해 구현하며 각 기법을 평가한다. 또한, 빅 데이터 시대에 맞춰 대량의 데이터를 빠르게 처리하는 기계 학습환경을 구축해 본다. 파이썬과 NumPy, SciPy, scikit-learn 등 다양한 라이브러리를 사용하여 파이썬의 생태계를 이해할 수 있으며 파이썬 언어를 좀더 깊이 이해할 수 있다.

이 책에서 다루는 내용

■ 텍스트, 이미지, 사운드를 적용하는 분류 시스템 개발
■ 파이썬 오픈소스 라이브러리 Scikit-learn
■ 이미지 처리와 컴퓨터 비전을 위한 mahotas 라이브러리
■ 위키피디아 전체를 모델로 하는 주제 모델링
■ 장바구니 분석을 사용해 추천 준비
■ 데이터 분석을 위한 jug 패키지
■ 클라우드에서 분석을 실행하고자 아마존 웹 서비스 활용
■ 과거 구매를 기반으로 사용자에게 제품 추천하기

이 책의 대상 독자

이 책은 오픈소스 라이브러리를 사용해 기계 학습을 수행하는 방법을 배우고자 하는 파이썬 프로그래머를 대상으로 한다. 현실적인 예제를 기반으로 기계 학습의 기본 방식을 둘러본다.
이 책은 또한 파이썬을 사용해 시스템을 만들기 시작하려는 기계 학습자도 대상으로 한다. 파이썬은 빠른 프로토타이핑을 위한 유연한 언어다. 반면 기본적인 알고리즘 모두는 C나 C++로 최적화해 작성됐다. 그러므로 결과 코드는 제품에 사용하기에 충분히 빠르고 강건하다.

이 책의 구성

1장, 기계 학습 파이썬으로 시작하기, 매우 단순한 예제로 기계 학습의 기본적인 개념을 소개한다. 단순하지만 과적합(overfitting)의 위험을 제기한다.
2장, 실제 예제를 이용한 분류법 학습, 분류에 대해 배울 실제 데이터를 설명하고 꽃의 범주를 구별할 수 있도록 컴퓨터를 훈련한다.
3장, 군집화: 관련된 게시물 찾기, 단어 주머니(bag-of-words) 접근법이 게시물에 대한 이해 없이 유사한 게시물 찾기에 적용할 때 얼마나 뛰어난지 설명한다.
4장, 주제 모델링, 각 게시물을 하나의 군집으로 배정하는 것을 넘어, 실제 텍스트가 여러 주제에 속하듯이 게시물이 몇몇 주제에 어떻게 배정되는지 보여준다.
5장, 분류 I: 형편없는 답변 감지, 질문에 대한 사용자의 답변이 좋은지 나쁜지를 판단하기 위한 로지스틱 회귀(logistic regression)의 사용법을 설명한다. 이와 더불어, 기계 학습 모델을 분석하기 위해 편향(bias)과 변화량(variance)의 균형을 어떻게 사용하는지도 배운다.
6장, 분류II: 감성 분석, 나이브 베이즈(Naive Bayes)가 어떻게 작동하는지 소개하고, 트윗이 긍정적인지 부정적인지를 분류하는 데 나이브 베이즈를 어떻게 사용하는지 알아본다.
7장, 회귀: 추천, 데이터를 다루는 고전적인 주제를 이야기한다. 그러나 이 고전적인 주제는 오늘날까지도 적절하다. 추천 시스템을 만들기 위해 이를 사용하고자 한다. 이 시스템은 새로운 제품을 추천하기 위해 좋고 싫음에 대해 사용자의 입력을 받는다.
8장, 회귀: 향상된 추천, 동시에 여러 가지 기법을 사용해 추천을 향상시킨다. 평점 데이터(사용자가 항상 제공하진 않는다) 없이 쇼핑 데이터로부터 추천을 어떻게 만드는지 알아본다.
9장, 분류III: 음악 장르 분류, 무작위의 수많은 노래를 기계 학습기가 분류할 수 있는 방법을 알아본다. 우리 스스로 속성을 만들기보다는 누군가의 전문 지식을 믿는 편이 더 괜찮을 때도 있음을 보여준다.
10장, 컴퓨터 비전: 패턴 인식, 이미지를 다루는 구체적인 영역인 패턴 인식 분야에서 분류를 어떻게 적용하는지 설명한다.
11장, 차원 수 줄이기, 기계 학습 알고리즘에 잘 적용할 수 있도록 데이터의 크기를 줄이는 그 밖의 기법들을 알아본다.
12장, (조금 더 큰) 빅데이터, 데이터 크기가 어떻게 점점 커지는지를 설명하고 이런 점이 분석에서 자주 문제가 되는 이유를 설명한다. 이 장에서는 멀티코어와 컴퓨팅 클러스터의 장점을 활용해 좀 더 큰 데이터를 다루는 기법들을 살펴본다. 클라우드 컴퓨팅을 사용해 소개한다(클라우드 제공자로서 아마존의 웹 서비스를 사용한다).
부록, 기계 학습에 대한 보충 자료, 기계 학습에 대한 훌륭한 리소스 목록이 실려 있다.

저자/역자 소개

저자 서문

이 책을 만난 건 좋은 인연이다. 무엇보다, 수많은 독자가 읽는 수백만 권의 책이 매년 출판되는 와중에 여러분은 이 책을 읽고 있다. 몇몇 기계 학습 알고리즘이 여러분을 이 책으로 이끄는 중요한 역할을 했을 수도 있다. 그리고 우리 저자들은 여러분이 방법(how)과 이유(why)를 좀 더 이해하고자 한다는 사실에 행복하다.
이 책의 대부분은 방법을 다룬다. 기계 학습 알고리즘이 데이터를 최대한 잘 활용하기 위해서는 데이터를 어떻게 다뤄야 할까? 어떻게 문제에 즉시 적용할 수 있는 적합한 알고리즘을 선택할 수 있을까?
가끔은 이유도 다룬다. 왜 정확하게 측정하는 일이 중요한가? 왜 주어진 시나리오에서 어떤 알고리즘은 다른 알고리즘보다 좋은 성능을 내는가?
이 분야에서 전문가가 되려면 배워야 할 내용이 훨씬 많다. 여기서 다루는 ‘어떻게’와 ‘왜’는 그중 일부일 뿐이지만, 결국에는 이 혼이 여러분이 가능한 한 빨리 전문가가 되는 밑거름이 되길 바란다.

저자 소개

윌리 리커트(Willi Richert)

기계 학습과 로보틱스 박사 학위자이며, 현재 마이크로소프트 빙(Bing)의 코어 렐러번스 팀(Core Relevance Team)에서 일하고 있다. 액티브 학습과 통계적 기계 번역 같은 다양한 기계 학습에 관여한다.

루이스 페드로 코엘류(Luis Pedro Coelho)

전산 생물 학자는 생물체 시스템을 이해하는 수단으로 컴퓨터를 사용하는 사람들이다. 이 넓은 분야에서 루이스는 생물학 표본 이미지를 분석하는 데 기계 학습 기술을 응용하는 분야인 바이오이미지 인포메틱스(Bioimage Informatics)에 관련된 일을 한다. 그의 주 관심사는 대용량 이미지 데이터의 처리다. 로봇식 현미경으로 인해 하루에 대량의 이미지를 얻을 수 있게 됐으나, 이 모든 이미지의 시각적 관찰은 불가능해졌다. 루이스는 기계 학습 분야에서 세계적인 대학 중 하나인 카네기 멜론 대학교(Carnegie Mellon University)의 박사 학위자이며, 몇몇 과학 출판물의 저자이기도 하다.

루이스는 리스본 기술 대학교(Lisbon Technical University)의 컴퓨터 학과에서 배운 것을 실제 코드로 적용하고자 1998년부터 오픈소스 소프트웨어를 개발하기 시작했다. 2004년부터 파이썬으로 개발하기 시작했으며, 몇몇 오픈소스 라이브러리에 기여했다. 인기 있는 파이썬 컴퓨터 비전 패키지인 mahotas의 리더 개발자이자, 몇몇 기계 학습 코드의 기여자이다.

옮긴이의 말

“데이터는 거들 뿐”

2011년 떠오른 기술인 빅 데이터는 이제 심야 버스 노선이나 대통령 선거 전략 같은 다양한 분야에서 사용되고 있으며 그 진가를 발휘하고 있다. 사실, 빅 데이터의 근간은 저렴해진 하드웨어와 데이터베이스, 데이터 처리 기술 같은 고급화된 소프트웨어라 할 수 있다. 이로 인하여 데이터는 더 많이 저장되고 관리되며 정제될 수 있다. 하지만 이러한 데이터를 사용하여 현실을 평가하고 문제를 해결하며 더 나아가 미래를 예측하는 기술은 과연 무엇인가? 이 책은 그 답을 알려준다.

“아스클레피오스의 지팡이”

데이터는 불친절하다. 때로는 소셜 네트워크에 있고 신문 기사에 있고, 사진에 있거나 음악에도 있다. 간혹 CSV 파일에도 있다. 파이썬은 범용적 언어이자 수많은 라이브러리를 가지고 있어 원하는 작업을 몇 분만에 해결할 수 있을 뿐만 아니라 다른 언어와도 쉽게 연결할 수 있는 접착형 언어다. 단 몇 줄로 소셜네트워크에 있는 데이터를 가져 올 수 있고 웹 페이지에 있는 버스 시간표도 가져 올 수 있다. NumPy, SciPy 라이브러리는 과학적 파이썬 생태계를 유지하여 일괄적인 인터페이스와 개발 속도를 지원한다. 그 위에, Scikit-learn은 기계 학습의 다양한 기법을 파이썬 생태계에서 바로 적용할 수 있도록 한다. 이 책에서는 이 모든 내용을 다룬다.

“지식의 유일한 원천은 데이터이다.”

이 책은 실질적이며 도전적이다. 예측하거나 구별하기 쉬운 데이터로 95%가 넘는 정확도를 보여주기보다는 실제로 해 보고 싶은 위키피디아의 주제를 분류하여 그 성능을 비교하고 실제 사진이나 음악과 같은 데이터에서 속성을 찾고 분류하는 도전적인 문제들로 가득 차 있다. 빅 데이터의 가장 난점을 극복하고자 jug와 startcluster 라이브러리를 사용한다. 더욱이, 이론적 배경이 없이는 이해할 수 없기 때문에 필요한 이론을 최대한 설명하고자 했고 저자들이 참고했거나 최신 정보를 얻을 수 있는 웹 사이트도 공개했다. 실제 문제와 이론 설명의 줄을 아주 적절하게 잘 타고 있다. 이 책을 집필한 저자들의 당부처럼 이 책은 기계 학습의 일부 기법을 다루고 있기 때문에 좋은 시작점으로 생각해 주길 바란다.

옮긴이 소개

전철욱

명지대, 고려대에서 학사, 석사를 마쳤다. 한국, 일본, 호주에서 소프트웨어를 개발한 경험이 있고 공익을 위한 재능을 만들고자 노력한다. 웹의 개방성, 파이썬의 기민성, 기계 학습의 예측성을 좋아한다.

목차

목차
  • 1장. 기계 학습 파이썬으로 시작하기
    • 기계 학습과 파이썬: 꿈의 조합
    • 이 책이 알려주는 내용(과 알려주지 않는 내용)
    • 정체됐을 때 해야 할 작업
    • 시작
      • NumPy, SciPy, Matplotlib 소개
      • 파이썬 설치
      • NumPy와 효과적으로, SciPy와 지능적으로 적용하기 쉬운 데이터 만들기
      • NumPy 배우기
        • 인덱싱
        • 존재하지 않는 값 처리
        • 실행 시간 비교
        • SciPy 배우기
    • 첫 번째 기계 학습 애플리케이션
      • 데이터 읽기
      • 데이터 정리와 전처리
      • 적절한 모델과 학습 알고리즘 선택
        • 모델을 만들기에 앞서
        • 단순한 직선으로 시작하기
        • 좀 더 복잡한 모델
        • 일보후퇴, 이보전진: 데이터 다시 보기
        • 훈련과 테스트
        • 최초 질문에 대답하기
    • 정리

  • 2장. 실제 예제를 이용한 분류법 학습
    • 아이리스 데이터셋
      • 첫 번째 단계, 시각화
      • 첫 번째 분류 모델 만들기
        • 평가: 홀드아웃 데이터와 교차 검증
    • 좀 더 복잡한 분류기 만들기
    • 좀 더 복잡한 데이터셋과 분류기
      • 씨앗 데이터셋의 학습
      • 속성과 속성 엔지니어링
      • 최근접 이웃 분류
      • 이진 분류와 다중 범주 분류
    • 정리

  • 3장. 군집화: 관련된 게시물 찾기
    • 게시물의 관련도 측정
      • 어떻게 하지 말아야 하는가
      • 어떻게 해야 하는가
    • 전처리: 공통 단어의 유사한 개수로서 측정된 유사도
      • 원시 텍스트를 단어 주머니로 변환
      • 단어 세기
      • 단어 카운트 벡터 정규화
      • 덜 중요한 단어의 삭제
      • 어근 추출
        • NLTK 설치와 사용
        • NLTK와 벡터라이저 확장
      • 강화된 불용어
      • 우리의 성취와 목표
    • 군집화
      • K평균
      • 우리의 발상을 평가하기 위한 테스트 데이터 얻기
      • 게시물 군집화
    • 초기 도전과제 해결
      • 노이즈의 또 다른 시각
    • 매개변수 변경
    • 정리

  • 4장. 주제 모델링
    • 잠재 디리클레 할당(LDA)
      • 주제 모델 만들기
    • 주제 공간에서의 유사성 비교
      • 위키피디아 전체의 모델링
    • 주제의 개수 고르기
    • 정리

  • 5장. 분류 I: 형편없는 답변 감지
    • 큰 그림 그리기
    • 세련된 답변 구별법 학습
      • 인스턴스 개선
      • 분류기 개선
    • 데이터 가져오기
      • 데이터를 의미 있는 뭉치로 잘라내기
      • 속성의 사전 선택과 처리
      • 무엇이 좋은 답변인지 정의하기
    • 첫 번째 분류기 만들기
      • k-최근접 이웃(kNN, k-nearest neighbor) 알고리즘으로 시작하기
      • 속성 개선
      • 분류기 훈련
      • 분류기의 성능 측정
      • 더 많은 속성 디자인하기
    • 개선법 결정
      • 편향과 변화량의 균형
      • 고편향 고치기
      • 고변화량 고치기
      • 고편향 또는 저편향
    • 로지스틱 회귀
      • 간단한 예제와 약간의 수학
      • 로지스틱 회귀를 게시물 분류에 적용하기
    • 정확도 좀 더 보기: 정밀도와 재현율
    • 분류기 살 빼기
    • 배포
    • 정리

  • 6장. 분류 II: 감성 분석
    • 큰 그림 그리기
    • 트위터 데이터 가져오기
    • 나이브 베이즈 분류기 소개
      • 베이즈 정리
      • 순박한 것
      • 나이브 베이즈를 사용한 분류
      • 못 보던 단어에 대한 해명과 기타 특이점
      • 산술 언더플로(underflow) 설명하기
    • 첫 번째 분류기 만들고 조절하기
      • 쉬운 문제 먼저 해결하기
    • 모든 범주 사용
      • 분류기의 매개변수 조절
    • 트윗 정리
    • 단어의 종류 고려
      • 단어의 종류 판단
      • SentiWordNet을 이용한 성공적인 편법
      • 첫 번째 에스터메이터
      • 모두 합하기
    • 정리

  • 7장. 회귀: 추천
    • 회귀를 이용한 주택 가격 예상
      • 다차원 회귀
      • 회귀를 위한 교차 검증
    • 벌점화 회귀
      • L1과 L2 벌칙
      • Scikit-learn에서 라소 또는 일래스틱 넷 사용
    • P가 N보다 큰 시나리오
      • 텍스트 기반의 예제
      • 영리한 방법으로 하이퍼 매개변수 설정하기
      • 예측과 추천의 평점
    • 정리

  • 8장. 회귀: 향상된 추천
    • 추천 향상
      • 추천 이진 매트릭스 사용
      • 영화의 이웃 보기
      • 여러 기법의 결합
    • 장바구니 분석
      • 유용한 예측 얻기
      • 슈퍼마켓 쇼핑 장바구니 분석
      • 연관 룰 마이닝
      • 좀 더 발전된 장바구니 분석
    • 정리

  • 9장. 분류III: 음악 장르 분류
    • 큰 그림 그리기
    • 음악 데이터 가져오기
      • WAV 형태로 변환
    • 음악 살펴보기
      • 음악을 사인 곡선 요소로 분해하기
    • FFT를 사용해 첫 번째 분류기 만들기
      • 실험 기민성 증가
      • 분류기 훈련
      • 다중 범주 문제의 정확도 측정을 위한 혼돈 매트릭스
      • 수용자 반응 특성을 이용한 분류기 성능 측정 대안
    • 멜 주파수 켑스트럴 계수와 분류 성능 향상
    • 정리

  • 10장. 컴퓨터 비전: 패턴 인식
    • 이미지 처리 소개
    • 이미지 로딩과 출력
      • 기본 이미지 처리
        • 경계 짓기
        • 가우시안 블러링(Gaussian blurring)
        • 다른 효과를 위한 필터링
      • 소금과 후추 노이즈 추가
        • 중앙에 초점 맞추기
      • 패턴 인식
      • 이미지로부터 속성 계산
      • 속성 작성
    • 좀 더 어려운 데이터셋의 분류
    • 지역 속성 표현
    • 정리

  • 11장. 차원 수 줄이기
    • 큰 그림 그리기
    • 속성 선택
      • 필터를 사용해 중복된 속성 탐지하기
        • 상관 관계
        • 상호 정보
      • 래퍼를 사용해 속성에 대한 모델 묻기
    • 그 밖의 속성 선택 기법
    • 속성 추출
      • 주요 구성요소 분석
        • PCA 훑어보기
        • PCA 적용하기
      • PCA의 한계와 LDA의 도움
    • 다차원 축적(MDS)
    • 정리

  • 12장. (조금 더 큰) 빅데이터
    • 빅데이터 배우기
    • 파이프라인을 작업으로 나누기 위한 jug 사용
      • 작업에 대해
      • 부분 결과 재사용
      • 작업장 내부 보기
      • 데이터 분석을 위한 jug 사용
    • 아마존 웹 서비스(AWS) 사용
      • 첫 번째 기계 만들기
        • 아마존 리눅스에 파이썬 패키지 설치
        • 클라우드 머신에서 jug 실행
      • startcluster로 클러스터 생성 자동화
    • 정리

  • 13장. 기계 학습을 더 배울 수 있는 자료
    • 온라인 코스
      • Q&A 사이트
      • 블로그
      • 데이터 소스
      • 경쟁하기
    • 남겨진 것

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

2014.05.

[p49 출력 내용]
(버전 주의) Error d=1: 317,389,767.339778 Error d=2: 179,983,507.878179 Error d=3: 139,350,144.031725 Error d=10: 121,942,326.363461 Error d=100: 109,318,004.475556

저자 사용 버전: scipy 0.11

저자 사용 버전보다 높은 버전일 경우 오류가 나올 수 있습니다. 책과 같은 결과를 보시려면 scipy 0.11로 해주시기 바랍니다.

[p 123 데이터 가져오기 부분]
http://www.clearbits.net/torrents/2076-aug-2012 → https://archive.org/details/stackexchange 로 변경