728x90

안녕하십니까, 간토끼입니다.

 

오늘은 비제이퍼블릭에서 제공받은 선형대수와 통계학으로 배우는 머신러닝 with 파이썬에 대한 서평을 작성해보도록 하겠습니다.

 

 

항상 언급하는 것이지만 요즘 머신러닝 입문서라고 불리는 책들이 굉장히 많이 출판되고 있습니다.

개인적으로 누구에게나 친숙하게 머신러닝을 입문시킨다는 점에서 의의가 있다고는 생각하지만,

그럼에도 불구하고 단순히 호기심만으로 이 분야를 이해하기에는 여간 쉬운 게 아니라고 생각합니다.

특히 코드 위주의 실습서보다는 단단한 이론 위주의 책이 더욱 중요하지만, 실제 입문자들은 그런 책을 선호하지 않죠.

 

이러한 상황에서 선형대수와 통계학으로 배우는 머신러닝 with 파이썬 책은 가뭄에 단비같은 책입니다.

개인적으로 머신러닝은 Computer Science보다 통계학에 기반을 두어야 한다고 생각하는데,

이 책은 이러한 통계적 머신러닝에 기반을 두어 서술된 책이기 때문에, 이론적인 내용 위주의 구성이 아주 마음에 듭니다.

대표적으로는 Introduction to Statistical Learning using R, The Elements of Statistical Learning 등이 있죠.

이러한 책들처럼 이론적인 내용이 많이 담겨있어서 너무 좋았던 책입니다.


Q. 이 책은 어떤 책인가요?

시중 다른 입문서와 달리 통계학에 기반을 두어 머신러닝을 소개하는 책입니다.

특히 통계학, 머신러닝 등 이론을 소개하는 블로그로 널리 알려진 로스카츠의 AI 머신러닝 블로그를 운영하시는 장철원님께서 집필하신 책으로, 통계학을 전공하신 분이 집필하셔서 그런지 통계적 머신러닝에 초점이 맞춰져 있습니다.

물론 파이썬을 이용한 실습도 병행할 수 있도록 코드도 수록되어 있습니다.

 

결국 머신러닝이라는 것은 Target을 예측할 수 있도록 최적의 Parameter를 탐색해가는 최적화 알고리즘이라고 표현할 수 있겠는데요.

그러다보니 근사해를 구하기 위한 최적화(Optimization) 이론 또한 반드시 알고 있어야 하며,

데이터의 구조가 행렬(Matrix)(고차원인 경우에는 텐서(Tensor))이기 때문에 선형대수학(Linear Algebra) 이론 또한 알고 있어야 합니다.

그러한 맥락에서 최적화 이론과 선형대수학 개념도 같이 수록되어있어, 수학적 배경이 필요하신 분들에게 안성맞춤일 것이라 생각합니다.

 

개인적으로 최적화 이론까지 담은 입문 서적은 거의 못 본 것 같은데요.

 이 책이 출간되었단 소식을 듣고 너무나 읽고 싶었을 정도로, 저처럼 Statistical Learning에 관심이 많은 독자분들이라면 재밌에 읽으실 거라 생각합니다.

그리고 외국 서적이 아닌 국내 서적이기 때문에 어색한 번역체로 고통(?)받을 일 또한 없습니다.

 

간단하게 목차를 소개하면 다음과 같습니다.

더보기

■ CHAPTER 1. 환경 설정

1.1 윈도우에서 환경 설정하기

1.2 맥북에서 환경 설정하기

1.3 리눅스에서 환경 설정하기

■ CHAPTER 2. 머신러닝 개요

2.1 머신러닝이란

2.2 지도 학습 vs 비지도 학습

2.3 머신러닝의 전반적인 과정

■ CHAPTER 3. 머신러닝을 위한 선형대수

3.1 선형대수와 머신러닝의 관계

3.2 행렬의 기초

___ 3.2.1 행렬이란

___ 3.2.2 대각 행렬

___ 3.2.3 전치 행렬

___ 3.2.4 행렬의 덧셈, 뺄셈

___ 3.2.5 행렬의 스칼라곱

___ 3.2.6 행렬곱

___ 3.2.7 행렬의 원소곱

___ 3.2.8 행렬식

___ 3.2.9 역행렬

3.3 내적

3.4 선형 변환

3.5 랭크, 차원

___ 3.5.1 벡터 공간, 기저

___ 3.5.2 랭크와 차원

___ 3.5.3 직교 행렬

