Building Machine Learning Systems with Python 한국어판 (개정판) [Scikit-learn 라이브러리로 구현하는 기계 학습 시스템]
- 원서명Building Machine Learning Systems with Python - Second Edition (ISBN 9781784392772)
- 지은이루이스 페드로 코엘류(Luis Pedro Coelho), 윌리 리커트(Willi Richert)
- 옮긴이전철욱
- ISBN : 9788960777613
- 30,000원
- 2015년 09월 18일 펴냄
- 페이퍼백 | 348쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 데이터 과학
책 소개
최신 코드는 https://github.com/luispedro/BuildingMachineLearningSystemsWithPython에서 받을 수 있습니다.
요약
일반 CSV 데이터가 아닌 독자들이 실제로 해보고 싶었던 위키피디아의 주제 분류, 트위터의 감성 분류, 영화 추천, 사진의 범주 분류, MP3의 음악 장르 분류 등을 기계 학습을 활용하여 구현하며 각 기법을 평가한다. 또한, 빅 데이터 시대에 맞춰 대량의 데이터를 빠르게 처리하는 기계 학습 환경을 구축해본다. 파이썬과 파이썬 생태계의 핵심인 NumPy, SciPy, scikit-learn등 다양한 라이브러리를 활용하여 파이썬 언어를 좀 더 깊게 이해할 수 있다. 개정판은 초판과 달리, 간결하게 예제를 재정리했으며, 관련 설명도 보강했다. 초판에서 부족했던 라이브러리도 좀 더 풍부하게 소개한다.
이 책에서 다루는 내용
■ 텍스트, 이미지, 사운드에 적용하는 분류 시스템 개발
■ 과학 컴퓨팅과 기계 학습을 위한NumPy, SciPy, scikit-learn과학 파이썬 오픈 소스 라이브러리
■ 이미지 처리와 컴퓨터 비전을 위한 mahotas 라이브러리
■ 전체 위키피디아를 모델로 하는 주제 모델링
■ 클라우드에서 분석하기 위한 아마존 웹 서비스 활용
■ 기계 학습 문제 분석
■ 장바구니 분석을 사용한 추천
■ 과거 구매 기반의 제품 추천
이 책의 대상 독자
이 책은 실제 비지니스 문제에 대한 효과적인 해결책을 개발하기 위해 데이터에서 가치 있는 통찰을 얻고자 하는 개발자나 기계 학습을 사용하거나 학습하고자 하는 파이썬 개발자를 대상으로 한다.
이 책의 구성
1장, '기계 학습 파이썬으로 시작하기'에서는 매우 단순한 예제로 기계 학습의 기본적인 개념을 소개한다. 단순하지만 과적합(overfitting)의 위험을 제기하겠다.
2장, '실제 예제 분류하기'에서는 분류에 대해 배울 실제 데이터를 설명하고 꽃의 범주를 구별할 수 있도록 컴퓨터를 훈련한다.
3장, '군집화: 관련된 게시물 찾기'에서는 단어 주머니(bag of words) 접근법이 게시물에 대한 실제 이해 없이도 유사한 게시물 찾기에 적용할 때 얼마나 뛰어난지 설명한다.
4장, '주제 모델링'에서는 각 게시물을 하나의 군집에 배정하는 것을 넘어, 실제 문서가 여러 주제에 속하듯이 게시물이 다수의 주제에 어떻게 배정되는지 보여준다.
5장, '분류: 형편없는 답변 감지'에서는 질문에 대한 사용자 답변이 좋은지 나쁜지를 판단하기 위해 로지스틱 회귀(logistic regression) 기법을 설명한다. 이와 더불어, 기계 학습 모델을 분석하기 위해 편향(bias)과 변화량(variance) 균형을 어떻게 사용하는지도 배운다.
6장, '분류 II: 감성 분석'에서는 나이브 베이즈(Naive Bayes)가 어떻게 작동하는지 소개하고, 트윗이 긍정적인지 부정적인지를 분류하는 데 나이브 베이즈를 사용하겠다.
7장, '회귀'에서는 오늘날까지 데이터를 다루는 데 잘 사용하는 고전적인 주제인 회귀를 설명한다. 라소(Lasso)와 일래스틱넷츠(ElasticNets)와 같은 발전된 회귀 기법도 다룬다.
8장, '추천'에서는 소비자 제품 평점을 근거로 추천 시스템을 만든다. 평점 데이터(사용자가 항상 제공하진 않는다)없는 쇼핑 데이터로 추천을 어떻게 하는지도 살펴보겠다.
9장, '분류: 음악 장르 분류'에서는 무작위의 수많은 노래를 기계 학습기가 분류할 수 있는 방법을 알아본다. 우리 스스로 속성을 만들기보다는 누군가의 전문 지식을 믿는 편이 더 괜찮을 때도 있음을 보여준다.
10장, '컴퓨터 비전'에서는 데이터에서 속성을 추출하여 이미지를 다루는 특수한 분야에서 분류를 어떻게 적용하는지 설명한다. 이 기법을 이미지 모음에서 유사한 이미지를 찾도록 어떻게 적용하는지도 다룬다.
11장, '차원 수 줄이기'에서는 기계 학습 알고리즘에 잘 적용할 수 있도록 데이터의 크기를 줄이는 다양한 기법들을 알아본다.
12장, '조금 더 큰 빅데이터'에서는 데이터 멀티코어와 컴퓨팅 클러스터의 장점을 활용해 좀 더 큰 데이터를 다루는 기법들을 살펴본다. 클라우드 컴퓨팅도 소개한다(클라우드 제공자로서 아마존의 웹 서비스를 사용한다).
부록, '기계 학습에 대한 보충 자료'에는 기계 학습에 대한 훌륭한 자료 목록이 실려 있다.
목차
목차
- 1장 기계 학습 파이썬으로 시작하기
- 기계 학습과 파이썬: 꿈의 조합
- 이 책이 알려주는 내용과 알려주지 않는 내용
- 정체됐을 때 해야 할 작업
- 시작
- __NumPy, SciPy, matplotlib 소개
- __파이썬 설치
- __NumPy로 효과적으로, SciPy로 지능적으로 적용하기 쉬운 데이터 만들기
- _NumPy 배우기_
- ___인덱싱_
- ___존재하지 않는 값 처리_
- ___실행 시간 비교_
- _SciPy 배우기_
- 첫 번째 기계 학습 애플리케이션__
- _데이터 읽기_
- _데이터 정리와 전처리_
- __적절한 모델과 학습 알고리즘 선택
- ____모델을 만들기에 앞서
- ____단순한 직선으로 시작하기
- ____좀 더 복잡한 모델
- ____일보후퇴, 이보전진: 데이터 다시 보기
- ____훈련과 테스트
- 최초 질문에 대답하기
- 정리
- 2장 실제 예제 분류하기
- 아이리스 데이터셋
- __첫 번째 단계, 시각화
- __첫 번째 분류 모델 만들기
- __평가: 홀드아웃 데이터와 교차 검증
- 좀 더 복잡한 분류기 만들기
- 좀 더 복잡한 데이터셋과 분류기
- __씨앗 데이터셋의 학습
- __속성과 속성 엔지니어링
- __최근접 이웃 분류
- scikit-learn으로 분류
- __결정선 살펴보기
- 이진 분류와 다중 범주 분류
- 정리
- 3장 군집화: 관련된 게시물 찾기
- 게시물 관련도 측정
- __하지 말아야 하는 방법
- __어떻게 해야 하는가
- 전처리: 공통 단어의 유사한 개수로서 측정된 유사도
- __원시 텍스트를 단어 주머니로 변환
- ____단어 세기
- ____단어 카운트 벡터 정규화하기
- ____덜 중요한 단어의 삭제
- ____어근 추출
- ____강화된 불용어
- __우리의 성취와 목표
- 군집화
- __K평균
- __우리의 발상을 평가하기 위한 테스트 데이터 얻기
- __게시물 군집화
- 초기 도전과제 해결
- __노이즈의 또 다른 시각
- 매개변수 변경
- 정리
- 4장 주제 모델링
- 잠재 디리클레 할당
- __주제 모델 만들기
- 주제로 문서 비교
- __위키피디아 전체의 모델링
- 주제의 개수 고르기
- 정리
- 5장 분류: 형편없는 답변 감지
- 큰 그림 그리기
- 세련된 답변 구별법 학습
- __인스턴스 개선
- __분류기 개선
- 데이터 가져오기
- __데이터를 의미 있는 뭉치로 잘라내기
- __속성의 사전 선택과 처리
- __좋은 답변의 정의
- 첫 번째 분류기 만들기
- __kNN으로 시작하기
- __속성 개선
- __분류기 훈련
- __분류기의 성능 측정
- __더 많은 속성 디자인하기
- 개선법 결정
- __편향과 변화량의 균형
- __고편향 고치기
- __고변화량 고치기
- __고편향 혹은 저편향
- 로지스틱 회귀
- __간단한 예제와 약간의 수학
- __로지스틱 회귀를 게시물 분류에 적용
- 정확도 좀 더 보기: 정밀도와 재현율
- 분류기 군살 빼기
- 배포
- 정리
- 6장 분류 II: 감성 분석
- 큰 그림 그리기
- 트위터 데이터 가져오기
- 나이브 베이즈 분류기 소개
- __베이즈 정리
- __순박함
- __나이브 베이즈를 사용한 분류
- __못 보던 단어에 대한 해명과 다른 특이점
- __산술 언더플로 설명
- 첫 번째 분류기 만들고 조절하기
- __쉬운 문제 먼저 해결하기
- __모든 범주 사용하기
- __분류기의 매개변수 조절
- 트윗 정리
- 단어 종류 고려
- __단어 종류 판단
- __SentiWordNet을 이용한 성공적인 편법
- __첫 번째 에스터메이터
- __모두 통합하기
- 정리
- 7장 회귀
- 회귀를 이용한 주택 가격 예상
- __다차원 회귀
- __회귀를 위한 교차 검증
- 벌점화 또는 정규화 회귀
- L1벌점과 L2 벌점
- __scikit-learn에서 라소나 일래스틱넷 사용하기
- __라소 패스 시각화
- __P가 N보다 큰 시나리오
- __텍스트 기반의 예제
- __영리하게 하이퍼 매개변수 설정
- 정리
- 8장 추천
- 예측과 추천의 평점
- __훈련과 테스트 나누기
- __훈련 데이터 정규화
- __추천에 대한 이웃 접근법
- __추천에 대한 회귀 접근법
- __여러 기법 결합
- 장바구니 분석
- __유용한 예측 얻기
- __슈퍼마켓 쇼핑 장바구니 분석
- __연관 룰 마이닝
- __좀 더 발전된 장바구니 분석
- 정리
- 9장 분류: 음악 장르 분류
- 큰 그림 그리기
- 음악 데이터 가져오기
- __WAV 형태로 변환
- 음악 살펴보기
- __음악을 사인 곡선 요소로 분해하기
- FFT를 사용해 첫 번째 분류기 만들기
- __실험 기민성 증대
- __분류기 훈련
- __다중 범주 문제의 정확도 측정을 위한 혼돈 매트릭스
- __수용자 반응 특성을 이용한 분류기 성능 측정 대안
- 멜 주파수 켑스트럴 계수와 분류 성능 향상
- 정리
- 10장 컴퓨터 비전
- 이미지 처리 소개
- __이미지 로딩과 출력
- __경계 짓기
- __가우시안 블러링
- __중앙에 초점 맞추기
- __기본 이미지 분류
- __이미지로부터 속성 계산
- __속성 작성
- __유사한 이미지를 찾는 속성 사용하기
- __좀 더 어려운 데이터셋의 분류
- 지역 속성 표현
- 정리
- 11장 차원 수 줄이기
- 큰 그림 그리기
- __속성 선택
- ____상관 관계
- ____상호 정보
- __래퍼를 사용해 속성에 대한 모델 묻기
- __그 밖의 속성 선택 기법
- 속성 추출
- __주요 구성요소 분석
- ____PCA 훑어보기
- ____PCA 적용하기
- __PCA의 한계와 LDA의 도움
- MDS
- 정리
- 12장 조금 더 큰 빅데이터
- 빅데이터 배우기
- __파이프라인을 태스크로 나누기 위한 jug 사용
- jug의 태스크 소개
- __어떻게 작동하는지 살펴보기
- __데이터 분석을 위한 jug
- AWS 사용
- __첫 번째 머신 만들기
- ____아마존 리눅스에 파이썬 패키지 설치
- ____클라우드 머신에서 jug 실행
- __startcluster로 클러스터 생성 자동화
- 정리
- 부록 기계 학습에 대한 보충 자료
도서 오류 신고
정오표
정오표
[p57: 12행]
있는자?
->
있는가?
[p.58: 아래서 3행]
표기되어 있다. 있다.
->
표기되어 있다.
[p.58: 아래서 6행]
나타내개 위해
->
나타내개 위해
[p63: 13행]
역활
->
역할
[p.69: 마지막 행]
받아드리는
->
받아들이는
[p.88: 15 행]
>>> bestdist = sys.maxint
->
>>> bestdist = sys.maxsize
[p.88: 17 행]
for i, post in enumerate(num_samples):
->
for i, post in enumerate(posts):
[p.91: 아래서 2행]
http://nltk.org/install.html
->
http://www.nltk.org/install.html
[p.93: 9행]
넣기 원하지 않는다.
->
넣길 원하지 않는다.
[p.112: 아래에서 9행]
일종의 이야기(fable)를 모델을 가지기 때문에
->
일종의 이야기(fable)를 가지기 때문에
[p.113: 7행]
주제 가중치을 기반인
->
주제 가중치에 기반한
[p117: 4행]
활당
->
할당
[p156: 첫 행]
중접
->
중첩