책 소개
요약
파이썬을 활용해 대표적인 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장, (조금 더 큰) 빅데이터, 데이터 크기가 어떻게 점점 커지는지를 설명하고 이런 점이 분석에서 자주 문제가 되는 이유를 설명한다. 이 장에서는 멀티코어와 컴퓨팅 클러스터의 장점을 활용해 좀 더 큰 데이터를 다루는 기법들을 살펴본다. 클라우드 컴퓨팅을 사용해 소개한다(클라우드 제공자로서 아마존의 웹 서비스를 사용한다).
부록, 기계 학습에 대한 보충 자료, 기계 학습에 대한 훌륭한 리소스 목록이 실려 있다.
목차
목차
- 1장. 기계 학습 파이썬으로 시작하기
- 기계 학습과 파이썬: 꿈의 조합
- 이 책이 알려주는 내용(과 알려주지 않는 내용)
- 정체됐을 때 해야 할 작업
- 시작
- NumPy, SciPy, Matplotlib 소개
- 파이썬 설치
- NumPy와 효과적으로, SciPy와 지능적으로 적용하기 쉬운 데이터 만들기
- NumPy 배우기
- 인덱싱
- 존재하지 않는 값 처리
- 실행 시간 비교
- SciPy 배우기
- 첫 번째 기계 학습 애플리케이션
- 데이터 읽기
- 데이터 정리와 전처리
- 적절한 모델과 학습 알고리즘 선택
- 모델을 만들기에 앞서
- 단순한 직선으로 시작하기
- 좀 더 복잡한 모델
- 일보후퇴, 이보전진: 데이터 다시 보기
- 훈련과 테스트
- 최초 질문에 대답하기
- 정리
- 2장. 실제 예제를 이용한 분류법 학습
- 아이리스 데이터셋
- 첫 번째 단계, 시각화
- 첫 번째 분류 모델 만들기
- 평가: 홀드아웃 데이터와 교차 검증
- 좀 더 복잡한 분류기 만들기
- 좀 더 복잡한 데이터셋과 분류기
- 씨앗 데이터셋의 학습
- 속성과 속성 엔지니어링
- 최근접 이웃 분류
- 이진 분류와 다중 범주 분류
- 정리
- 아이리스 데이터셋
- 3장. 군집화: 관련된 게시물 찾기
- 게시물의 관련도 측정
- 어떻게 하지 말아야 하는가
- 어떻게 해야 하는가
- 전처리: 공통 단어의 유사한 개수로서 측정된 유사도
- 원시 텍스트를 단어 주머니로 변환
- 단어 세기
- 단어 카운트 벡터 정규화
- 덜 중요한 단어의 삭제
- 어근 추출
- NLTK 설치와 사용
- NLTK와 벡터라이저 확장
- 강화된 불용어
- 우리의 성취와 목표
- 군집화
- K평균
- 우리의 발상을 평가하기 위한 테스트 데이터 얻기
- 게시물 군집화
- 초기 도전과제 해결
- 노이즈의 또 다른 시각
- 매개변수 변경
- 정리
- 게시물의 관련도 측정
- 4장. 주제 모델링
- 잠재 디리클레 할당(LDA)
- 주제 모델 만들기
- 주제 공간에서의 유사성 비교
- 위키피디아 전체의 모델링
- 주제의 개수 고르기
- 정리
- 잠재 디리클레 할당(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 사이트
- 블로그
- 데이터 소스
- 경쟁하기
- 남겨진 것
도서 오류 신고
정오표
정오표
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 로 변경