3.6 고윳값, 고유 벡터

3.7 특이값 분해

___ 3.7.1 닮음

___ 3.7.2 직교 대각화

___ 3.7.3 고윳값 분해

___ 3.7.4 특이값 분해

3.8 이차식 표현

___ 3.8.1 이차식 개념

___ 3.8.2 양정치 행렬

3.9 벡터의 미분

■ CHAPTER 4. 머신러닝을 위한 통계학

4.1 통계학과 머신러닝의 관계

4.2 확률 변수와 확률 분포

___ 4.2.1 확률 변수

___ 4.2.2 확률 분포

4.3 모집단과 표본

4.4 평균과 분산

___ 4.4.1 평균

___ 4.4.2 분산

___ 4.4.3 평균과 분산의 성질

4.5 상관관계

___ 4.5.1 공분산

___ 4.5.2 상관 계수

4.6 균일 분포

4.7 정규 분포

4.8 이항 분포

___ 4.8.1 베르누이 분포

___ 4.8.2 이항 분포

___ 4.8.3 다항 분포

4.9 최대 가능도 추정

4.10 최대 사후 추정

___ 4.10.1 조건부 확률

___ 4.10.2 베이즈 추정

___ 4.10.3 최대 사후 추정

■ CHAPTER 5. 최적화

5.1 컨벡스 셋

___ 5.1.1 직선과 선분

___ 5.1.2 아핀 셋

___ 5.1.3 아핀 함수 vs 선형 함수

___ 5.1.4 컨벡스 셋

___ 5.1.5 초평면과 반공간

5.2 컨벡스 함수

___ 5.2.1 컨벡스 함수의 개념

___ 5.2.2 컨벡스 함수의 예

___ 5.2.3 1차, 2차 미분 조건

___ 5.2.4 얀센의 부등식

___ 5.2.5 컨벡스 성질 보존 조건

5.3 라그랑주 프리멀 함수

___ 5.3.1 일반적인 최적화 문제

___ 5.3.2 컨벡스 최적화 문제

___ 5.3.3 라그랑주 프리멀 함수

5.4 라그랑주 듀얼 함수

5.5 Karush-Kuhn-Tucker(KKT) 조건

5.6 머신러닝에서의 최적화 문제

___ 5.6.1 최소 제곱법

___ 5.6.2 제약식이 포함된 최소 제곱법

5.7 뉴턴-랩슨 메소드

5.8 그래디언트 디센트 옵티마이저

___ 5.8.1 그래디언트 디센트 소개

___ 5.8.2 확률적 그래디언트 디센트

___ 5.8.3 모멘텀

___ 5.8.4 네스테로프 가속 경사(Nesterov Accelerated Gradient)

___ 5.8.5 Adagrad

___ 5.8.6 Adadelta

___ 5.8.7 RMSprop

___ 5.8.8 Adam

___ 5.8.9 AdaMax

___ 5.8.10 Nadam

■ CHAPTER 6. 머신러닝 데이터 살펴보기

6.1 머신러닝에 사용할 데이터 소개

___ 6.1.1 집값 예측하기

___ 6.1.2 꽃 구분하기

___ 6.1.3 와인 구분하기

___ 6.1.4 당뇨병 예측하기

___ 6.1.5 유방암 예측하기

6.2 데이터 전처리

___ 6.2.1 결측치 처리

___ 6.2.2 클래스 라벨 설정

___ 6.2.3 원-핫 인코딩

___ 6.2.4 데이터 스케일링

■ CHAPTER 7. 모형 평가

7.1 오버피팅과 언더피팅

7.2 크로스-밸리데이션

7.3 파이프라인

7.4 그리드 서치

7.5 손실 함수와 비용 함수

___ 7.5.1 손실 함수와 비용 함수의 개념

___ 7.5.2 L1 손실 함수

___ 7.5.3 L2 손실 함수

___ 7.5.4 엔트로피

___ 7.5.5 Negative Log Likelihood(NLL)

7.6 모형 성능 평가

___ 7.6.1 모형 성능 평가에 필요한 개념

___ 7.6.2 분류 문제에서의 성능 평가

___ 7.6.3 회귀 문제에서의 성능 평가

___ 7.6.4 군집 문제에서의 성능 평가

■ CHAPTER 8. 지도 학습

8.1 지도 학습 개요

8.2 사이킷런 소개

8.3 k-최근접 이웃 알고리즘

___ 8.3.1 k-최근접 이웃 알고리즘의 개념

___ 8.3.2 k-최근접 이웃 실습

8.4 선형 회귀 분석

___ 8.4.1 선형 회귀 분석의 개념

___ 8.4.2 릿지 회귀 분석(L2 제약식)

___ 8.4.3 라쏘 회귀 분석(L1 제약식)

___ 8.4.4 엘라스틱 넷

___ 8.4.5 선형 회귀 분석 실습

8.5 로지스틱 회귀 분석

___ 8.5.1 로지스틱 회귀 분석의 개념

___ 8.5.2 로지스틱 회귀 분석 실습

8.6 나이브 베이즈

___ 8.6.1 나이브 베이즈의 개념

___ 8.6.2 나이브 베이즈 실습

8.7 의사 결정 나무

___ 8.7.1 의사 결정 나무의 개념

___ 8.7.2 엔트로피

___ 8.7.3 지니 계수

___ 8.7.4 회귀 나무

___ 8.7.5 의사 결정 나무 실습

8.8 서포트 벡터 머신

___ 8.8.1 서포트 벡터 머신의 개념

___ 8.8.2 소프트 마진

___ 8.8.3 커널 서포트 벡터 머신

___ 8.8.4 서포트 벡터 회귀

___ 8.8.5 서포트 벡터 머신 실습

8.9 크로스 밸리데이션 실습

■ CHAPTER 9. 앙상블 학습

9.1 앙상블 학습 개념

9.2 보팅

___ 9.2.1 보팅의 개념

___ 9.2.2 보팅 실습

9.3 배깅과 랜덤 포레스트

___ 9.3.1 독립적 앙상블 방법

___ 9.3.2 배깅과 랜덤 포레스트의 개념

___ 9.3.3 랜덤 포레스트 실습

___ 9.3.4 배깅 실습

9.4 부스팅

___ 9.4.1 의존적 앙상블 방법

___ 9.4.2 에이다 부스트 개념 설명

___ 9.4.3 에이다 부스트 실습

___ 9.4.4 그래디언트 부스팅 개념 설명

___ 9.4.5 그래디언트 부스팅 실습

9.5 스태킹

___ 9.5.1 스태킹의 개념

___ 9.5.2 스태킹 실습

■ CHAPTER 10. 차원 축소

10.1 차원 축소 개념

___ 10.1.1 차원 축소하는 이유

___ 10.1.2 차원의 저주

10.2 주성분 분석

___ 10.2.1 주성분 분석의 개념

___ 10.2.2 주성분 분석 실습

10.3 커널 PCA

___ 10.3.1 커널 PCA의 개념

___ 10.3.2 커널 PCA 실습

10.4 LDA

___ 10.4.1 LDA의 개념

___ 10.4.2 LDA의 이론적 배경

___ 10.4.3 LDA 실습

10.5 LLE

___ 10.5.1 LLE의 개념

___ 10.5.2 LLE 실습

10.6 비음수 행렬 분해

___ 10.6.1 비음수 행렬 분해의 개념

___ 10.6.2 비용 함수

___ 10.6.3 비음수 행렬 분해 실습

■ CHAPTER 11. 비지도 학습

11.1 비지도 학습 개요

11.2 K-평균 클러스터링

___ 11.2.1 K-평균 클러스터링의 개념

___ 11.2.2 K-평균 클러스터링 실습

11.3 계층 클러스터링

___ 11.3.1 계층 클러스터링의 개념

___ 11.3.2 단일 연결

___ 11.3.3 완전 연결

___ 11.3.4 Ward's 계층 클러스터링

___ 11.3.5 계층 클러스터링 실습

11.4 DBSCAN

___ 11.4.1 DBSCAN의 개념

___ 11.4.2 DBSCAN 알고리즘

___ 11.4.3 DBSCAN 실습

11.5 가우시안 혼합 모형

___ 11.5.1 가우시안 혼합 모형의 개념 설명

___ 11.5.2 EM 알고리즘

___ 11.5.3 가우시안 혼합 모형 실습

■ CHAPTER 12. 딥러닝

12.1 딥러닝 소개

12.2 퍼셉트론, 딥러닝의 기본

___ 12.2.1 퍼셉트론의 개념

___ 12.2.2 퍼셉트론으로 분류하기

___ 12.2.3 퍼셉트론 실습

12.3 인공 신경망으로 하는 딥러닝

___ 12.3.1 신경망의 개념

___ 12.3.2 오차 역전파

___ 12.3.3 활성화 함수

___ 12.3.4 배치 정규화

___ 12.3.5 드롭아웃

___ 12.3.6 텐서플로 2.0 소개

___ 12.3.7 분류 신경망 실습

___ 12.3.8 회귀 신경망 실습

12.4 합성곱 신경망(CNN)

___ 12.4.1 합성곱 신경망의 개념

___ 12.4.2 패딩

___ 12.4.3 스트라이드

___ 12.4.4 풀링

___ 12.4.5 고차원 데이터 합성곱

___ 12.4.6 합성곱 신경망 실습

12.5 순환 신경망(RNN)

___ 12.5.1 순환 신경망의 개념

___ 12.5.2 LSTM

___ 12.5.3 GRU

___ 12.5.4 순환 신경망 실습

12.6 오토 인코더(Auto-Encoder)

___ 12.6.1 오토 인코더 개념

___ 12.6.2 오토 인코더 실습

12.7 자연어 처리

___ 12.7.1 단어의 토큰화

___ 12.7.2 단어를 벡터로 변환

___ 12.7.3 단어 임베딩

___ 12.7.4 seq2seq 모형

___ 12.7.5 어텐션

___ 12.7.6 자연어 처리 실습

12.8 적대적 생성 신경망(GAN)

___ 12.8.1 적대적 생성 신경망의 개념

___ 12.8.2 적대적 생성 신경망 알고리즘

___ 12.8.3 적대적 생성 신경망 실습

 

보시다시피 구성이 참 알차게 되어있습니다.

최적화 파트에서도 Convex에 대한 정의부터 Optimizer에 대한 이론적인 내용도 소개하고 있고요.


Q. 그럼 누구에게 추천하는 책인가요?

개인적으로 입문자보다는 회귀분석 정도의 통계학 베이스를 갖추고 있고, 머신러닝이 무엇인지 알고 있는 독자들에게 추천하는 책입니다.

처음 배우는 독자들도 읽을 수는 있겠지만, 만약 '수포자'임에도 머신러닝이 무엇인지 궁금해서 읽으시려는 분들이라면 썩 추천하지는 않습니다.

물론 머신러닝을 공부하기 위해서 수학과 통계학은 피할래야 피할 수가 없는 부분이지만,

그럼에도 불구하고 베이스가 아예 없다면 일차적으로 입문조차 못할 가능성이 큽니다.

따라서 다른 책을 이용해 부족한 내용을 보충하시고, 읽으시는 것을 추천드립니다.


Q. 이 책의 장점은 무엇인가요?

이 책의 장점은 긴말 할 것 없이 쉬운 노선을 과감히 버리고 이론적인 깊이를 담았다는 것입니다.

사실 흥행(?)을 위해서라면 오히려 내용을 최대한 쉽게 하고 누구나 입문할 수 있도록 유도하는 것이 우월전략일텐데요.

아무래도 수식과 이론이 가득한 책이라면 거부감이 드는 것이 사실이겠죠.

 

하지만 넘쳐나는 입문서에 질리고, 수준 높은 책을 원하는 사람들에게는 이러한 책이 절실합니다.

그렇기 때문에 이 책의 장점은 이거 하나로 끝낼 수 있습니다.

 

다만 개인적으로 통계학에 집중한 만큼, CNN, RNN, GAN 등 딥러닝에 대한 내용보다는 차라리 회귀분석을 따로 챕터를 만들어서 아예 통계적 머신러닝 컨셉으로 가면 어땠을까 싶습니다.

신경망 기반의 여러 딥러닝 모형들이 통계학과 무관하다는 것은 아닙니다만, 뭐랄까... 아예 빼기는 그렇고 그렇자고 깊게 다루기엔 분량이 부족하니 애매하게 다룬 느낌이어서요.

차라리 그만한 분량을 회귀분석에 집중해서 통계학 내용을 보강했으면 훨씬 좋았을 것 같습니다.

 

 

사실 단점을 적은 이유는 너무 좋은 책이라 칭찬만 적으면 구매를 유도하는 것 같아서 단점도 찾아서 적어봤습니다.

정리하자면 통계학에 관심이 있으시고 머신러닝을 제대로 배우고 싶은 분들이라면 후회없이 읽으실 수 있는 책입니다.

 

 

 


- 간토끼(DataLabbit)

- University of Seoul

- Economics & Data Science

 

728x90

+ Recent posts