2026 가을 · 서울대학교 데이터사이언스대학원

기계학습과 딥러닝 I

Machine Learning & Deep Learning I

강의 정리본

강의 Joonseok Lee  ·  정리 이시헌
교재 ISL (James 외, 2021) · PML (Murphy) · DL (Goodfellow 외, 2015)

x y
데이터에 함수를 맞추고, 남는 오차를 잰다 — 이 수업 전체를 관통하는 한 장면.

일러두기

이 책은

서울대학교 데이터사이언스대학원 「Machine Learning & Deep Learning I」(2026 가을, Joonseok Lee) 강의를 내용의 흐름에 따라 장 단위로 다시 엮은 정리본이다. 강의 한 회가 한 장이 되지 않는다. 큰 주제가 바뀌는 자리에서 장을 나누었으므로, 한 장이 강의 두 회를 묶기도 하고 강의 한 회가 두 장에 걸치기도 한다. 어느 강의가 어느 장으로 갔는지는 「강의와 장」에 모았다.

  • 장은 강의 순서를, 절은 개념 순서를 따른다. 이 수업은 앞 강의에서 정의한 것을 뒤 강의에서 쓰므로 장의 차례가 곧 강의의 차례다. 장 안에서는 정의가 쓰임보다 앞서도록 몇몇 슬라이드의 자리를 옮겼고, 옮긴 곳은 장 도입 문단과 절 원천 표시에 밝혔다.
  • 절마다 원천을 적었다. 절 제목 바로 아래의 작은 글씨 한 줄(절 원천 표시)이 그 절이 온 강의와 슬라이드 범위다. 「L03 s15–s24」는 Lecture 3의 슬라이드 15–24라는 뜻이다. 장 표제지에는 원천 강의의 날짜와 함께 읽을 교재의 절을 적었다.
  • 1강(9/2)은 싣지 않았다. 과목 소개 강의인데 슬라이드를 받지 못했다. 들어오면 기계학습 개관 부분만 1.1절 끝에 싣는다.
  • 실습(Lab) 네 회는 싣지 않았다. 이 책은 강의만 정리한다.

강의 슬라이드를 한 장씩 따라가며 풀어 쓴 화면용 해설서는 따로 있다(guidebook/lectureNN.html).

표기

한국어를 먼저 쓴다. 개념어는 각 장에서 처음 나올 때 지도학습(supervised learning)처럼 영어를 함께 적고, 그 뒤로는 한국어만 쓴다. 약어는 처음에 한 번 풀어 쓴 뒤 약어로 쓴다. 현장에서 영어 그대로 통용되는 용어(feature, one-hot encoding 등)는 영어로만 적었다. 용어와 기호는 책 전체에서 하나로 통일했으며, 기호는 책 끝의 「기호와 표기」에 모았다.

수식 번호는 장마다 새로 매긴다 — 식 (2.3)은 제2장의 세 번째 번호 붙은 식이다. 그림과 표도 같다.

장별 인쇄 쪽 범위

모든 장은 홀수 쪽에서 시작한다. 한 장만 인쇄할 때는 아래 범위를 쓴다(장 앞의 빈 쪽은 범위에서 뺐다). 책 끝의 「기호와 표기」는 장마다 늘어나므로 함께 적었다.

장제목쪽쪽수
제1장지도학습의 틀13–2513
제2장선형회귀27–4620
제3장모형 선택47–5812
제4장분류59–8123
제5장과적합과 규제83–10018
제6장결정 트리와 앙상블101–13737
제7장서포트 벡터 머신139–16022
제8장비지도학습161–18121
기호와 표기183–19210

인쇄하는 법

Chrome에서 이 파일을 열고 인쇄한다. 용지 A4, 방향은 문서가 정하므로(가로) 따로 고르지 않는다. 여백 「기본값」, 배율 100%, 「머리글 및 바닥글」 끔, 「배경 그래픽」 켬. 쪽번호와 머리글은 문서가 스스로 찍는다. 제본은 왼쪽이다. 양면 인쇄는 짧은 쪽 넘김(short-edge flip)으로 한다. 가로로 놓인 쪽의 왼쪽 가장자리가 용지의 짧은 변이기 때문이다(긴 쪽 넘김은 달력처럼 위쪽으로 넘어간다). 안쪽 여백이 바깥보다 6mm 넓다.

차례

강의와 장

수업의 모든 회차가 이 책의 어디에 실렸는지, 또는 실릴 예정인지를 한 표에 모았다. 장은 큰 주제가 바뀌는 자리에서 나누었으므로 강의와 장이 한 줄씩 맞지 않는다. 같은 주제를 잇는 연속 강의는 한 장으로 묶었고, Lecture 4는 앞부분이 제2장의 끝을, 뒷부분이 제3장을 이룬다. 제4장은 Lecture 5와 6을 묶었고, 제6장은 Lecture 8과 9를 묶었다. 회색 글씨는 아직 강의가 열리지 않아 계획만 세워 둔 자리다. 차례에는 실제로 쓴 장만 나오므로 앞으로의 장 구성은 이 표에서만 보인다. 날짜와 강의 제목은 강의 사이트의 계획표(2026-09-21 열람)를 따랐고, 휴강일(9/7, 9/9, 10/5)은 뺐다.

회날짜강의이 책의 자리
L019/2 수Course Introduction싣지 않음 — 슬라이드 미보유
제1부 기계학습의 기초 · Part I Machine Learning Foundations
L029/14 월Introduction to Supervised Learning제1장 지도학습의 틀 — 전체(1.1–1.10)
L039/16 수Linear Regression I제2장 선형회귀 — 2.1–2.8
L049/21 월Linear Regression II제2장 선형회귀 — 2.9–2.10  ·  제3장 모형 선택 — 전체(3.1–3.6)
L059/23 수Classification I (Logistic regression)제4장 분류 — 4.1–4.8
L069/28 월Classification II (Bayes Classifiers)제4장 분류 — 4.9–4.15
Lab 19/30 수Machine Learning with Python싣지 않음 — 실습
L0710/7 수Overfitting & Regularization제5장 과적합과 규제 — 전체(5.1–5.11)
L0810/12 월Decision Trees제6장 결정 트리와 앙상블 — 6.1–6.10
L0910/14 수Ensemble Methods and Boosting제6장 결정 트리와 앙상블 — 6.11–6.22
L1010/19 월Support Vector Machines제7장 서포트 벡터 머신 — 전체(7.1–7.19)
L1110/21 수Unsupervised Learning제8장 비지도학습 — 전체(8.1–8.15)
Lab 210/26 월Regularization, Trees, Ensembles, Clustering싣지 않음 — 실습
—10/28 수중간고사제1부(제1–8장) 범위
강의와 장(계속)
회날짜강의이 책의 자리
제2부 딥러닝의 기초 · Part II Fundamentals of Deep Learning
L1211/2 월Nearest Neighbors & Softmax Classifiers제9장 선형 분류기에서 신경망으로 — 앞부분
L1311/4 수Neural Networks제9장 선형 분류기에서 신경망으로 — 뒷부분
L1411/9 월Convolutional Neural Networks제10장 합성곱 신경망
L1511/11 수Training Neural Networks I제11장 신경망의 훈련 — 앞부분
L1611/16 월Training Neural Networks II제11장 신경망의 훈련 — 뒷부분
Lab 311/18 수PyTorch & NN Basics싣지 않음 — 실습
L1711/23 월Sequential Data & RNN I제12장 순차 데이터와 순환 신경망 — 앞부분
L1811/25 수RNN II (LSTM, Seq2seq)제12장 순차 데이터와 순환 신경망 — 뒷부분
L1911/30 월Attention & Transformers I제13장 attention과 Transformer — 앞부분
L2012/2 수Transformers II제13장 attention과 Transformer — 뒷부분
Lab 412/7 월Attention & Transformers싣지 않음 — 실습
—12/14 월기말고사제2부(제9–13장) 범위

제1부 기계학습의 기초

Part I · Machine Learning Foundations

제1부는 수업의 전반부로, 데이터로부터 배운다는 일의 기초를 다진다. 제1장이 지도학습(supervised learning)을 모형 설계·목표 정의·훈련·예측의 네 단계로 세우면, 제2–3장은 가장 단순한 선형회귀(linear regression)로 그 네 단계를 끝까지 밟으며 최대가능도 추정(maximum likelihood estimation, MLE)과 모형 선택(model selection)을 들인다. 제4–7장은 분류(classification), 규제(regularization), 결정 트리(decision tree), 서포트 벡터 머신(support vector machine, SVM)으로 지도학습의 도구를 넓힌다. 경사하강법(gradient descent)은 제4장에서, 과적합(overfitting)을 다스리는 규제는 제5장에서 들어온다. 제8장은 답이 주어지지 않은 데이터에서 구조를 찾는 비지도학습(unsupervised learning)으로 마친다. 여기서 세운 틀과 도구를 제2부가 그대로 물려받는다.

  • 1지도학습의 틀
  • 2선형회귀
  • 3모형 선택
  • 4분류
  • 5과적합과 규제
  • 6결정 트리와 앙상블
  • 7서포트 벡터 머신
  • 8비지도학습

중간고사(10/28) 범위

제1장 지도학습의 틀

The Supervised Learning Framework

데이터로부터 배운다는 것을 정확히 말하면 무엇이고, 잘 배웠는지는 무엇으로 재는가? 이 장은 지도학습(supervised learning)을 네 단계로 세운 뒤, 한 단계씩 채워 가며 이 물음에 답한다. 잘 배웠는지는 배울 때 보지 못한 데이터에서 얼마나 틀리는지로 재며, 그 틀림이 함수를 복잡하게 할수록 줄다가 다시 느는 까닭을 밝히는 것이 장의 한가운데를 차지한다. 책의 첫 장이므로 앞 장에서 가져오는 것은 없고(확률의 기초는 안다고 보며, 기호는 책 끝의 「기호와 표기」를 따른다), 재배치도 없다. 강의 순서를 그대로 따랐고, 네 단계를 차례로 알리는 이정표 슬라이드(s15·s19·s22·s24)는 1.4–1.7절의 제목이 대신한다.

이 장의 구성

  1. 1.1기계학습이란 무엇인가14
  2. 1.2지도학습의 네 단계14
  3. 1.3회귀 문제와 회귀함수15
  4. 1.41단계: 모수 모형과 비모수 모형17
  5. 1.52단계: 평균제곱오차와 조건부 기댓값18
  6. 1.63단계: 훈련은 최적화다19
  7. 1.74단계: 훈련오차와 시험오차19
  8. 1.8모형 선택의 세 가지 트레이드오프21
  9. 1.9편향-분산 트레이드오프22
  10. 1.10분류 문제와 K-최근접 이웃23

원천 Lecture 2 (2026-09-14) 슬라이드 4–39 · 읽기 ISL 2.1–2.2

1.1 기계학습이란 무엇인가 What Is Machine Learning?

L02 s04–s08 · ISL 2.1.4

강의는 인공지능(artificial intelligence, AI)의 정의에서 출발한다. AI는 인간이나 동물의 지능(intelligence)과 구별되는, 기계나 소프트웨어의 지능이다. 그런 지능을 가진 기계를 만들고 연구하는 컴퓨터과학의 한 분야를 가리키기도 한다. 그러면 지능이란 무엇인가. 추상화, 논리, 이해, 자기 인식, 배움, 정서적 지식, 추리, 계획, 창의성, 비판적 사고, 문제 해결 능력 등 정의는 여럿이다. 이를 하나로 묶으면 정보를 지각하거나 추리하고, 그것을 지식으로 간직했다가 주어진 환경이나 맥락에서 적응적으로 행동하는 데 쓰는 능력이다. 두 정의는 모두 강의가 Wikipedia에서 가져왔다.

AI를 구현하는 길은 크게 둘이다. 하나는 인간의 지능이 어떻게 작동하는지 이해하고 그것을 기계로 흉내 내는 길이다. 뇌과학(brain science)과 인지과학(cognitive science)에서 인공신경망(artificial neural network)과 딥러닝(deep learning)으로 이어진다. 다른 하나는 기계가 왜 늘 사람을 흉내 내야 하느냐고 묻고, 기계에 더 알맞은 방식을 찾는 길이다. 1차 논리(first-order logic)와 지식표현(knowledge representation)을 거쳐 통계적 기계학습(statistical machine learning)으로 이어진다. 강의는 앞의 길에 DL, 뒤의 길에 ML이라는 이름표를 붙였다. 과목 이름을 이루는 두 축이다.

그러나 집합으로 보면 두 길은 나란하지 않다. 기계학습(machine learning)은 AI를 구현하는 한 방식이고, 딥러닝은 기계학습 안의 한 갈래다. 곧 AI ⊃ 기계학습 ⊃ 딥러닝이다. 강의의 비유로는 음식 ⊃ 이탈리아 요리 ⊃ 봉골레 파스타와 같다.

정의 · 기계학습

기계학습은 AI의 한 분야로, 데이터로부터 학습(learning)하고 처음 보는 데이터(unseen data)에 일반화(generalization)하여 명시적인 지시 없이 과업을 수행하는 통계적 알고리즘을 개발하고 연구한다. 달리 말해 수작업 지시를 최소로 줄인 데이터 기반(data-driven) 접근으로 AI를 구현하는 방법이다.

정의의 두 요소는 앞의 지능 정의와 짝을 이룬다. 데이터로부터 배우는 것은 정보를 지각하는 일에, 처음 보는 데이터에 일반화하는 것은 간직한 지식을 새 상황에 적응적으로 적용하는 일에 해당한다. 이 가운데 이 장이 끝까지 붙들고 가는 것은 일반화다. 가진 데이터에 잘 맞는 것과 처음 보는 데이터에 잘 맞는 것은 같지 않다. 1.7절은 이 차이를 수로 재고, 1.9절은 그 원인을 나누어 본다.

배우는 데이터의 모양에 따라 기계학습은 두 갈래로 나뉜다. 지도학습에서는 관측값(observation)과 그 레이블(label)의 짝이 주어진다. 훈련(training)을 마친 모형(model)은 처음 보는 관측값의 레이블을 예측(prediction)한다. 예를 들어 이미지마다 airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truck 가운데 하나의 레이블이 붙은 CIFAR-10으로 훈련한 모형은, 레이블 없는 고양이 사진을 받아 cat이라고 답한다. 비지도학습(unsupervised learning)에서는 레이블 없이 관측값의 목록만 주어지고, 모형은 관측값들만으로 패턴을 배운다. 강의의 예는 여러 동물 그림을 새, 물고기, 고양이와 개의 무리로 묶는 군집화(clustering)다. 비지도학습과 군집화는 제8장에서 다룬다. 그때까지 이 책은 지도학습만 다룬다.

1.2 지도학습의 네 단계 The Four Steps of Supervised Learning

L02 s09, s39

기계학습은 데이터 기반 접근이다. 이 말을 지도학습에 맞춰 네 단계로 풀어 놓은 것이 이 책 전체의 뼈대인 지도학습 틀(supervised learning framework)이다. 강의의 예는 \(x\) 하나로 \(y\)를 맞히는 \(f(x) = ax\)다.

정의 · 지도학습 틀의 네 단계
  1. 1단계 · 모형 설계. 사람은 모형의 형태만 정한다. 예: \(f(x) = ax\).
  2. 2단계 · 목표 정의. 모형이 이룰 목표를 정한다. 예: 되도록 \(y \approx f(x)\).
  3. 3단계 · 훈련. 훈련 데이터(training data) \(\{(x_i, y_i)\}_{i=1}^{n}\)을 써서 목표를 가장 잘 이루는 파라미터(parameter) \(a\)를 찾는다.
  4. 4단계 · 예측. 처음 보는 \(x\)가 주어지면 \(\hat{y} = ax\)를 계산해 그 레이블을 추정(estimation)한다. \(\hat{y}\)를 예측값(predicted value)이라 한다.
-2 0 2 4 -10 0 10 20 x y ŷ = ax ① 형태를 정한다: y = ax ②③ 훈련 데이터 (xi, yi)에서 y ≈ ax가 되도록 a를 찾는다 ④ 처음 보는 x
그림 1.1직선의 형태는 사람이 정하고(①) 기울기 \(a\)는 훈련 데이터가 정하며(②③), 처음 보는 \(x\)의 예측값 \(\hat{y}\)는 그 직선에서 읽는다(④). 예시 데이터.

그림 1.1의 산점도(scatterplot)에서 점들이 훈련 데이터다. 「데이터 기반」의 뜻이 여기서 분명해진다. 사람은 \(a\)의 값을 정하지 않는다. 형태 \(y = ax\)만 정하면 \(a\)는 데이터가 정한다. 1–3단계는 모형을 만드는 일이고 4단계는 만든 모형을 쓰는 일이다. 처음 보는 데이터에서 모형이 얼마나 맞는지 재고, 여러 후보 가운데 모형을 고르는 일도 4단계의 몫이다(1.7–1.9절). 강의는 네 단계를 차례로 다룰 때마다 이 그림을 다시 띄웠다. 이 책에서는 1.4–1.7절의 제목이 그 구실을 한다.

강의는 이 틀을 되짚으며 앞으로 배울 것을 넷으로 예고했다. 첫째는 모형을 설계하는 법이다. 설계는 문제의 유형과 데이터의 유형에 따라 달라진다. 문제로는 회귀(regression)와 분류(classification)를, 데이터로는 이미지, 텍스트, 시계열(time series)을 예로 들었다. 둘째는 훈련 데이터에 모형을 적합(fit)하는 법, 셋째는 모형을 평가(evaluation)하는 법, 넷째는 여러 후보 가운데 모형을 고르는 법이다. 표 1.1은 이 예고를 네 단계에 맞추어 이 책의 장과 절에 대응시킨 것이다.

표 1.1지도학습의 네 단계와 그것을 다루는 이 책의 자리
단계묻는 것이 장이어지는 곳
1 모형 설계문제와 데이터의 유형에 맞는 \(f\)의 형태는 무엇인가1.3, 1.4, 1.10제2장, 제4장, 제6–7장, 제9–10장, 제12–13장
2 목표 정의「\(y \approx f(x)\)」를 어떤 양으로 재는가1.52.3–2.4절, 제4장
3 훈련훈련 데이터로 파라미터를 어떻게 찾는가1.62.5절, 제4장, 제9장, 제11장
4 예측·평가·선택처음 보는 데이터에서 얼마나 맞는가, 무엇을 고르는가1.7–1.10제3장, 제4장, 제5장

1.3 회귀 문제와 회귀함수 Regression Problems and the Regression Function

L02 s11–s14 · ISL 2.1

네 단계를 구체적인 회귀 문제에 적용해 보자. Advertising 데이터는 여러 시장에서 한 제품의 판매량 Sales와 TV, Radio, Newspaper 세 매체의 광고비를 기록한 ISL의 예제 데이터다. 과제는 광고비로 Sales를 추정하는 것이다. 첫 시도로 매체마다 따로 선형회귀(linear regression)를 적합해 볼 수 있다. 곧 \(\text{Sales} \approx f_1(\text{TV})\), \(\text{Sales} \approx f_2(\text{Radio})\), \(\text{Sales} \approx f_3(\text{Newspaper})\)이다. 세 산점도(ISL 그림 2.1)에서 TV와의 관계가 가장 뚜렷하고 Newspaper와의 관계는 약하다. 그러나 세 광고비를 한꺼번에 받는 하나의 모형 \(\text{Sales} \approx f(\text{TV}, \text{Radio}, \text{Newspaper})\)가 더 나을 것이다.

표기 Notation

여기서 Sales는 예측하려는 반응변수(response)이고, 반응변수는 일반적으로 \(y\)로 적는다. TV는 feature이며 \(X_1\)이라 부른다. 같은 식으로 Radio는 \(X_2\), Newspaper는 \(X_3\)이다. 모형에 들어가는 것 전체를 입력(input)이라 하고 그 안의 변수 하나하나를 feature라 한다. 한 관측값의 feature 값을 모은 입력 벡터(input vector)는

$$\bx = \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} \in \R^3$$

이고, 모형은 함수 \(f : \R^3 \to \R\)를 써서 다음과 같이 적는다.

$$y = f(\bx) + \epsilon \tag{1.1}$$

\(\epsilon\)은 측정오차(measurement error)를 비롯해 \(f(\bx)\)로 설명되지 않는 어긋남을 모두 담는 오차(error)로, \(\bx\)와 독립(independent)이라고 가정한다. 슬라이드에는 독립만 적혀 있지만, 이 책은 \(\E[\epsilon] = 0\)도 함께 가정한다. 아래 식 (1.2)처럼 \(f\)를 잡으면 이 가정은 저절로 성립한다(보충).

회귀함수가 하는 일 What the Regression Function Does

\(f\)를 회귀함수(regression function)라 한다. 회귀함수는 \(\bx\)를 받아 \(y\)를 출력(output)으로 내놓는다. \(\bx\)는 스칼라일 수도, 성분이 여럿인 벡터일 수도 있고, \(y\)도 마찬가지다. feature가 \(p\)개이면 \(\bx = (x_1, x_2, \dots, x_p)^\top\)이다. 물론 아무 \(y\)나 내놓는 \(f\)는 소용이 없다. 여러 \(\bx\)에 대해 좋은 \(y\)를 내놓는 좋은 \(f\)가 필요하다.

좋은 회귀함수는 두 가지로 쓰인다. 하나는 예측이다. 다른 하나는 \(\bx\)의 어느 성분이 \(y\)를 설명하는 데 중요하고 어느 성분이 무관한지를 이해하는 것으로, ISL은 이것을 추론(inference)이라 부른다. 예를 들어 소득 Income을 설명할 때 근속 연수 Seniority와 교육 연수 Years of Education은 큰 영향을 주지만, 혼인 여부 Marital Status는 그렇지 않을 수 있다(Income 데이터는 1.4절에서 소개하는 ISL의 모의 데이터다).

이상적인 회귀함수 The Ideal Regression Function

그러면 이상적인 \(f\)는 무엇인가. 특히 어떤 한 점, 예컨대 \(x = 4\)에서 \(f(4)\)는 어떤 값이어야 하는가. 그림 1.2에서 보듯 \(x = 4\)에서도 \(y\)는 한 값이 아니라 여러 값으로 흩어져 있다. 좋은 값은 \(x = 4\)일 때 \(y\)의 기댓값(expected value), 곧 평균(mean)이다. 이것을 4뿐 아니라 가능한 모든 \(x\)에서 원한다.

정의 · 이상적인 회귀함수

입력 \(\bx\)에서 회귀함수의 값은 그 입력이 주어졌을 때 반응변수의 조건부 기댓값(conditional expectation)이다.

$$f(\bx) = \E[Y \mid X = \bx] \tag{1.2}$$

이탤릭 대문자 \(X\), \(Y\)는 확률변수(random variable)로서의 입력과 반응변수이고, 소문자는 그 값이다.

1 2 3 4 5 6 7 -2 0 2 4 6 x y f(4) = E[Y | X = 4] f(x) = E[Y | X = x] x = 4에서의 관측값들
그림 1.2\(x = 4\)에서도 \(y\)는 한 값이 아니라 흩어져 있고, 회귀함수는 각 \(x\)에서 그 평균 \(\E[Y \mid X = x]\)를 잇는 곡선이다. 예시 데이터.

그러나 식 (1.2)를 그대로 계산할 수는 없다. 우리가 가진 것은 \(X\)와 \(Y\)의 분포가 아니라 유한한 관측값뿐이기 때문이다. 게다가 실제 데이터에는 \(x\)가 정확히 4인 관측값이 거의 없다. 그러니 조건부 기댓값을 데이터로 추정하는 길은 두 가지다. 하나는 \(x = 4\) 근처의 관측값을 평균하는 것으로, 이 발상은 1.10절에서 분류 방법의 모습으로 다시 나온다. 다른 하나는 \(f\)의 형태를 미리 정해 두고 그 안에서 데이터에 가장 잘 맞는 것을 고르는 것이다. 다음 절에서 보듯, 이 두 길이 모형을 설계하는 두 방식에 대응한다(보충).

1.4 1단계: 모수 모형과 비모수 모형 Step 1: Parametric and Non-parametric Models

L02 s16–s18 · ISL 2.1.2

1단계는 \(f\)의 형태를 정하는 일이다. 대부분의 통계적 학습(statistical learning) 방법은 이 일을 하는 방식에 따라 모수적이거나 비모수적이다.

정의 · 모수 모형

모수 모형(parametric model)은 입력 feature \(\bx\)와 출력 \(y\) 사이의 관계에 특정한 형태를 정하고, 그 형태를 유한 개의 파라미터로 나타낸다. 대표적인 예가 선형회귀다.

$$f_L(\bx) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_p x_p \tag{1.3}$$

선형 모형(linear model) \(f_L\)은 입력값 \(x_1, \dots, x_p\)를 \(p + 1\)개의 파라미터 \(\beta_0, \beta_1, \dots, \beta_p\)로 선형 결합해 출력과 관계 짓는다. 파라미터 값은 3단계에서 훈련 데이터에 적합해 정한다(1.6절). 이렇게 하면 함수 \(f\) 전체를 추정하는 어려운 문제가 수 \(p + 1\)개를 추정하는 훨씬 쉬운 문제로 바뀐다(ISL 2.1.2). 선형이라는 가정은 거의 언제나 정확히 맞지 않는다. 그래도 선형 모형은 알 수 없는 참 함수(true function) \(f\)를 잘 근사하는 경우가 많고, 무엇보다 해석하기 쉽다. 곧 해석력(interpretability)이 높다.

그림 1.3은 이 관계를 Income 데이터로 보여 준다. Income 데이터는 교육 기간과 근속 기간으로 소득을 설명하는 ISL의 모의 데이터로, 변수는 Years of Education, Seniority, Income이다. 모의 데이터라서 참 \(f\)를 안다. (a)의 곡면이 참 \(f\)이고 점은 관측한 소득이다. (b)는 같은 데이터에 선형회귀 모형을 적합한 평면이다. \(f\)의 추정을 \(\hat{f}\)으로 적고 Years of Education을 \(X_1\), Seniority를 \(X_2\)라 하면

$$\hat{f}(\bx) = \hat{\beta}_0 + \hat{\beta}_1 x_1 + \hat{\beta}_2 x_2$$

이다. 모자(^)는 데이터로 추정했다는 표시다. 파라미터 세 개만 추정하면 되는 대신, 평면은 참 \(f\)가 교육 기간 방향으로 그리는 S자 굴곡을 잡지 못한다. 이 그림은 1.7절에서 다시 쓴다.

← Years of Education Seniority → Income (a) 참 f ← Years of Education Seniority → Income (b) 선형 모형으로 적합한 평면
그림 1.3참 \(f\)는 Years of Education 방향으로 S자로 굽지만(a), 선형 모형은 파라미터 세 개로 이를 평면으로 근사한다(b). 세로 선분은 관측값과 면 사이의 거리다. 예시 데이터(ISL 그림 2.3·2.4를 본뜸).

비모수 모형(non-parametric model)은 \(f\)의 함수 형태(functional form)를 명시적으로 가정하지 않는다. 대신 데이터 점에 되도록 가까우면서도 너무 거칠거나 구불구불하지 않은 \(f\)의 추정값(estimate)을 찾는다. 모수 모형에는 \(f\)를 추정하려고 고른 함수 형태가 참 \(f\)와 크게 다를 위험이 있다. 비모수 방법은 형태를 사실상 가정하지 않으므로 이 위험을 아예 피한다. 그러나 문제를 파라미터 몇 개로 줄이지 못하므로, 정확한 추정을 얻으려면 관측값이 매우 많이 필요한 경향이 있다. 표 1.2에 두 방식을 견주었다.

표 1.2모수 모형과 비모수 모형
모수 모형비모수 모형
형태 가정한다(예: 선형 \(f_L\))명시적으로 하지 않는다
추정할 것파라미터 유한 개(선형이면 \(p + 1\)개)함수 자체
장점문제가 쉬워지고 해석하기 쉽다형태를 잘못 고를 위험이 없다
대가고른 형태가 참 \(f\)와 크게 다를 수 있다관측값이 매우 많이 필요하다
이 장의 예식 (1.3)의 선형회귀, 그림 1.3(b)그림 1.5의 곡면, KNN(1.10절)

1.5 2단계: 평균제곱오차와 조건부 기댓값 Step 2: Mean Squared Error and the Conditional Expectation

L02 s20–s21 · ISL 2.1.1

2단계는 「되도록 \(y \approx f(\bx)\)」를 정확한 수식으로 옮기는 일이다. 목표를 수식으로 적은 것을 목적함수(objective function)라 한다. 1.3절의 예로 돌아가면, 가능한 모든 입력 \(\bx\)에서 \(f(\bx) = \E[Y \mid X = \bx]\)이기를 바랄 수 있다. 이것이 유일한 방법은 아니지만 널리 쓰이는 방법이다. 이 선택을 뒷받침하는 기준이 평균제곱 예측오차(mean-squared prediction error) \(\E[(Y - g(X))^2 \mid X = \bx]\)다. 여기서 \(g\)는 아무 후보 함수다.

결과 · 조건부 기댓값은 평균제곱 예측오차를 최소화한다

모든 점 \(\bx\)에서, 모든 함수 \(g\) 가운데 평균제곱 예측오차를 가장 작게 만드는 것은 조건부 기댓값 \(f(\bx) = \E[Y \mid X = \bx]\)이다. \(X = \bx\)로 조건을 걸면 \(g(X)\)는 상수 \(c = g(\bx)\)가 되므로, 이 말은 다음과 같다.

$$\E[Y \mid X = \bx] = \argmin_{c \in \R}\, \E\big[(Y - c)^2 \mid X = \bx\big] \tag{1.4}$$

슬라이드는 이 결과를 두고 지금은 이해하지 못해도 되며 나중에 다시 본다고 했다. 증명은 짧으므로 이 절 끝에 보충으로 싣는다.

이제 어떤 추정 \(\hat{f}\)을 쓸 때 예측이 얼마나 틀리는지 보자. \(\hat{f}\)과 \(\bx\)를 고정하고 \(Y = f(X) + \epsilon\)을 넣으면 기대 제곱오차(squared error)는 두 부분으로 나뉜다.

$$\begin{aligned} \E\big[(Y - \hat{f}(X))^2 \mid X = \bx\big] &= \E\big[(f(X) + \epsilon - \hat{f}(X))^2 \mid X = \bx\big] \\ &= [f(\bx) - \hat{f}(\bx)]^2 + 2[f(\bx) - \hat{f}(\bx)]\,\E[\epsilon] + \E[\epsilon^2] \\ &= \underbrace{[f(\bx) - \hat{f}(\bx)]^2}_{\text{reducible}} + \underbrace{\Var(\epsilon)}_{\text{irreducible}} \end{aligned} \tag{1.5}$$

가운데 줄은 슬라이드가 건너뛴 전개다(보충). 1.3절의 가정대로 \(\epsilon\)이 \(\bx\)와 독립이고 평균이 0이면 교차항(cross term)이 사라지고 \(\E[\epsilon^2] = \Var(\epsilon)\)이 남는다.

첫 항은 \(\hat{f}\)을 참 \(f\)에 가깝게 만들수록 줄어드는 줄일 수 있는 오차(reducible error)이고, 둘째 항 \(\Var(\epsilon)\)은 줄일 수 없는 오차(irreducible error)다. \(\epsilon = y - f(\bx)\)는 참 \(f\)를 알아도 남는다. 각 \(\bx\)에서 가능한 \(y\) 값이 보통 하나가 아니라 분포를 이루기 때문이다(그림 1.2). 강의는 이 과목의 초점을 이렇게 못 박았다. 줄일 수 있는 오차를 최소화하도록 \(f\)를 추정하는 기법을 배운다는 것이다.

식 (1.4)의 증명(보충). \(\bx\)를 고정하고 \(\mu = \E[Y \mid X = \bx]\)라 두자. 아무 상수 \(c\)에 대해 \(Y - c = (Y - \mu) + (\mu - c)\)로 쪼개어 제곱하고 조건부 기댓값을 취하면 다음을 얻는다.

$$\begin{aligned} \E\big[(Y - c)^2 \mid X = \bx\big] &= \E\big[(Y - \mu)^2 \mid X = \bx\big] \\ &\quad + 2(\mu - c)\,\E[Y - \mu \mid X = \bx] + (\mu - c)^2 \\ &= \Var(Y \mid X = \bx) + (\mu - c)^2 \end{aligned}$$

교차항은 \(\E[Y - \mu \mid X = \bx] = \mu - \mu = 0\)이어서 사라진다. 남은 두 항 가운데 조건부 분산(variance) \(\Var(Y \mid X = \bx)\)는 \(c\)와 무관하고, \((\mu - c)^2\)은 \(c = \mu\)일 때만 0이다. 따라서 \(c = \mu\)가 유일한 최소점이다. 이 논증은 각 \(\bx\)에서 따로 성립하므로, 모든 점에서 \(g(\bx) = \E[Y \mid X = \bx]\)로 고른 함수, 곧 회귀함수 \(f\)가 평균제곱 예측오차를 최소화한다. 미분으로 보아도 같다. \(c\)로 미분한 \(-2\,\E[Y - c \mid X = \bx]\)를 0으로 두면 \(c = \mu\)다.

참고 · 왜 하필 제곱인가

평균제곱 예측오차는 유일한 기준이 아니라 널리 쓰이는 기준일 뿐이다. 왜 하필 제곱을 쓰는지는 2.3–2.4절에서 최대가능도(maximum likelihood)로 답한다. 슬라이드가 나중에 다시 본다고 한 식 (1.4)는 제4장에서 분류 문제의 형태로 다시 나온다.

1.6 3단계: 훈련은 최적화다 Step 3: Training as Optimization

L02 s23 · ISL 2.1.2

3단계에서는 서로 다른 데이터 점 \(n\)개를 관측했다고 늘 가정한다. 이 관측값들로 \(f\)를 추정하는 방법을 훈련하므로 이것을 훈련 데이터라 부른다. 목표는 훈련 데이터에 학습 방법(learning method)을 적용해 알 수 없는 함수 \(f\)를 추정하는 것이다. 곧 어떤 관측값 \((\bx, y)\)에 대해서도 \(y \approx \hat{f}(\bx)\)가 되는 \(\hat{f}\)을 찾는다.

이 단계를 최적화(optimization)라 부르며, 하는 방법은 여럿이다. 가능하면 닫힌 형태의 해(closed-form solution)를 쓴다. 선형회귀가 그 예로, 해를 2.5절에서 행렬 계산 한 번으로 구한다. 닫힌 해가 없으면 경사하강법(gradient descent) 같은 수치적 방법(numerical method)을 널리 쓴다. 경사하강법은 제4장에서 다룬다.

보충 · 목표와 훈련은 어떻게 이어지나

2단계의 목표 \(\E[(Y - g(X))^2]\)는 \(X\), \(Y\)의 분포 전체에 대한 기댓값이라 직접 계산할 수 없다. 실제 훈련은 이 기댓값을 훈련 데이터 위의 평균 \(\frac{1}{n}\sum_{i=1}^{n}(y_i - g(\bx_i))^2\)으로 바꾸고, 1단계에서 정한 형태 안에서, 선형 모형이면 \(\beta_0, \dots, \beta_p\)에 대해 이 평균을 최소화한다. 같은 평균을 1.7절에서 모형을 평가하는 자리에서 다시 만난다.

주의 · \(f\)와 \(\hat{f}\)은 다르다

\(f\)는 자연이 정해 둔, 알 수 없는 참 함수로 하나뿐이다. \(\hat{f}\)은 우리가 가진 훈련 데이터로 만든 추정이어서, 훈련 데이터가 달라지면 \(\hat{f}\)도 달라진다. 1.9절에서 이 흔들림이 분산이라는 이름을 얻는다.

1.7 4단계: 훈련오차와 시험오차 Step 4: Training Error and Test Error

L02 s25–s29 · ISL 2.2.1

4단계에서는 훈련한 모형으로 처음 보는 \(\bx\)의 \(\hat{y}\)를 계산한다. 모형이 얼마나 잘 맞히는지, 곧 모형의 정확도(accuracy)를 재는 일도 이 단계의 몫이다. 훈련 데이터 \(\mathsf{Tr} = \{(\bx_i, y_i)\}_{i=1}^{n}\)에 모형 \(\hat{f}\)을 적합했다고 하자. 가장 손쉬운 잣대는 훈련 데이터 위에서 잰 평균제곱오차(mean squared error, MSE)다.

$$\MSE_{\mathsf{Tr}} = \Ave_{i \in \mathsf{Tr}}\big[y_i - \hat{f}(\bx_i)\big]^2 = \frac{1}{n}\sum_{i \in \mathsf{Tr}}\big[y_i - \hat{f}(\bx_i)\big]^2 \tag{1.6}$$

이 값을 훈련오차(training error)라 한다. 그러나 훈련오차는 과적합(overfitting)된 모형 쪽으로 치우친다. \(\hat{f}\)은 바로 이 데이터에서 오차가 작아지도록 고른 것이어서, 유연한 모형일수록 훈련 데이터의 우연한 흔들림까지 따라가며 훈련오차를 낮출 수 있기 때문이다. 그래서 가능하면 훈련 데이터와 다른 새 시험 데이터(test data) \(\mathsf{Te} = \{(\bx_i, y_i)\}_{i=1}^{M}\)으로 잰다.

$$\MSE_{\mathsf{Te}} = \Ave_{i \in \mathsf{Te}}\big[y_i - \hat{f}(\bx_i)\big]^2 = \frac{1}{M}\sum_{i \in \mathsf{Te}}\big[y_i - \hat{f}(\bx_i)\big]^2 \tag{1.7}$$

이것이 시험오차(test error)다. 1.1절의 「처음 보는 데이터에 일반화한다」가 여기서 잴 수 있는 양이 된다.

그림 1.4는 ISL 그림 2.9를 예시 데이터로 다시 그린 것이다. 왼쪽은 참 \(f\)(점선)에서 뽑은 관측값 50개에 유연성(flexibility)이 다른 세 모형을 적합한 결과다. 선형 모형은 참 곡선의 굽음을 따라가지 못하고, 가장 유연한 비선형 모형(nonlinear model)은 점 하나하나를 좇느라 요동친다. 오른쪽은 유연성을 자유도(degrees of freedom)로 재어 가로축에 놓고 훈련 MSE와 시험 MSE를 그린 것이다. ISL은 두 비선형 모형으로 smoothing spline을 썼고, 이 그림도 같은 계열의 매끄러운 곡선 적합을 썼다. 곡선이 매끄럽도록 크기 50인 훈련 데이터를 여러 번 새로 뽑아 평균했다(보충).

훈련 MSE는 유연성이 커질수록 계속 준다. 시험 MSE는 줄다가 다시 늘어 U자를 그린다. 선형 모형은 두 오차가 모두 크고, 가장 유연한 모형은 훈련 MSE가 가장 작은데도 시험 MSE가 다시 커진다. 시험 MSE가 가장 작은 것은 가운데의 적당히 매끄러운 모형이다. 이 예에서는 참 \(f\)가 매끄러우므로 매끄러운 비선형 모형이 가장 잘 맞는 것이다. 점선은 식 (1.5)의 줄일 수 없는 오차 \(\Var(\epsilon) = 1\)이다. 시험 MSE의 기댓값은 어떤 모형으로도 이 밑으로 내려가지 않는다. U자가 생기는 까닭은 1.9절에서 답한다.

0 20 40 60 80 100 2 4 6 8 10 12 X Y 참 f 선형 모형 비선형 모형 더 유연한 비선형 모형 2 5 10 20 0.0 0.5 1.0 1.5 2.0 2.5 유연성 (자유도, 로그 눈금) MSE 시험 MSE 훈련 MSE Var(ε) = 1
그림 1.4유연성이 커질수록 훈련 MSE는 줄기만 하지만 시험 MSE는 줄다가 다시 늘어 U자를 그리며, 그 바닥은 \(\Var(\epsilon)\) 위에 있다. 오른쪽의 네모는 왼쪽 세 적합의 자리다. 예시 데이터(ISL 그림 2.9를 본뜸).

같은 일을 Income 데이터에서 보자. 유연성이 가장 낮은 선형 모형은 그림 1.3(b)의 평면이었다. 강의는 이 그림을 모형 선택(model selection), 곧 여러 후보 가운데 하나를 고르는 문제의 첫 후보로 다시 띄운 뒤 유연성을 올려 갔다. 그 결과가 그림 1.5다. 변수 사이의 비선형 관계를 쓰는 더 유연한 모형(a)은 참 \(f\)의 굴곡을 상당히 비슷하게 재현하고, 점과 면 사이의 거리도 평면보다 짧다. 유연성을 더 올린 모형(b)은 모든 훈련 관측값을 정확히 지나므로 훈련 데이터에서 오차가 전혀 없다. 그러나 곡면이 참 \(f\)보다 훨씬 울퉁불퉁하므로 새 데이터에서는 오차가 커질 것이다. 1.4절에서 비모수 방법이 너무 거칠거나 구불구불하지 않은 추정을 찾는다고 한 단서가 바로 이것이다. ISL은 두 곡면을 thin-plate spline으로 그렸고(ISL 그림 2.5·2.6), 그림 1.5도 같은 방법으로 그렸다.

← Years of Education Seniority → Income (a) 매끄러운 비선형 곡면 ← Years of Education Seniority → Income (b) 훈련오차가 0인 곡면
그림 1.5유연성을 높이면 적합한 곡면이 참 \(f\)의 굴곡을 따라가다가(a), 끝내 모든 훈련 관측값을 지나는 울퉁불퉁한 곡면이 된다(b). 그림 1.3과 같은 예시 데이터.
주의 · 훈련오차가 0이면 좋은 모형인가

아니다. 그림 1.5(b)와 그림 1.4의 가장 유연한 모형이 보여 주듯, 훈련 데이터를 외울수록 훈련오차는 줄지만 시험오차는 오히려 커질 수 있다. 모형은 시험오차로 평가한다. 시험 데이터를 따로 확보하기 어려울 때 시험오차를 추정하는 방법은 3.5–3.6절에서 다룬다.

1.8 모형 선택의 세 가지 트레이드오프 Three Trade-offs in Model Selection

L02 s30–s31 · ISL 2.1.3

모형을 고를 때는 서로 당기는 기준 사이에서 균형을 잡아야 한다. 강의는 이것을 모형 선택의 세 가지 트레이드오프(trade-off)로 정리했다(표 1.3).

표 1.3모형 선택의 세 가지 트레이드오프와 이 책에서 다루는 곳
트레이드오프강의가 던진 물음과 관찰 (이 책에서)
적합 대 과적합·과소적합훈련 데이터의 정확도는 처음 보는 데이터의 정확도를 잘 가리키는가? 아니라면 어느 모형이 나은지 어떻게 정하는가? (1.7절, 3.5–3.6절)
예측 정확도 대 해석력선형 모형은 해석하기 쉽고, 비선형 모형은 더 정확하다. (그림 1.6)
간결성 대 복잡성변수를 모두 쓰는 블랙박스 모형보다 변수가 적은 단순한 모형을 흔히 선호한다. (3.1–3.4절, 제5장)

첫째는 좋은 적합과, 과적합 또는 과소적합(underfitting) 사이의 균형이다. 훈련 데이터의 정확도가 처음 보는 데이터의 정확도를 잘 가리키느냐는 물음에 1.7절은 「아니다」라고 답했다. 그러면 어느 모형이 나은지 어떻게 정하느냐는 물음이 남는데, 이것은 제3장이 3.5–3.6절에서 답한다. 둘째는 예측 정확도와 해석력 사이의 균형이다. 선형 모형은 해석하기 쉽고 비선형 모형은 더 정확하다. 다만 이것은 일반적인 경향일 뿐이며, 그림 1.4의 가장 유연한 모형처럼 과적합되면 시험 정확도는 오히려 떨어진다(보충). 셋째는 간결성(parsimony)과 복잡성 사이의 균형이다. 변수를 모두 쓰는 블랙박스(black box) 모형보다 변수가 적은 단순한 모형을 흔히 선호한다. 무엇을 남길지 고르는 법은 제3장의 feature selection이 다룬다.

그림 1.6은 둘째 트레이드오프를 여러 방법의 대략적인 자리로 보여 준다. 가장 덜 유연하고 해석하기 쉬운 쪽에 부분집합 선택(subset selection)과 lasso가 있다. 부분집합 선택은 제3장에서, lasso는 제5장에서 다룬다. 그다음이 제2장의 최소제곱법(least squares)이다. 가운데에는 일반화 가법 모형(generalized additive model, GAM)과 결정 트리(decision tree)가 있다. GAM은 이 책에서 다루지 않고, 결정 트리는 제6장에서 다룬다. 오른쪽 아래로 갈수록 제6장의 bagging과 boosting, 제7장의 서포트 벡터 머신(support vector machine, SVM), 제2부(제9–13장)의 딥러닝이 차례로 놓인다. 이 그림은 제1부의 지도인 셈이다.

부분집합 선택 · 제3장 lasso · 제5장 최소제곱법 · 제2장 GAM · 이 책에서 다루지 않음 결정 트리 · 제6장 bagging, boosting · 제6장 SVM · 제7장 딥러닝 · 제9–13장 낮음 높음 유연성 낮음 높음 해석력
그림 1.6유연한 방법일수록 해석하기 어렵다. 방법 이름 옆의 장 번호는 그 방법을 다루는 이 책의 장이다(ISL 그림 2.7을 다시 그림).
참고 · 목적에 따라 고른다(ISL 2.1.3)

어떤 feature가 중요한지 알아내는 추론이 목적이면 그림 1.6의 왼쪽 위 방법이, 예측만이 목적이면 오른쪽 아래 방법이 유리해 보인다. 그러나 과적합 때문에 예측에서도 덜 유연한 방법이 이기는 일이 흔하다.

1.9 편향-분산 트레이드오프 The Bias-Variance Trade-off

L02 s32 · ISL 2.2.2

그림 1.4의 시험 MSE는 왜 U자를 그리는가. 훈련 데이터 \(\mathsf{Tr}\)에 모형 \(\hat{f}\)을 적합했고, \((\bx_0, y_0)\)가 모집단(population)에서 뽑은 시험 관측값 하나라고 하자. 참 모형이 \(y = f(\bx) + \epsilon\)이고 \(f(\bx) = \E[Y \mid X = \bx]\)이면 다음이 성립한다.

결과 · 편향-분산 분해 $$\E\big[(y_0 - \hat{f}(\bx_0))^2\big] = \Var\big(\hat{f}(\bx_0)\big) + \big[\Bias\big(\hat{f}(\bx_0)\big)\big]^2 + \Var(\epsilon) \tag{1.8}$$ $$\Bias\big(\hat{f}(\bx_0)\big) = \E\big[\hat{f}(\bx_0)\big] - f(\bx_0) \tag{1.9}$$

식 (1.9)의 양을 편향(bias)이라 한다. \(\hat{f}(\bx_0)\)의 평균이 참값(true value) \(f(\bx_0)\)에서 체계적으로 벗어난 정도다. 식 (1.8)은 기대 시험오차를 \(\hat{f}(\bx_0)\)의 분산, 편향의 제곱, \(\epsilon\)의 분산 셋으로 나눈다. 이것을 편향-분산 분해(bias-variance decomposition)라 한다.

주의 · 기댓값은 무엇에 대한 것인가

식 (1.8)의 기댓값은 두 가지 무작위성에 걸쳐 있다. 하나는 모집단에서 훈련 데이터 \(\mathsf{Tr}\)를 새로 뽑을 때마다 \(\hat{f}\)이 달라지는 것이고, 다른 하나는 \(y_0\)에 섞인 \(\epsilon\)이다. \(\Var(\hat{f}(\bx_0))\)는 훈련 데이터가 바뀔 때 \(\hat{f}(\bx_0)\)이 얼마나 출렁이는지를, 편향은 그 평균이 참값에서 얼마나 벗어나는지를 잰다. 또 좌변은 제곱의 기댓값이다. 슬라이드와 ISL은 이것을 \(\E[y_0 - \hat{f}(\bx_0)]^2\)처럼 줄여 적는데, 기댓값의 제곱으로 읽으면 안 된다.

보통 \(\hat{f}\)의 유연성이 커지면 분산은 커지고 편향은 줄어든다. 그러므로 평균 시험오차를 기준으로 유연성을 고르는 일은 편향과 분산을 맞바꾸는 일이다. 이것을 편향-분산 트레이드오프(bias-variance trade-off)라 한다.

식 (1.5)와 견주면 뜻이 더 분명해진다. 식 (1.5)는 \(\hat{f}\)을 고정했을 때의 분해였다. 그 줄일 수 있는 오차 \([f(\bx_0) - \hat{f}(\bx_0)]^2\)를 훈련 데이터에 대해 평균하면 \(\Var(\hat{f}(\bx_0)) + [\Bias(\hat{f}(\bx_0))]^2\)가 된다. 곧 식 (1.8)은 줄일 수 있는 오차를 다시 분산과 편향의 제곱으로 쪼갠 것이다. 증명은 2.6절에서 한다.

2 5 10 20 0.0 0.5 1.0 1.5 2.0 2.5 유연성 (자유도, 로그 눈금) 최소 기대 시험 MSE (합) 분산 편향² Var(ε)
그림 1.7(보충) 그림 1.4의 시험 MSE 곡선은 유연성에 따라 줄어드는 편향의 제곱, 늘어나는 분산, 일정한 \(\Var(\epsilon)\)의 합이다. 그림 1.4와 같은 예시 데이터에서 \(\bx_0\)에 대해 평균한 값.

그림 1.7은 그림 1.4의 예시 데이터에서 세 항을 따로 계산해 그린 것이다(보충). 선형 모형은 분산이 작지만 편향이 커서 시험 MSE가 크다. 가장 유연한 모형은 편향이 거의 0이지만 분산이 커서 시험 MSE가 다시 커진다. 두 효과가 맞물리는 중간에서 시험 MSE가 가장 작다. 이것이 U자의 이유다.

1.10 분류 문제와 K-최근접 이웃 Classification and K-Nearest Neighbors

L02 s34–s38 · ISL 2.1.5, 2.2.3

지금까지는 반응변수 \(y\)가 수치인 회귀 문제였다. 분류 문제에서는 \(y\)가 질적(qualitative) 변수, 곧 범주형(categorical) 변수다. 예를 들어 이메일은 \(\mathcal{C} = \{\text{spam}, \text{ham}\}\) 가운데 하나이고(ham은 정상 메일이다), 손글씨 숫자는 \(\mathcal{C} = \{0, 1, \dots, 9\}\) 가운데 하나다. \(y\)가 가질 수 있는 값을 클래스(class)라 하고, 그 집합을 \(\mathcal{C}\)로 적는다. 분류의 목표는 셋이다.

  1. 레이블이 없는 미래의 관측값 \(\bx\)에 \(\mathcal{C}\)의 클래스 레이블을 붙이는 분류기(classifier)를 만든다.
  2. 각 분류의 불확실성(uncertainty)을 평가한다.
  3. \(\bx = (x_1, x_2, \dots, x_p)^\top\)의 여러 feature가 하는 역할을 이해한다.

첫째와 셋째는 회귀의 예측과 추론(1.3절)에 대응한다. 분류기의 성능은 보통 시험 데이터에서의 오분류율(misclassification error rate)로 잰다.

$$\mathrm{Err}_{\mathsf{Te}} = \frac{1}{M}\sum_{i \in \mathsf{Te}} I\big(y_i \neq \hat{f}(\bx_i)\big) \tag{1.10}$$

여기서 \(I(\cdot)\)는 괄호 안이 참이면 1, 거짓이면 0인 지시함수(indicator function)다. 곧 오분류율은 시험 관측값 \(M\)개 가운데 틀린 것의 비율로, 회귀의 식 (1.7) \(\MSE_{\mathsf{Te}}\)에 해당한다. 슬라이드는 분류기를 \(f\)로 적었지만, 데이터로 만든 추정이므로 이 책은 \(\hat{f}\)으로 적는다. 분류 모형을 본격적으로 세우고 훈련하는 일은 제4장이 맡는다.

이미지 분류(image classification)는 기계학습의 핵심 과업이다. 레이블의 집합 {dog, cat, truck, plane, …}이 주어졌다고 할 때, 사진 한 장을 받아 그 가운데 하나, 예컨대 cat을 내놓는다. 입력은 픽셀 값의 배열이고 출력은 클래스 레이블이다.

K-최근접 이웃 K-Nearest Neighbors

가장 단순한 분류기 가운데 하나가 K-최근접 이웃(K-nearest neighbors, KNN)이다. 질의(query) 이미지가 들어오면 레이블이 붙은 훈련 데이터에서 그것과 가장 비슷한 이미지 \(K\)개를 찾아 그 레이블을 쓴다. 무엇을 비슷하다고 볼지, 곧 유사도(similarity)를 어떻게 잴지는 여기서 정하지 않는다.

이를 확률의 말로 적으면 다음과 같다.

정의 · KNN 분류기

\(\mathcal{N}_0\)를 \(\bx_0\)에 가장 가까운 훈련 관측값 \(K\)개의 첨자 집합이라 하자. \(K\)는 미리 정해 두는 값이다. \(\bx_0\)가 주어졌을 때 클래스 \(k\)의 조건부 확률(conditional probability)은 이 이웃(neighbor) 가운데 클래스가 \(k\)인 것의 비율로 추정한다(슬라이드의 클래스 첨자는 \(j\)다).

$$\hat{\mathbb{P}}(Y = k \mid X = \bx_0) = \frac{1}{K}\sum_{i \in \mathcal{N}_0} I(y_i = k), \qquad k \in \mathcal{C} \tag{1.11}$$

KNN 분류기 \(C_{\text{KNN}}\)은 \(\bx_0\)를 추정한 조건부 확률이 가장 큰 클래스로 분류한다.

$$C_{\text{KNN}}(\bx_0) = \argmax_{k \in \mathcal{C}}\, \hat{\mathbb{P}}(Y = k \mid X = \bx_0) \tag{1.12}$$

확률이 가장 큰 클래스는 이웃 \(K\)개 가운데 가장 많은 클래스이므로, 식 (1.12)는 이웃들의 다수결(majority vote)과 같다.

그림 1.8은 feature 두 개로 이루어진 평면에서 이 과정을 보여 준다. 배경색이 바뀌는 곳이 결정 경계(decision boundary)다. 슬라이드의 그림은 다섯 클래스를 나눈 영역을 보여 주는데, 경계가 계단처럼 들쭉날쭉하고 다른 클래스의 영역 안에 점 하나를 둘러싼 작은 섬이 생기기도 한다. KNN이 경계의 모양을 미리 정하지 않고 데이터를 그대로 따르기 때문이다.

KNN은 1.3절의 조건부 기댓값과 같은 발상이다. 조건부 기댓값을 데이터로 추정하려면 \(\bx\) 근처 관측값의 평균을 쓸 수밖에 없었는데, KNN은 이 「근처의 평균」을 클래스의 비율로 바꾼 것이다(보충).

x0 이웃 5개의 클래스 비율 3/5 1 2/5 2 0/5 3 클래스 k
그림 1.8\(\bx_0\)에 가장 가까운 \(K = 5\)개 가운데 클래스 1이 셋, 클래스 2가 둘이므로 추정 조건부 확률은 3/5, 2/5, 0이고 KNN은 \(\bx_0\)를 클래스 1로 분류한다. 배경색은 평면의 각 점이 분류되는 클래스다. 예시 데이터.

KNN은 비모수 모형(1.4절)의 좋은 예다. 훈련 데이터를 모두 기억해 두었다가 질의마다 그 데이터에서 직접 답을 낼 뿐, 선형회귀처럼 모수 모형을 적합하지 않는다. 그래서 형태를 잘못 가정할 위험은 없지만 관측값이 많이 필요하다는 비모수 모형의 대가도 그대로 진다(보충). \(K\)를 어떻게 정하는지는 3.5절에서 다루고, KNN과 이미지 분류는 제9장에서 다시 만난다.

제2장 선형회귀

Linear Regression

제1장은 지도학습(supervised learning)을 네 단계로 세우고, 첫 단계에서 고를 수 있는 가장 단순한 함수로 \(f_L(\bx) = \beta_0 + \beta_1 x_1 + \dots + \beta_p x_p\)를 소개했다(1.4절의 식 (1.3)). 이 장은 이 함수 하나로 네 단계를 끝까지 밟으며 세 가지를 묻는다: 데이터에 어떻게 맞추는가(2.1–2.2절, 2.5절), 왜 하필 그렇게 맞추는가(2.3–2.4절), 그 결과를 얼마나 믿을 수 있는가(2.6–2.7절). 뒤 절반(2.8–2.10절)은 결과를 읽는 법과 feature를 늘려 쓰임새를 넓히는 법을 다루며, 1.3절의 \(\E[Y \mid X = \bx]\)(식 (1.2)), 1.5절에서 미룬 「왜 제곱인가」, 1.6절의 닫힌 형태의 해(closed-form solution), 1.9절의 분해 식 (1.8)이 이 장에서 답을 얻는다. 정의가 사용보다 먼저 오도록 강의 순서를 세 곳 바꾸었다 — 절편(intercept)을 벡터 안에 넣는 표기(L03 s34)는 2.4절로 앞당겼고, 해의 성질을 구하는 s33은 2.6절 다음의 2.7절로, 계수(coefficient)를 해석하는 s12–s13은 2.7절 다음의 2.8절로 보냈다.

이 장의 구성

  1. 2.1단순선형회귀와 최소제곱28
  2. 2.2적합의 정확도: 잔차표준오차와 결정계수30
  3. 2.3최대가능도 추정31
  4. 2.4최소제곱은 최대가능도 추정이다34
  5. 2.5행렬 표기와 정규방정식35
  6. 2.6추정량의 편향·분산·MSE37
  7. 2.7최소제곱 추정량의 성질39
  8. 2.8다중선형회귀 계수의 해석40
  9. 2.9범주형 feature42
  10. 2.10상호작용과 비선형 관계43

원천 Lecture 3 (2026-09-16) 슬라이드 4–40 · Lecture 4 (2026-09-21) 슬라이드 4–19 · 읽기 ISL 3.1–3.4
2.1–2.8절은 Lecture 3에서, 2.9–2.10절은 Lecture 4에서 왔다.

2.1 단순선형회귀와 최소제곱 Simple Linear Regression and Least Squares

L03 s04–s10 · ISL 3.1.1

선형회귀(linear regression)는 회귀(regression) 문제를 푸는 가장 단순한 지도학습 방법이다. 반응변수(response) \(y\)가 feature \(x_1, x_2, \dots, x_p\)에 선형으로 의존한다고 가정한다. 1.3절의 말로 하면 식 (1.2)의 회귀함수(regression function) \(f(\bx) = \E[Y \mid X = \bx]\)가 식 (1.3)의 선형 모형(linear model) \(f_L\)의 꼴이라고 놓는 것이다. 그런데 현실의 회귀함수는 결코 정확히 선형이 아니다. 그럼에도 선형회귀는 지나치게 단순해 보이는 것과 달리 개념으로도 실용으로도 매우 쓸모가 크다.

1.3절에서 본 Advertising 데이터는 시장마다 TV, Radio, Newspaper 세 매체의 광고 예산과 판매량 Sales를 기록한 것이다. 이 데이터를 앞에 두면 표 2.1의 질문들이 자연스럽게 떠오른다. 이 장은 이 질문들을 안내판으로 삼는다. 각 질문에 답하는 절을 표에 달아 두었다(ISL 3.4도 같은 질문들에 차례로 답하며 3장을 맺는다).

표 2.1Advertising 데이터로 던지는 질문(L03 s05)과 이 책에서 답하는 곳
질문답하는 곳
1. 광고 예산과 Sales 사이에 관계가 있는가?2.8(검정은 3.1)
2. 그 관계는 얼마나 강한가?2.2
3. 어느 매체가 Sales에 가장 크게 기여하는가?2.8
4. 앞으로의 Sales를 얼마나 정확히 예측할 수 있는가?2.2, 2.7
5. 관계는 선형인가?2.10
6. 매체 사이에 시너지 효과가 있는가?2.10

모형과 표기 Model and Notation

feature가 하나뿐인 선형회귀를 단순선형회귀(simple linear regression)라 한다. 그 모형(model)은 다음과 같다.

$$ y = \beta_0 + \beta_1 x + \epsilon \tag{2.1} $$

\(\beta_0\)와 \(\beta_1\)은 각각 절편과 기울기(slope)를 나타내는 두 미지의 상수로, 회귀계수 또는 파라미터(parameter)라고도 부른다. \(\epsilon\)은 오차항(error term)이다. 1.3절에서처럼 오차항은 평균(mean)이 0이고 \(x\)와 독립(independent)이라고 둔다. \(\beta_0, \beta_1\)은 모르므로 훈련 데이터(training data)의 관측값(observation) \(n\)개 \((x_1, y_1), \dots, (x_n, y_n)\)으로 추정(estimation)해야 한다. 데이터에서 계산한 추정값(estimate) \(\hat\beta_0, \hat\beta_1\)을 얻으면, 새 \(x\)에 대한 예측(prediction)은

$$ \hat y = \hat\beta_0 + \hat\beta_1 x $$

이다. \(\hat y\)는 \(x\)를 바탕으로 한 \(y\)의 예측값(predicted value)이다. 모자 기호(^)는 데이터로 추정하거나 예측한 값을 뜻한다. \(\beta_1\)은 모르는 상수이고 \(\hat\beta_1\)은 그것을 데이터로 어림한 값이다. 이 구분이 이 장 전체의 표기 약속이다.

최소제곱법 Least Squares

정의 · 잔차와 RSS

\(i\)번째 관측값에 대한 예측값을 \(\hat y_i = \hat\beta_0 + \hat\beta_1 x_i\)라 할 때, \(e_i = y_i - \hat y_i\)를 \(i\)번째 잔차(residual)라 한다. 잔차제곱합(residual sum of squares, RSS)은 잔차를 제곱해 모두 더한 것이다.

$$ \begin{aligned} \RSS &= e_1^2 + e_2^2 + \dots + e_n^2 \\ &= \sum_{i=1}^n (y_i - \hat\beta_0 - \hat\beta_1 x_i)^2 \end{aligned} \tag{2.2} $$

RSS를 가장 작게 만드는 \(\hat\beta_0, \hat\beta_1\)을 고르는 방법이 최소제곱법(least squares)이고, 그렇게 얻은 직선이 데이터에 대한 최소제곱 적합(fit)이다. 잔차와 오차항은 다르다. 오차항 \(\epsilon\)은 참 모형에서 \(y\)가 \(\beta_0 + \beta_1 x\)로부터 벗어난 양이라 관측할 수 없고, 잔차 \(e_i\)는 적합한 직선에서 관측값이 벗어난 양이라 데이터에서 계산된다.

결과 · 최소제곱 추정값 $$ \begin{aligned} \hat\beta_1 &= \frac{\sum_{i=1}^n (x_i - \bar x)(y_i - \bar y)}{\sum_{i=1}^n (x_i - \bar x)^2}, \\ \hat\beta_0 &= \bar y - \hat\beta_1 \bar x \end{aligned} \tag{2.3} $$

여기서 \(\bar x = \frac1n \sum_i x_i\)와 \(\bar y = \frac1n \sum_i y_i\)는 표본평균(sample mean)이다.

식 (2.3)은 모양으로도 읽힌다. \(\hat\beta_1\)의 분자는 \(x\)와 \(y\)가 함께 변하는 정도인 공분산(covariance)을, 분모는 \(x\)가 흩어진 정도인 표본분산(sample variance)을 계산한 것이다(둘을 똑같이 \(n-1\)로 나누면 정확히 그 값이 된다). 그러니 기울기는 공분산을 \(x\)의 표본분산으로 나눈 것이다. \(\hat\beta_0\)는 적합 직선이 표본평균점 \((\bar x, \bar y)\)를 지나게 만드는 값이다.

최소제곱 해의 유도 Deriving the Least Squares Estimates

RSS를 \(\hat\beta_0\)와 \(\hat\beta_1\)의 함수로 보고, 각각에 대한 편미분(partial derivative)을 0으로 놓는 1계 조건(first-order condition)을 푼다.

  1. \(\hat\beta_0\)에 대한 조건. $$ \frac{\partial \RSS}{\partial \hat\beta_0} = -2\sum_{i=1}^n (y_i - \hat\beta_0 - \hat\beta_1 x_i) = 0 $$ 합을 풀면 \(\sum_i y_i - n\hat\beta_0 - \hat\beta_1 \sum_i x_i = 0\)이고, 양변을 \(n\)으로 나누면 \(\hat\beta_0 = \bar y - \hat\beta_1 \bar x\)다.
  2. \(\hat\beta_1\)에 대한 조건. $$ \frac{\partial \RSS}{\partial \hat\beta_1} = -2\sum_{i=1}^n x_i (y_i - \hat\beta_0 - \hat\beta_1 x_i) = 0 $$
  3. 1의 \(\hat\beta_0\)를 대입한다. \(y_i - \hat\beta_0 - \hat\beta_1 x_i = (y_i - \bar y) - \hat\beta_1 (x_i - \bar x)\)이므로 $$ \sum_{i=1}^n x_i (y_i - \bar y) - \hat\beta_1 \sum_{i=1}^n x_i (x_i - \bar x) = 0 $$ 곧 \(\hat\beta_1 = \sum_i x_i (y_i - \bar y) \big/ \sum_i x_i (x_i - \bar x)\)이다.
  4. 분자와 분모를 식 (2.3)의 대칭인 꼴로 바꾼다. 평균에서 잰 편차(deviation)의 합은 늘 0이다: \(\sum_i (y_i - \bar y) = 0\), \(\sum_i (x_i - \bar x) = 0\). 그러므로 분자에서 \(\bar x \sum_i (y_i - \bar y) = 0\)을, 분모에서 \(\bar x \sum_i (x_i - \bar x) = 0\)을 빼도 값이 그대로이고, 그 결과가 식 (2.3)의 \(\hat\beta_1\)이다. 슬라이드가 「How?」라고 물은 곳이 이 단계다.

(보충) 1계 조건을 만족하는 점이 최소인 까닭은 이렇다. RSS는 \((\hat\beta_0, \hat\beta_1)\)에 대한 이차식이고, \(x_i\)가 모두 같지만 않으면(\(\sum_i (x_i - \bar x)^2 \gt 0\)) 위로 열린 그릇 모양이라 바닥이 한 점뿐이다. 2.5절에서 행렬로 다시 확인한다.

0 50 100 150 200 250 300 5 10 15 20 25 TV Sales 최소제곱 직선 잔차 (세로 거리)
그림 2.1최소제곱 직선은 각 점에서 직선까지의 세로 거리, 곧 잔차를 제곱해 더한 RSS가 가장 작은 직선이다. 예시 데이터(ISL 그림 3.1의 Sales–TV 산점도를 본뜸).
예 · Sales를 TV로 회귀하기

Advertising 데이터에서 Sales를 TV 하나로 회귀하면(ISL 그림 3.1) 최소제곱 적합은 \(\widehat{\text{Sales}} = \hat\beta_0 + \hat\beta_1 \cdot \text{TV}\)이고, ISL 3.1.1의 값으로 \(\hat\beta_0 \approx 7.03\), \(\hat\beta_1 \approx 0.0475\)다. TV 광고 예산이 한 단위 늘 때 판매량이 평균 약 0.0475단위 는다는 뜻이다. 이 경우 선형 적합은 관계의 본질을 잡아낸다. 다만 TV가 클수록 점이 직선 주위로 더 넓게 퍼진다(그림 2.1도 그렇게 만들었다). 오차항의 분산(variance)이 \(x\)에 따라 변하는 이분산(heteroscedasticity)의 모습이며, 2.4절에서 세우는 가정이 바로 이 점에서 어긋난다.

2.2 적합의 정확도: 잔차표준오차와 결정계수 Assessing Accuracy: RSE and R-squared

L03 s11 · ISL 3.1.3

최소제곱 직선은 어떤 데이터에서든 하나 나온다. 그 직선이 데이터에 얼마나 잘 맞는지는 따로 재야 한다. 잣대는 두 종류다. 하나는 잔차의 크기를 \(y\)의 단위로 재고, 다른 하나는 \(y\)의 흩어짐 가운데 설명한 비율을 잰다.

정의 · RSE, RMSE, 결정계수

잔차표준오차(residual standard error, RSE)와 평균제곱근오차(root-mean-squared error, RMSE)는 잔차의 전형적인 크기를 잰다.

$$ \RSE = \sqrt{\frac{\RSS}{n-2}}, \qquad \operatorname{RMSE} = \sqrt{\frac1n \sum_{i=1}^n (\hat y_i - y_i)^2} \tag{2.4} $$

결정계수(coefficient of determination) \(R^2\)은 총제곱합(total sum of squares, TSS) 가운데 모형이 설명한 몫의 비율이다.

$$ R^2 = \frac{\TSS - \RSS}{\TSS} = 1 - \frac{\RSS}{\TSS}, \qquad \TSS = \sum_{i=1}^n (y_i - \bar y)^2 \tag{2.5} $$

RSE는 오차항 \(\epsilon\)의 표준편차(standard deviation) \(\sigma\)를 추정한다. \(n\) 대신 \(n-2\)로 나누는 것은 이 추정량(estimator)을 불편(unbiased)으로 만들기 위해서다. 직선을 맞추느라 파라미터 두 개(\(\beta_0, \beta_1\))를 같은 데이터에서 추정했으므로 잔차에 남은 자유도(degrees of freedom)는 \(n-2\)다. 엄밀히 불편인 것은 제곱한 양 \(\RSS/(n-2)\)를 \(\sigma^2\)의 추정량으로 볼 때이고, 그 제곱근인 RSE는 \(\sigma\)에 대해 정확히 불편하지는 않다. 또 \(\RSS/(n-2)\)가 \(\sigma^2\)의 불편추정량인 것은 모형이 맞을 때, 곧 평균이 정말 선형이고 오차들이 서로 독립이며 분산이 같을 때다. feature가 \(p\)개이면 파라미터 \(p+1\)개를 추정하므로 분모는 \(n-p-1\)이 되어 \(\RSE = \sqrt{\RSS/(n-p-1)}\)이다(ISL 3.2.2). 불편의 정의와 이런 계산의 틀은 2.6–2.7절에서 세운다. 어차피 \(n\)이 크면 \(n \approx n-2\)다.

RMSE는 \(n\)으로 나눈다. 훈련 데이터에서 계산하면 RMSE의 제곱은 1.7절에서 정의한 훈련 데이터 위의 평균제곱오차(mean squared error, MSE) \(\MSE_{\mathsf{Tr}} = \Ave_{i \in \mathsf{Tr}} (y_i - \hat y_i)^2\)(식 (1.6))와 같다.

\(R^2\)은 \(y\)의 단위에 좌우되지 않는다. TSS는 \(x\)를 전혀 쓰지 않고 \(\bar y\) 하나로 예측할 때의 제곱 잔차 합이고, RSS는 회귀 뒤에도 남은 제곱 잔차 합이다. 그래서 \(\RSS/\TSS\)는 \(y\)의 전체 흩어짐 가운데 적합이 놓친 비율이고, \(R^2\)은 적합이 설명한 비율이다. 설명된 분산 비율(fraction of variance explained)이라는 다른 이름이 여기서 나온다. 목표는 RSS를 되도록 줄이는 것이며, \(\RSS = 0\)이면 \(R^2 = 1\)이다. 절편이 있는 최소제곱 적합에서는 \(R^2\)이 0과 1 사이에 놓인다. 기울기를 0으로 두면 \(\bar y\) 예측이 되므로, 최소제곱 해의 RSS는 TSS보다 클 수 없다.

단순선형회귀에서는 \(R^2\)이 \(x\)와 \(y\)의 상관(correlation)을 재는 상관계수 \(r\)의 제곱과 같다.

$$ R^2 = r^2, \qquad r = \frac{\sum_i (x_i - \bar x)(y_i - \bar y)}{\sqrt{\sum_i (x_i - \bar x)^2}\,\sqrt{\sum_i (y_i - \bar y)^2}} $$
보충 · \(R^2 = r^2\)인 까닭

2.1절의 1계 조건은 \(\sum_i e_i = 0\)과 \(\sum_i e_i x_i = 0\)을 뜻한다. 그러면 \(\sum_i e_i (\hat y_i - \bar y) = (\hat\beta_0 - \bar y)\sum_i e_i + \hat\beta_1 \sum_i e_i x_i = 0\)이므로, \(y_i - \bar y = e_i + (\hat y_i - \bar y)\)를 제곱해 더하면 \(\TSS = \RSS + \sum_i (\hat y_i - \bar y)^2\)이다. 또 식 (2.3)에서 \(\hat y_i - \bar y = \hat\beta_1 (x_i - \bar x)\)이다. 따라서

$$ R^2 = \frac{\sum_i (\hat y_i - \bar y)^2}{\TSS} = \frac{\hat\beta_1^2 \sum_i (x_i - \bar x)^2}{\sum_i (y_i - \bar y)^2} = r^2 $$

이고, 마지막 등호는 식 (2.3)의 \(\hat\beta_1\)을 대입하면 나온다. feature가 여럿일 때도 \(R^2\)은 \(y\)와 \(\hat y\) 사이 상관계수의 제곱과 같다.

표 2.1로 돌아가면, 둘째 질문(관계가 얼마나 강한가)에는 \(R^2\)으로, 넷째 질문(얼마나 정확히 예측하는가)에는 우선 RSE로 답한다.

2.3 최대가능도 추정 Maximum Likelihood Estimation

L03 s15–s24

왜 최소제곱인가 Why Least Squares?

지금까지는 선형 모형을 데이터에 맞추는 데 최소제곱법을 그냥 적용했을 뿐, 왜 그 방법인지는 설명하지 않았다. 일반적으로 원하는 것은 \(y \approx f(\bx)\)다. 둘의 차이, 곧 오차(error)를 재는 방법은 여럿이다.

$$ \bigl(y - f(\bx)\bigr)^2, \qquad \bigl|y - f(\bx)\bigr|, \qquad \bigl|y / f(\bx) - 1\bigr|, \qquad \dots $$

차례로 제곱오차(squared error), 절대오차(absolute error), 상대오차(relative error)다. 어느 것을 최소화해도 \(y \approx f(\bx)\)는 이루어지지만 오차가 남는 모양이 달라진다. 예를 들어 제곱오차는 큰 오차에 훨씬 무거운 벌을 주므로 이상치(outlier) 하나에 크게 끌려가고, 절대오차는 덜 끌려간다. 그렇다면 왜 제곱을 고집하는가? 1.5절에서 미룬 이 질문에 답하려면 먼저 최대가능도(maximum likelihood)라는 개념이 필요하다. 답은 2.4절에서 나온다.

i.i.d. 가정과 가능도 The i.i.d. Assumption and the Likelihood

확률변수(random variable)의 모음이 독립동일분포(independent and identically distributed, i.i.d.)라는 것은 모든 확률변수가 같은 확률분포(probability distribution)를 따르고 서로 모두 독립이라는 뜻이다. 두 조건을 나누어 보자. 독립은 표본(sample)의 항목들이 서로 아무 식으로도 연결되지 않았다는 뜻이다. 한 변수의 값을 알아도 다른 변수의 값에 대해 아무 정보도 얻지 못하고, 그 반대도 같다. 동일분포(identical distribution)는 분포가 흔들리지 않는다는 뜻이다. 표본의 모든 항목이 같은 확률분포에서 나온다. 주사위를 100번 던져 나온 눈은 전형적인 i.i.d. 표본이다. 실제로는 표본이 따르는 분포를 모르므로, 명백히 아니라는 증거가 없는 한 i.i.d.를 가정하는 것이 보통이다.

크기가 \(n\)인 표본 \(x_1, \dots, x_n\)이 모르는 분포 \(p_\theta(x)\)에서 i.i.d.로 뽑혔다고 하자(\(x_1, \dots, x_n \iid p_\theta\)). \(\theta\)는 분포의 성격을 정하는 파라미터다. 이 절의 \(x_i\)는 feature가 아니라 분포에서 뽑은 표본이다. 회귀에 적용하는 것은 2.4절에서 한다.

정의 · 가능도, 로그가능도, MLE

가능도(likelihood)는 관측한 데이터의 결합확률(joint probability) — 연속이면 확률밀도(probability density) — 을 통계 모형(statistical model)의 파라미터 \(\theta\)의 함수로 본 것이다. i.i.d.이면 결합확률이 각 표본의 확률의 곱으로 갈라진다.

$$ L(\theta; x_1, \dots, x_n) = p_\theta(x_1, \dots, x_n) = \prod_{i=1}^n p_\theta(x_i) \tag{2.6} $$

로그가능도(log-likelihood)는 가능도의 로그다.

$$ \ell(\theta) = \log \prod_{i=1}^n p_\theta(x_i) = \sum_{i=1}^n \log p_\theta(x_i) \tag{2.7} $$

최대가능도 추정량(maximum likelihood estimator, MLE)은 가정한 통계 모형 아래에서 관측한 데이터가 가장 그럴듯해지도록, 곧 가능도를 최대로 만드는 파라미터로 추정한다.

$$ \begin{aligned} \hat\theta_{\text{MLE}} &= \argmax_{\theta \in \Theta} L(\theta) = \argmax_{\theta \in \Theta} \ell(\theta) \\ &= \argmax_{\theta \in \Theta} \sum_{i=1}^n \log p_\theta(x_i) \end{aligned} \tag{2.8} $$

\(\Theta\)는 가능한 파라미터 전체의 집합인 파라미터 공간(parameter space)이다.

가능도는 식으로는 결합확률과 같지만 보는 방향이 반대다. 확률은 파라미터를 고정하고 데이터의 함수로 보고, 가능도는 데이터를 고정하고 파라미터의 함수로 본다. 직관적으로 가능도는 「이 파라미터라면 지금 본 일이 일어날 확률」이다. MLE는 가능한 모든 \(\theta\) 가운데 관측한 표본에 가장 큰 확률을 주는 \(\theta\)다.

로그를 취해도 최대점은 옮겨지지 않는다. 로그는 단조증가(monotonically increasing) 함수라서 어떤 양의 함수 \(g\)에 대해서도 \(\argmax_\theta g(\theta) = \argmax_\theta \log g(\theta)\)이기 때문이다(최솟값도 마찬가지다). 그런데도 로그가능도를 널리 쓰는 것은 수학적으로 편하기 때문이다. 곱이 합으로 바뀌어 미분이 쉬워지고, 작은 확률을 여러 번 곱할 때 생기는 수치 언더플로(underflow)도 피한다.

MLE를 계산하는 법 Computing the MLE

함수는 극대(local maximum)나 극소(local minimum)에서 1계 도함수(derivative)가 0이다. 그래서 로그가능도의 gradient가 0이 되는 점이 MLE의 후보다.

$$ \nabla\ell(\theta) = \mathbf{0} \iff \frac{\partial \ell(\theta)}{\partial\theta_j} = 0 \quad (j = 1, \dots, d_\theta) $$

\(d_\theta\)는 파라미터의 개수다. 이런 점을 정류점(stationary point)이라 한다. 정류점은 극대일 수도, 극소일 수도, 파라미터가 여럿이면 어떤 방향으로는 오르고 다른 방향으로는 내리는 안장점(saddle point)일 수도 있으므로(그림 2.2), 극대인지 확인하려면 2계 도함수를 본다. 파라미터가 여럿이면 2계 도함수는 로그가능도의 헤세 행렬(Hessian matrix)

$$ [\mathbf{H}(\theta)]_{ij} = \frac{\partial^2 \ell(\theta)}{\partial\theta_i\,\partial\theta_j} $$

이고, 이것이 음의 정부호(negative definite), 곧 \(\mathbf{0}\)이 아닌 모든 벡터 \(\mathbf{v}\)에 대해 \(\mathbf{v}^\top\mathbf{H}\mathbf{v} \lt 0\)이면 극대다(충분조건이다). 반대로 \(\mathbf{H}\)가 양의 정부호(positive definite)이면 극소이고, \(\mathbf{v}^\top\mathbf{H}\mathbf{v}\)의 부호가 \(\mathbf{v}\)에 따라 갈리면 안장점이다. 파라미터가 하나면 조건은 \(\ell''(\theta) \lt 0\)으로 줄어든다.

(보충) 극대는 그 주변에서만 가장 큰 점이다. 로그가능도가 파라미터 공간 전체에서 오목(concave)하면(예를 들어 헤세 행렬이 어디서나 음의 정부호이면) 정류점이 곧 전역 최적(global optimum)이다. 아래 두 예 가운데 첫째가 그런 경우다. 둘째 예의 로그가능도는 \(\sigma\)에 대해 어디서나 오목하지는 않지만, 정류점이 하나뿐이고 \(\sigma\)가 0이나 무한대로 가면 로그가능도가 \(-\infty\)로 가므로(표본값이 모두 같지는 않다고 할 때) 그 정류점이 전역 최대다. 1계 조건을 손으로 풀 수 없을 때는 수치적 방법(numerical method)으로 최대점을 찾아가는데, 그 대표인 경사하강법(gradient descent)은 제4장에서 다룬다.

θ ℓ(θ) 극대: 1계 조건 성립, 헤세 행렬 음의 정부호 극소: 1계 조건 성립, 헤세 행렬 양의 정부호
그림 2.21계 조건만으로는 극대와 극소를 가를 수 없다. 두 점 모두 접선이 수평이고, 헤세 행렬의 부호가 둘을 가른다(L03 s20을 다시 그림).

예: 베르누이 분포 Example: The Bernoulli Distribution

0 또는 1만 나오는 표본(동전 던지기)은 베르누이 분포(Bernoulli distribution)를 따른다. 확률질량함수(probability mass function, pmf)는 \(p_\theta(x) = \theta^{x}(1-\theta)^{1-x}\), \(x \in \{0, 1\}\)이고, \(\theta\)는 \(x = 1\)이 나올 확률이다. \(x = 1\)이면 \(\theta\), \(x = 0\)이면 \(1 - \theta\)가 되도록 한 줄로 쓴 것이다.

  1. 로그가능도. 로그를 취하면 지수가 계수로 내려온다. $$ \begin{aligned} \ell(\theta) &= \sum_{i=1}^n \log \theta^{x_i}(1-\theta)^{1-x_i} \\ &= \log\theta \sum_{i=1}^n x_i + \log(1-\theta) \sum_{i=1}^n (1 - x_i) \end{aligned} $$
  2. 1계 조건. $$ \frac{\partial \ell}{\partial\theta} = \frac1\theta \sum_{i=1}^n x_i - \frac{1}{1-\theta} \sum_{i=1}^n (1 - x_i) = 0 $$ 양변에 \(\theta(1-\theta)\)를 곱하면 \((1-\theta)\sum_i x_i = \theta\sum_i (1 - x_i) = n\theta - \theta\sum_i x_i\), 곧 \(\sum_i x_i = n\theta\)다.
  3. 2계 조건. $$ \frac{\partial^2 \ell}{\partial\theta^2} = -\frac{1}{\theta^2}\sum_{i=1}^n x_i - \frac{1}{(1-\theta)^2}\sum_{i=1}^n (1 - x_i) \le 0 $$ 0과 1을 더한 합은 음수가 아니고 제곱도 음수가 아니므로 전체는 늘 0 이하다. 그러므로 정류점은 최대점이다.
$$ \hat\theta_{\text{MLE}} = \frac1n \sum_{i=1}^n x_i \tag{2.9} $$

MLE는 표본에서 1이 나온 비율이다. 동전을 던져 앞면이 나온 비율로 앞면이 나올 확률을 어림하는 직관과 같다. 표본이 모두 0이거나 모두 1이면 정류점이 \(0 \lt \theta \lt 1\) 안에 없고 MLE는 경계값 0 또는 1이 되는데, 식 (2.9)는 이때도 맞는다.

예: 정규분포 Example: The Normal Distribution

연속형의 예로 정규분포(normal distribution)의 두 파라미터 \(\theta = (\mu, \sigma)\), 곧 평균과 표준편차를 함께 추정한다. 확률밀도함수(probability density function, pdf)는 다음과 같다.

$$ p_\theta(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp\!\left(-\frac{(x - \mu)^2}{2\sigma^2}\right) $$

로그가능도에서는 로그가 지수를 벗겨 내면서 제곱이 드러난다. 2.4절에서 최소제곱과 이어지는 고리가 이 제곱이다.

$$ \ell(\mu, \sigma) = -n\log\sigma - n\log\sqrt{2\pi} - \frac{1}{2\sigma^2}\sum_{i=1}^n (x_i - \mu)^2 $$

\(\mu\)에 대한 1계 조건 \(\partial\ell/\partial\mu = \sum_i (x_i - \mu)/\sigma^2 = 0\)에서 \(\sum_i x_i = n\mu\)를 얻는다. \(\sigma\)에 대한 1계 조건은 다음과 같다(첫 항은 \(-n\log\sigma\)를 미분한 것이다).

$$ \frac{\partial \ell}{\partial\sigma} = -\frac{n}{\sigma} + \frac{1}{\sigma^3}\sum_{i=1}^n (x_i - \mu)^2 = 0 $$

양변에 \(\sigma^3/n\)을 곱하면 \(\sigma^2 = \frac1n \sum_i (x_i - \mu)^2\)이다. 정리하면 다음과 같다.

$$ \hat\mu = \bar x = \frac1n \sum_{i=1}^n x_i, \qquad \hat\sigma^2 = \frac1n \sum_{i=1}^n (x_i - \hat\mu)^2 \tag{2.10} $$

평균의 MLE는 표본평균이고, 분산의 MLE는 편차 제곱의 평균이다. 분모가 \(n\)이라는 데 주목하자. 2.2절의 RSE는 불편하게 만들려고 \(n-2\)로 나누었는데, MLE는 그런 보정 없이 \(n\)으로 나눈다. 그래서 \(\hat\sigma^2\)은 평균적으로 \(\sigma^2\)을 조금 작게 잡는다. 정확히는 \(\E[\hat\sigma^2] = (n-1)\sigma^2/n\)이어서, 이 경우 불편하게 만드는 분모는 \(n-1\)이다(같은 데이터에서 추정한 파라미터가 \(\mu\) 하나다). 이 치우침에는 2.6절에서 이름을 붙인다.

보충 · 슬라이드의 연습 — 2계 조건

\(\ell\)을 두 번 미분하면 \(\partial^2\ell/\partial\mu^2 = -n/\sigma^2\), \(\partial^2\ell/\partial\mu\,\partial\sigma = -2\sum_i (x_i - \mu)/\sigma^3\), \(\partial^2\ell/\partial\sigma^2 = n/\sigma^2 - 3\sum_i (x_i - \mu)^2/\sigma^4\)이다. 식 (2.10)의 점에서는 둘째 값이 0이고 셋째 값은 \(n/\hat\sigma^2 - 3n/\hat\sigma^2 = -2n/\hat\sigma^2\)이므로

$$ \mathbf{H} = \begin{pmatrix} -n/\hat\sigma^2 & 0 \\ 0 & -2n/\hat\sigma^2 \end{pmatrix} $$

이다. 대각 성분이 모두 음수인 대각행렬이므로 음의 정부호다.

베르누이 분포와 정규분포의 MLE는 이 책에서 여러 번 돌아온다. 제4장에서 베르누이 분포의 \(\theta\)가 \(\bx\)에 따라 변하게 하면 로지스틱 회귀(logistic regression)의 가능도가 되고, 정규분포의 MLE는 선형판별분석(linear discriminant analysis, LDA)과 이차판별분석(quadratic discriminant analysis, QDA)의 재료가 된다. 로지스틱 회귀에서는 1계 조건을 손으로 풀 수 없어서, 정류점을 찾는 일을 수치적 방법에 맡긴다.

2.4 최소제곱은 최대가능도 추정이다 Least Squares as Maximum Likelihood

L03 s34 (앞당김), s26–s28 · ISL 3.2.1

절편을 벡터에 흡수하기 Absorbing the Intercept

feature가 \(p\)개인 선형 모형 \(y \approx \beta_0 + \beta_1 x_1 + \dots + \beta_p x_p\)는 벡터로 \(y \approx \beta_0 + \bbeta^\top\bx\)라고 쓸 수 있다(\(\bbeta, \bx \in \R^p\)). \(^\top\)은 전치(transpose)다. 절편만 따로 떨어져 있는 것이 번거로우므로 \(\bx\)의 맨 앞에 상수 1을, 계수 벡터의 맨 앞에 \(\beta_0\)를 붙인다.

$$ \beta_0 + \bbeta^\top\bx = \begin{bmatrix} \beta_0 \\ \bbeta \end{bmatrix}^{\!\top} \begin{bmatrix} 1 \\ \bx \end{bmatrix} = \bbeta'^\top\bx' $$

여기서 \(\bbeta' = (\beta_0, \beta_1, \dots, \beta_p)^\top\)와 \(\bx' = (1, x_1, \dots, x_p)^\top\)는 둘 다 \((p+1) \times 1\)이다. 이제 절편은 내적(inner product) 하나 안에 들어 있다. 이후로는 프라임을 생략하고 \(y \approx \bbeta^\top\bx\)라고만 쓴다. 이때 \(\bx\)의 첫 성분은 1이고, \(\bbeta\)는 절편 \(\beta_0\)를 포함해 성분이 \(p+1\)개인 벡터다. 이 약속은 이 장의 나머지 모든 \(\bbeta^\top\bx\)와 2.5절의 행렬에 적용된다. 슬라이드는 이 크기를 \(d\)로 적었지만 이 책은 feature 수 \(p\)와 절편을 포함한 \(p + 1\)로 쓴다.

확률 모형으로 다시 쓰기 A Probabilistic Model

선형회귀의 기본 가정은 \(y\)가 \(\bx\)에 선형으로 의존한다는 것, 곧 \(y \approx \bbeta^\top\bx\)다. 예를 들어 Advertising 데이터에서는 \(\text{Sales} = \beta_0 + \beta_1\cdot\text{TV} + \beta_2\cdot\text{Radio} + \beta_3\cdot\text{Newspaper} + \epsilon\)이다. 이제 한 걸음 더 나아가, 오차항이 평균 0, 분산 \(\sigma^2\)인 정규분포를 따른다고 가정한다.

$$ y = \bbeta^\top\bx + \epsilon, \qquad \epsilon \sim \mathcal{N}(0, \sigma^2) $$

그러면 \(\bx\)가 주어졌을 때 \(y\)의 조건부 분포(conditional distribution)는 다음과 같다.

$$ y \mid \bx \sim \mathcal{N}(\bbeta^\top\bx, \sigma^2) \tag{2.11} $$

이 식은 두 가지를 말한다. 첫째, 평균 \(\E[y \mid \bx] = \bbeta^\top\bx\)는 1.3절의 회귀함수, 곧 식 (1.2)의 \(f(\bx) = \E[Y \mid X = \bx]\)이고 그 꼴이 선형이다. 회귀 모형의 조건부 분포를 적을 때는 이처럼 \(\E[Y \mid X = \bx]\)를 \(\E[y \mid \bx]\)로 줄여 쓴다. feature가 둘이면 이 평균은 \((x_1, x_2, y)\) 공간의 평면, 곧 회귀평면(regression plane)을 이룬다(ISL 그림 3.4). 둘째, 분산 \(\sigma^2\)은 \(\bx\)와 상관없이 일정하다. 이것을 등분산(homoscedasticity)이라 한다(그림 2.3). 2.1절의 Sales–TV 데이터처럼 \(x\)가 커질수록 퍼짐이 커지는 데이터는 이 둘째 가정을 어긴다.

x y 직선: E[y | x] = βTx N(βTx, σ²) 세 곳의 조건부 분포는 중심만 다르고 폭(σ)은 같다
그림 2.3식 (2.11)의 뜻: 조건부 분포의 중심은 회귀직선을 따라 움직이지만 폭 \(\sigma\)는 어디서나 같다(등분산). 예시 데이터.

가능도를 최대화하면 RSS가 남는다 Maximizing the Likelihood Leaves the RSS

식 (2.11)의 MLE를 구하자. 2.3절의 틀에 맞추려면 세 가지를 바꿔 읽는다. 추정할 파라미터 \(\theta\)는 \(\bbeta\)다. 확률을 매기는 대상은 이제 \(x\)가 아니라 \(y\)이고, 그것도 \(\bx\)가 주어진 조건부 분포 \(p_{\bbeta}(y \mid \bx)\)다. 그리고 정규분포의 평균 \(\mu\) 자리에 회귀함수 \(\bbeta^\top\bx\)가 들어간다. 2.3절의 정규분포 예에서 상수였던 평균을 \(\bx\)에 따라 움직이게 한 것이 선형회귀의 확률 모형이다.

$$ p_{\bbeta}(y \mid \bx) = \frac{1}{\sigma\sqrt{2\pi}} \exp\!\left(-\frac{(y - \bbeta^\top\bx)^2}{2\sigma^2}\right) $$

관측값 \((\bx_i, y_i)\)들이 i.i.d.라고 하면 로그가능도는 다음과 같다.

$$ \begin{aligned} \ell(\bbeta) &= \sum_{i=1}^n \log p_{\bbeta}(y_i \mid \bx_i) \\ &= -n\log\bigl(\sigma\sqrt{2\pi}\bigr) - \frac{1}{2\sigma^2}\sum_{i=1}^n (y_i - \bbeta^\top\bx_i)^2 \end{aligned} $$

첫 항 \(-n\log(\sigma\sqrt{2\pi})\)는 \(\bbeta\)와 무관한 정규화 상수(normalizing constant)에서 왔고, 둘째 항의 \(1/(2\sigma^2)\)은 양의 상수 배율이다. 어느 쪽도 최대점의 위치를 바꾸지 않으므로 지운다. 여기서 \(\sigma\)는 \(\bbeta\)와 무관한 상수로 다룬다. 남은 것을 최대화하는 것은 부호를 바꾼 것을 최소화하는 것과 같다.

$$ \begin{aligned} \argmax_{\bbeta} \ell(\bbeta) &= \argmax_{\bbeta} \Bigl(-\sum_{i=1}^n (y_i - \bbeta^\top\bx_i)^2\Bigr) \\ &= \argmin_{\bbeta} \sum_{i=1}^n (y_i - \bbeta^\top\bx_i)^2 \end{aligned} \tag{2.12} $$
결과 · 최소제곱은 MLE다

평균이 선형이고(\(\E[y \mid \bx] = \bbeta^\top\bx\)) 오차가 관측값끼리 독립이며 분산이 일정한 정규분포를 따른다는 가정 아래에서, \(\bbeta\)의 MLE는 잔차의 제곱합을 최소화하는 최소제곱 해와 같다.

1.5절에서 미룬 「왜 제곱인가」의 답이 이것이다. 제곱은 임의의 선택이 아니라, 오차가 정규분포라는 가정이 가능도를 거쳐 낳은 손실이다. 거꾸로 말하면 가정을 바꾸면 최소화할 양도 바뀐다.

보충 · 다른 가정, 다른 손실

오차가 라플라스 분포(Laplace distribution) \(p(\epsilon) = \frac{1}{2b}\exp(-|\epsilon|/b)\)를 따른다고 가정하면, 같은 계산으로 로그가능도가 \(-n\log(2b) - \frac1b \sum_i |y_i - \bbeta^\top\bx_i|\)가 되어 MLE는 절대오차의 합을 최소화한다(그림 2.4). 이것이 최소절대편차(least absolute deviations, LAD) 회귀다. 또 \(\sigma^2\)까지 함께 추정하면 2.3절의 정규분포 예와 같은 계산으로 \(\hat\sigma^2 = \RSS/n\)이 나온다. 2.2절의 불편추정량 \(\RSS/(n-p-1)\)(단순선형회귀에서는 \(\RSS/(n-2)\))과 분모가 다르다.

−3 −2 −1 1 2 3 0 잔차 e 정규분포 가정 → 제곱오차 e²/2 라플라스 분포 가정 → 절대오차 |e|
그림 2.4(보충) 오차 분포의 음의 로그밀도가 곧 최소화할 손실이다. 정규분포(\(\sigma = 1\))는 제곱오차를, 라플라스 분포(\(b = 1\))는 절대오차를 낳으며, 큰 잔차에 매기는 벌은 제곱오차 쪽이 훨씬 크다(상수항은 뺐다).

2.5 행렬 표기와 정규방정식 Matrix Notation and the Normal Equation

L03 s30–s32

식 (2.12)의 합은 행렬 표기(matrix notation)로 쓰면 한 줄이 된다. \(n\)개 관측값의 회귀식 \(y_i = \bbeta^\top\bx_i + \epsilon_i\)를 세로로 쌓는다. 반응을 열벡터(column vector) \(\by\)로, 각 관측값의 \(\bx_i^\top\)를 행으로 쌓은 행렬을 \(\bX\)로 쓰면 다음과 같다.

$$ \underbrace{\begin{bmatrix} y_1 \\ \vdots \\ y_n \end{bmatrix}}_{\by} = \underbrace{\begin{bmatrix} 1 & x_{11} & \cdots & x_{1p} \\ \vdots & \vdots & & \vdots \\ 1 & x_{n1} & \cdots & x_{np} \end{bmatrix}}_{\bX} \underbrace{\begin{bmatrix} \beta_0 \\ \vdots \\ \beta_p \end{bmatrix}}_{\bbeta} + \underbrace{\begin{bmatrix} \epsilon_1 \\ \vdots \\ \epsilon_n \end{bmatrix}}_{\beps} \tag{2.13} $$

\(x_{ij}\)는 \(i\)번째 관측값의 \(j\)번째 feature 값이다. \(\bX\)를 설계행렬(design matrix)이라 하며, 크기는 \(n \times (p+1)\)이고 첫 열은 모두 1이다(2.4절에서 흡수한 절편). 슬라이드의 feature matrix도 같은 것이다. 한 줄로 쓰면 \(\by = \bX\bbeta + \beps\)다.

잔차 벡터 \(\by - \bX\bbeta\)의 \(i\)번째 성분이 \(y_i - \bbeta^\top\bx_i\)이므로, RSS는 이 벡터와 자기 자신의 내적이다.

$$ \RSS(\bbeta) = \sum_{i=1}^n (y_i - \bbeta^\top\bx_i)^2 = (\by - \bX\bbeta)^\top(\by - \bX\bbeta) \tag{2.14} $$

\(1 \times n\) 행벡터(row vector)와 \(n \times 1\) 열벡터의 곱 하나가 \(i = 1, \dots, n\)에 걸친 합을 대신한다(그림 2.5).

e n × 1 = y n × 1 − 1 1 1 1 1 X n × (p+1) β (p+1) × 1 RSS = eT 1 × n e n × 1 = RSS 1 × 1 n개 잔차의 제곱합이 곱 하나로 첫 열은 모두 1 (절편)
그림 2.5식 (2.14)의 모양: 잔차 벡터 \(\mathbf{e} = \by - \bX\bbeta\)를 전치해 자기 자신과 곱하면 \(1 \times 1\), 곧 RSS 하나가 된다. 그림은 \(n = 5\), \(p + 1 = 4\)(Advertising처럼 feature 3개와 절편)인 경우다(L03 s30을 다시 그림).

정규방정식 The Normal Equation

RSS를 \(\bbeta\)로 미분해 0으로 놓는다. 이 계산을 행렬 미분(matrix derivative)으로 한 번에 한다.

  1. 곱을 풀어 쓴다. $$ \RSS(\bbeta) = \by^\top\by - \bbeta^\top\bX^\top\by - \by^\top\bX\bbeta + \bbeta^\top\bX^\top\bX\bbeta $$
  2. 가운데 두 항은 스칼라이고 서로의 전치다(\(\mathbf{a}^\top\mathbf{b} = \mathbf{b}^\top\mathbf{a}\)). 그래서 \(\RSS(\bbeta) = \by^\top\by - 2\bbeta^\top\bX^\top\by + \bbeta^\top\bX^\top\bX\bbeta\)다.
  3. 벡터 미분 공식 \(\partial(\bbeta^\top\mathbf{a})/\partial\bbeta = \mathbf{a}\)와, 대칭행렬(symmetric matrix) \(\mathbf{A}\)에 대한 \(\partial(\bbeta^\top\mathbf{A}\bbeta)/\partial\bbeta = 2\mathbf{A}\bbeta\)를 쓴다(\(\bX^\top\bX\)는 대칭이다). $$ \frac{\partial \RSS(\bbeta)}{\partial\bbeta} = -2\bX^\top\by + 2\bX^\top\bX\bbeta = -2\bX^\top(\by - \bX\bbeta) $$
  4. 0으로 놓으면 \(\bX^\top\by - \bX^\top\bX\bbeta = \mathbf{0}\)이다.

슬라이드는 곱의 미분법으로 두 인자를 차례로 미분해 \(-\bX^\top(\by - \bX\bbeta) - (\by - \bX\bbeta)^\top\bX\)를 얻는다. 둘째 항은 첫째 항의 전치라서 gradient를 열벡터로 맞춰 적으면 같은 벡터가 되고, 합하면 위의 \(-2\bX^\top(\by - \bX\bbeta)\)다.

결과 · 정규방정식과 최소제곱 해 $$ \bX^\top\bX\bbeta = \bX^\top\by \tag{2.15} $$

이 연립방정식을 정규방정식(normal equation)이라 한다. \(\bX^\top\bX\)의 역행렬(inverse matrix)이 있으면 해는 하나이며, 선형회귀의 최소제곱 해이자 2.4절에 따라 MLE다.

$$ \bhbeta = (\bX^\top\bX)^{-1}\bX^\top\by \tag{2.16} $$

차원(dimension)을 확인하자. \(\bX^\top\bX\)는 \((p+1) \times n\) 행렬과 \(n \times (p+1)\) 행렬의 곱이라 \((p+1) \times (p+1)\)이다. 그 역행렬에 \((p+1) \times n\)인 \(\bX^\top\)와 \(n \times 1\)인 \(\by\)를 차례로 곱하면 \((p+1) \times 1\), 곧 \(\bbeta\)와 같은 모양이 된다. 1.6절에서 말한 닫힌 형태의 해가 이것이다.

2.1절의 식과 대조하기 Checking Against Section 2.1

feature가 하나(\(p = 1\))이면 \(\bX\)의 두 열은 \((1, \dots, 1)^\top\)과 \((x_1, \dots, x_n)^\top\)이다.

$$ \bX^\top\bX = \begin{bmatrix} n & \sum_i x_i \\ \sum_i x_i & \sum_i x_i^2 \end{bmatrix}, \qquad \bX^\top\by = \begin{bmatrix} \sum_i y_i \\ \sum_i x_i y_i \end{bmatrix} $$

정규방정식의 첫 줄 \(n\beta_0 + \beta_1 \sum_i x_i = \sum_i y_i\)는 2.1절의 \(\hat\beta_0 = \bar y - \hat\beta_1 \bar x\) 바로 그것이다. \(2 \times 2\) 역행렬을 곱해 둘째 성분을 정리하면

$$ \hat\beta_1 = \frac{\sum_i x_i y_i - n\bar x\bar y}{\sum_i x_i^2 - n\bar x^2} = \frac{\sum_i (x_i - \bar x)(y_i - \bar y)}{\sum_i (x_i - \bar x)^2} $$

으로 식 (2.3)과 같다. 단순선형회귀의 공식은 식 (2.16)의 특수한 경우다.

보충 · 해가 하나로 정해질 조건

식 (2.16)은 \(\bX^\top\bX\)가 가역(invertible)이어야 쓸 수 있다. 그 조건은 \(\bX\)의 열들이 선형독립(linear independence)인 것, 곧 \(\operatorname{rank}(\bX) = p+1\)인 것이다. 까닭은 한 줄이다. \(\bX^\top\bX\mathbf{v} = \mathbf{0}\)이면 \(\mathbf{v}^\top\bX^\top\bX\mathbf{v} = \lVert\bX\mathbf{v}\rVert^2 = 0\)이므로 \(\bX\mathbf{v} = \mathbf{0}\)이다. 따라서 \(\bX^\top\bX\)가 가역이 아닌 것은 \(\bX\mathbf{v} = \mathbf{0}\)인 \(\mathbf{v} \ne \mathbf{0}\)가 있을 때, 곧 열들 사이에 선형 관계가 있을 때와 정확히 같다. 열이 \(p+1\)개인데 선형독립이려면 행도 적어도 \(p+1\)개, 곧 \(n \ge p+1\)이어야 한다. 이 조건이 깨지는 경우(두 열이 같을 때, 2.9절에서 보듯 0/1 열들의 합이 절편 열과 같아질 때, \(n \lt p+1\)일 때)는 3.1절에서 다룬다. 또 이 조건 아래에서 RSS의 헤세 행렬 \(2\bX^\top\bX\)는 양의 정부호이므로(\(\mathbf{v} \ne \mathbf{0}\)이면 \(\lVert\bX\mathbf{v}\rVert^2 \gt 0\)), 식 (2.16)의 정류점은 유일한 최소점이다. 2.3절의 판정을 최소화 쪽으로 뒤집은 것이다.

예측 Prediction

적합한 \(\bhbeta\)로 처음 보는 데이터(unseen data)를 예측한다. 새 관측값 하나의 feature 벡터 \(\bx\)(첫 성분이 1인 \((p+1) \times 1\) 벡터)는 내적 하나로, 새 관측값 \(M\)개를 행으로 쌓은 \(M \times (p+1)\) 행렬 \(\bX_{\mathsf{Te}}\)는 행렬곱 하나로 예측한다.

$$ \hat y = \bhbeta^\top\bx, \qquad \hat\by_{\mathsf{Te}} = \bX_{\mathsf{Te}}\,\bhbeta $$

두 식의 \(\bhbeta\)는 모두 훈련 데이터의 \(\bX\), \(\by\)로 계산한 식 (2.16)이다. 첨자 \(\mathsf{Te}\)는 1.7절의 시험 데이터(test data)를 가리킨다. 훈련 데이터 자신에 대한 예측 \(\hat\by = \bX\bhbeta\)는 적합값(fitted value)이라 부른다. 슬라이드는 새 관측값의 행렬과 개수에도 \(\bX\)와 \(n\)을 다시 썼지만, 훈련 데이터와 섞이지 않도록 \(\bX_{\mathsf{Te}}\)와 \(M\)으로 적었다.

2.6 추정량의 편향·분산·MSE Bias, Variance, and MSE of an Estimator

L03 s36–s39

2.5절까지로 추정하는 법은 갖추었다. 이제 그 추정이 얼마나 좋은지 묻는다. 추정량 \(\hat\theta = \hat\theta(x_1, \dots, x_n)\)은 데이터의 함수다. 데이터가 확률적으로 뽑히므로 \(\hat\theta\)도 확률변수이고, 같은 방식으로 표본을 거듭 뽑을 때마다 다른 값을 낸다. 그 값들의 분포를 \(\hat\theta\)의 표본분포(sampling distribution)라 한다. 좋은 추정량이란 표본분포의 중심이 참값(true value)에 있고 퍼짐이 작은 것이다(그림 2.6).

주의 · 슬라이드의 「consistent」

슬라이드는 추정량 2를 「inconsistent estimator」라 하고, 좋은 추정량을 「consistent (low variance) and unbiased」라 했다. 여기서 consistent는 「분산이 작은」이라는 뜻으로 쓴 것이다. 통계학에서 일치성(consistency)은 표본 크기 \(n \to \infty\)일 때 추정량이 참값으로 확률수렴하는 성질이며, 분산이 작다는 것과 다른 개념이다. 이 책은 슬라이드의 뜻대로 「분산이 작은(큰)」으로 옮긴다.

참값 θ = 5 Δμ = 편향 추정량 1 편향이 있다 추정량 2 분산이 크다 추정량 3 불편, 분산이 작다
그림 2.6좋은 추정량(추정량 3)의 표본분포는 참값을 중심으로 좁게 모인다. 추정량 1은 중심이, 추정량 2는 폭이 어긋났다(L03 s36을 다시 그림).
정의 · 편향, 분산, MSE

추정량 \(\hat\theta\)와 참값 \(\theta\)(상수)에 대해 다음과 같이 정의한다. \(\E[\cdot]\)는 표본을 거듭 뽑는 데 대한 기댓값(expected value)이고, \(\lVert\cdot\rVert\)는 유클리드 노름(norm)이다.

$$ \begin{aligned} \Bias(\hat\theta) &= \E[\hat\theta] - \theta, \\ \Var(\hat\theta) &= \E\bigl[(\hat\theta - \E[\hat\theta])^2\bigr], \\ \MSE(\hat\theta) &= \E\bigl[\lVert\hat\theta - \theta\rVert^2\bigr] = \E\Bigl[\sum_{j=1}^{d_\theta} (\hat\theta_j - \theta_j)^2\Bigr]. \end{aligned} $$

편향(bias)은 추정량이 평균적으로 얼마나 빗나가는지, 분산은 추정값이 자기 평균 주위로 얼마나 흔들리는지, MSE는 참값과의 평균 제곱거리를 잰다. \(\Bias(\hat\theta) = 0\)이면 불편이라 하고, 아니면 편향 추정량(biased estimator)이라 한다. 파라미터가 벡터(\(d_\theta\)차원)이면 편향은 벡터이고, 분산은 \(\Var(\hat\theta) = \E\bigl[(\hat\theta - \E[\hat\theta])(\hat\theta - \E[\hat\theta])^\top\bigr]\)라는 공분산행렬(covariance matrix)이며, MSE는 성분별 제곱오차의 합이다.

2.3절의 \(\hat\sigma^2\)이 \(\sigma^2\)을 평균적으로 조금 작게 잡는다는 것은 이제 그것이 편향 추정량이라는 말로 바꿔 쓸 수 있다. 이 셋 사이에는 간단한 관계가 있다.

정리 · MSE는 분산과 편향 제곱의 합이다 $$ \MSE(\hat\theta) = \operatorname{tr}\Var(\hat\theta) + \lVert\Bias(\hat\theta)\rVert^2 \tag{2.17} $$

\(\operatorname{tr}\)은 대각합(trace)이다. 분산 행렬의 대각합은 성분별 분산의 합이다.

증명. 양변을 성분으로 풀면

$$ \E\Bigl[\sum_j (\hat\theta_j - \theta_j)^2\Bigr] = \sum_j \E\bigl[(\hat\theta_j - \E[\hat\theta_j])^2\bigr] + \sum_j \bigl(\E[\hat\theta_j] - \theta_j\bigr)^2 $$

을 보이면 된다. 기댓값의 선형성(linearity of expectation)으로 왼쪽의 기댓값이 합 안으로 들어가므로 성분마다 따로 보이면 충분하다. 그러므로 일반성을 잃지 않고(without loss of generality) \(d_\theta = 1\)로 둔다. \(\hat\theta\)와 참값 사이에 \(\E[\hat\theta]\)를 빼고 더한 뒤 제곱을 전개하면 세 항이 나온다.

$$ \begin{aligned} \E\bigl[(\hat\theta - \theta)^2\bigr] &= \E\bigl[(\hat\theta - \E[\hat\theta] + \E[\hat\theta] - \theta)^2\bigr] \\ &= \underbrace{\E\bigl[(\hat\theta - \E[\hat\theta])^2\bigr]}_{\Var(\hat\theta)} + \underbrace{2\E\bigl[(\hat\theta - \E[\hat\theta])(\E[\hat\theta] - \theta)\bigr]}_{(\ast)} \\ &\quad + \underbrace{\E\bigl[(\E[\hat\theta] - \theta)^2\bigr]}_{\Bias(\hat\theta)^2} \end{aligned} $$

셋째 항은 상수의 기댓값이라 편향의 제곱 그 자체다. 남은 교차항(cross term) \((\ast)\)은 0이다. \(\theta\)는 모르는 값이지만 확률변수가 아니라 상수이고, \(\E[\hat\theta]\)도 상수이기 때문이다. 전개하면

$$ \begin{aligned} (\ast) &= 2\E\bigl[\hat\theta\,\E[\hat\theta] - \hat\theta\,\theta - (\E[\hat\theta])^2 + \theta\,\E[\hat\theta]\bigr] \\ &= 2\bigl[(\E[\hat\theta])^2 - \theta\,\E[\hat\theta] - (\E[\hat\theta])^2 + \theta\,\E[\hat\theta]\bigr] = 0 \end{aligned} $$

이고, 증명이 끝난다.

참값을 상수로 보는 것은 빈도주의(frequentist) 관점이다. 무작위인 것은 데이터와 거기서 계산한 \(\hat\theta\)뿐이다.

(보충) 1.9절의 분해 식을 증명하기 Proving the Decomposition of Section 1.9

시험점 \(\bx_0\)에서 참값 \(\theta = f(\bx_0)\)을 추정하는 추정량을 \(\hat\theta = \hat f(\bx_0)\)으로 보자. 무작위성은 \(\hat f\)을 만든 훈련 데이터에서 온다. 새 반응 \(y_0 = f(\bx_0) + \epsilon\)의 잡음(noise) \(\epsilon\)은 훈련 데이터와 독립이고 \(\E[\epsilon] = 0\)이므로, 1.5절의 식 (1.5)와 같은 계산으로 다음을 얻는다.

$$ \begin{aligned} \E\bigl[(y_0 - \hat f(\bx_0))^2\bigr] &= \E\bigl[(f(\bx_0) - \hat f(\bx_0))^2\bigr] + \Var(\epsilon) \\ &= \Var\bigl(\hat f(\bx_0)\bigr) + \bigl[\Bias\bigl(\hat f(\bx_0)\bigr)\bigr]^2 + \Var(\epsilon) \end{aligned} $$

첫 줄에서는 교차항 \(2\E[\epsilon\,(f(\bx_0) - \hat f(\bx_0))]\)이 독립성 때문에 0이 되고, 둘째 줄은 식 (2.17)을 \(d_\theta = 1\)로 적용한 것이다. 이것이 1.9절에서 진술만 하고 증명을 미룬 식 (1.8)이다. 1.9절의 U자 곡선이 편향의 제곱, 분산, 줄일 수 없는 오차(irreducible error) \(\Var(\epsilon)\) 세 곡선으로 갈라지는 까닭이 여기 있다.

2.7 최소제곱 추정량의 성질 Properties of the Least Squares Estimator

L03 s33 (뒤로), s40 · ISL 3.1.2

이제 2.6절의 잣대를 최소제곱 추정량(least squares estimator) \(\bhbeta = (\bX^\top\bX)^{-1}\bX^\top\by\)에 댄다. \(\bX\)는 주어진 것으로 보고(\(\bX\)에 조건부로) 계산한다. 무작위인 것은 \(\by\), 더 정확히는 오차 \(\beps\)다. 2.4절의 가정을 행렬로 쓰면 \(\by \mid \bX \sim \mathcal{N}(\bX\bbeta, \sigma^2\bI)\), 곧 \(\E[\by \mid \bX] = \bX\bbeta\)이고 \(\Var(\by \mid \bX) = \sigma^2\bI\)다. \(\bI\)는 \(n \times n\) 단위행렬(identity matrix)이다. 확률벡터 \(\mathbf{Z}\)와 상수 행렬 \(\mathbf{A}\)에 대한 두 성질 \(\E[\mathbf{A}\mathbf{Z}] = \mathbf{A}\,\E[\mathbf{Z}]\)와 \(\Var(\mathbf{A}\mathbf{Z}) = \mathbf{A}\Var(\mathbf{Z})\mathbf{A}^\top\)만 있으면 된다.

결과 · 최소제곱 추정량의 평균과 분산

오차의 조건부 평균이 0이면(\(\E[\beps \mid \bX] = \mathbf{0}\), 곧 평균이 정말 선형이면) 최소제곱 추정량은 불편이다. 오차들이 서로 무상관(uncorrelated)이고 분산이 모두 \(\sigma^2\)이면(\(\Var(\beps \mid \bX) = \sigma^2\bI\)) 그 분산은 \(\sigma^2(\bX^\top\bX)^{-1}\)이다.

$$ \E[\bhbeta \mid \bX] = \bbeta \tag{2.18} $$ $$ \Var(\bhbeta \mid \bX) = \sigma^2(\bX^\top\bX)^{-1} \tag{2.19} $$

식 (2.18)의 성질을 불편성(unbiasedness)이라 한다. 유도는 다음과 같다.

  1. 기댓값. 상수 행렬 \((\bX^\top\bX)^{-1}\bX^\top\)를 밖으로 꺼내고 \(\E[\by \mid \bX] = \bX\bbeta\)를 넣는다. $$ \begin{aligned} \E[\bhbeta \mid \bX] &= (\bX^\top\bX)^{-1}\bX^\top\,\E[\by \mid \bX] \\ &= (\bX^\top\bX)^{-1}\bX^\top\bX\bbeta = \bbeta \end{aligned} $$
  2. 분산. 같은 행렬을 앞뒤로 꺼내고 \(\Var(\by \mid \bX) = \sigma^2\bI\)를 넣는다. $$ \begin{aligned} \Var(\bhbeta \mid \bX) &= (\bX^\top\bX)^{-1}\bX^\top\,\Var(\by \mid \bX)\,\bX(\bX^\top\bX)^{-1} \\ &= \sigma^2(\bX^\top\bX)^{-1}\bX^\top\bX(\bX^\top\bX)^{-1} \\ &= \sigma^2(\bX^\top\bX)^{-1} \end{aligned} $$ 첫 줄에서 \(\bigl((\bX^\top\bX)^{-1}\bX^\top\bigr)^\top = \bX(\bX^\top\bX)^{-1}\)을 썼다. \(\bX^\top\bX\)가 대칭이라 그 역행렬도 대칭이기 때문이다.
주의 · 두 가지 단서

첫째, 불편성은 모형이 맞을 때만 성립한다. 유도 1에서 \(\E[\by \mid \bX] = \bX\bbeta\)를 썼는데, 이것은 회귀함수가 정말 선형이라는 가정이다. 2.1절에서 말했듯 현실의 회귀함수는 결코 정확히 선형이 아니므로, 「불편」은 모형이 맞다는 가정 아래의 진술이다. 둘째, 슬라이드는 \(\Var(\by \mid \bX)\)를 스칼라 \(\sigma^2\)으로 적었지만 \(\by\)는 벡터이므로 \(\sigma^2\bI\)가 맞다. 관측값들의 오차가 서로 무상관이고 분산이 모두 \(\sigma^2\)이라는 뜻이며, 위의 유도는 이 형태로 한 것이다. 두 유도 어디에도 정규분포 가정은 쓰이지 않았다.

데이터가 늘면 분산이 준다. \(\bX^\top\bX = \sum_i \bx_i\bx_i^\top\)는 관측값마다 항이 하나씩 더해지므로 대략 \(n\)에 비례해 커지고, 그 역행렬은 대략 \(1/n\)로 줄어든다. (보충) 단순선형회귀에서는 이것이 눈에 보인다. 2.5절의 \(2 \times 2\) 행렬 \(\bX^\top\bX\)의 역행렬에서 오른쪽 아래 성분을 읽으면

$$ \Var(\hat\beta_1 \mid \bX) = \frac{\sigma^2}{\sum_{i=1}^n (x_i - \bar x)^2} $$

이다. 관측값이 많을수록, 그리고 \(x\)가 넓게 퍼져 있을수록 기울기 추정이 안정된다. 이 분산의 제곱근에서 \(\sigma\)를 RSE로 바꾼 것이 ISL이 계수표에 싣는 표준오차(standard error) \(\SE(\hat\beta_1)\)이다.

선형회귀의 MSE The MSE of Linear Regression

2.6절의 정리, 식 (2.17)에 대입하면 선형회귀 추정량의 MSE가 나온다. 편향이 0이므로 MSE는 모두 분산에서 온다.

$$ \begin{aligned} \MSE(\bhbeta \mid \bX) &= \operatorname{tr}\Var(\bhbeta \mid \bX) + \lVert\Bias(\bhbeta \mid \bX)\rVert^2 \\ &= \sigma^2 \operatorname{tr}\bigl[(\bX^\top\bX)^{-1}\bigr] + 0 \end{aligned} \tag{2.20} $$

슬라이드는 여기에 대각합을 붙이지 않고 행렬 \(\sigma^2(\bX^\top\bX)^{-1}\)을 적었지만, 식 (2.17)에서 MSE는 스칼라이므로 \(\operatorname{tr}\)이 붙어야 한다. 새 관측값이 feature 공간의 모든 방향으로 고르게 쌓여 \(\bX^\top\bX/n\)이 가역 행렬로 수렴하면, 데이터가 무한히 늘 때 이 분산, 곧 MSE도 0으로 간다.

가우스-마르코프 정리 The Gauss–Markov Theorem

최소제곱 추정량은 불편이다. 그렇다면 불편추정량 가운데 가장 좋은가? 이에 답하는 것이 가우스-마르코프 정리(Gauss–Markov theorem)다. 슬라이드는 「MLE가 최량 불편추정량(best unbiased estimator)이다. 곧 MLE보다 분산이 작은 다른 추정량은 없다」고 요약했는데, 정확히는 두 진술을 합친 것이다.

정리 · 최소제곱 추정량의 최적성
  1. 가우스-마르코프 정리. 오차가 평균 0이고 무상관이며 분산이 같기만 하면(\(\Var(\beps \mid \bX) = \sigma^2\bI\)), 정규분포일 필요는 없이, \(\by\)의 선형 함수 \(\mathbf{C}\by\)로 된 불편추정량 가운데 최소제곱 추정량의 분산이 가장 작다. 곧 그런 추정량 \(\tilde\bbeta\)와 모든 벡터 \(\mathbf{a}\)에 대해 \(\Var(\mathbf{a}^\top\bhbeta \mid \bX) \le \Var(\mathbf{a}^\top\tilde\bbeta \mid \bX)\)이다. 그래서 최소제곱 추정량을 최량 선형 불편추정량(best linear unbiased estimator, BLUE)이라 한다.
  2. 오차가 정규분포일 때. 2.4절의 가정대로 오차가 정규분포를 따르면, 최소제곱 추정량(= MLE)은 선형이 아닌 것까지 포함한 모든 불편추정량 가운데 분산이 가장 작다.

계수 하나 \(\hat\beta_j\)의 분산만 보려면 \(\mathbf{a}\)를 \(j\)번째 성분만 1인 벡터로 두면 된다. 정리가 말하는 것은 불편추정량들 사이의 순위뿐이다. 편향을 조금 허용하는 대신 분산을 크게 줄이는 추정량은 MSE(식 (2.17))로는 최소제곱 추정량보다 나을 수 있다. 특히 다음 절에서 보듯 식 (2.19)의 분산이 매우 커지는 경우가 있는데, 이때 계수를 작게 눌러 분산을 줄이는 규제(regularization)가 제5장의 주제다.

2.8 다중선형회귀 계수의 해석 Interpreting Coefficients in Multiple Linear Regression

L03 s12–s13 (뒤로) · ISL 3.2.1

feature가 여럿인 선형회귀를 다중선형회귀(multiple linear regression)라 한다. Advertising 데이터에서 세 매체를 모두 넣으면 모형은

$$ \text{Sales} = \beta_0 + \beta_1\cdot\text{TV} + \beta_2\cdot\text{Radio} + \beta_3\cdot\text{Newspaper} + \epsilon $$

이다. 이 절은 적합된 계수 \(\hat\beta_j\)를 어떻게 읽을지 묻는다. 표 2.1의 셋째 질문, 곧 어느 매체가 Sales에 가장 크게 기여하는가에 답하려면 이 읽는 법이 필요하다.

이상적인 경우는 feature끼리 서로 무상관인 균형 설계(balanced design)다. 이때는 각 계수를 따로 추정하고 따로 검정(test)할 수 있으며, 「다른 feature를 모두 고정한 채 \(X_j\)가 한 단위 변하면 \(y\)는 평균 \(\beta_j\)만큼 변한다」는 해석이 성립한다. 여기서 \(X_j\)는 \(j\)번째 feature를 가리킨다.

feature끼리 상관이 있으면 문제가 생긴다. 모든 계수의 분산이 커지는 경향이 있고, 때로는 극적으로 커진다. 해석도 위험해진다. \(X_j\)가 변할 때 다른 모든 것이 함께 변하므로, 「다른 feature를 고정하면」이라는 상황이 데이터 안에서 일어나지 않는다.

분산이 커지는 까닭은 2.7절의 식 (2.19) \(\Var(\bhbeta \mid \bX) = \sigma^2(\bX^\top\bX)^{-1}\)에 있다. \(\bX\)의 열들이 선형 관계에 가까우면 \(\bX^\top\bX\)는 역행렬이 없는 특이행렬(singular matrix)에 가까워지고, 그 역행렬의 성분은 매우 커진다. 두 변수 사이의 이런 관계를 공선성(collinearity), 여러 변수에 걸친 것을 다중공선성(multicollinearity)이라 한다.

보충 · 분산이 얼마나 커지는가

feature가 둘이고 각 열을 평균 0, 제곱합 \(n\)이 되도록 표준화했다고 하자. 두 feature의 상관계수를 \(r_{12}\)라 하면 절편 열은 두 열과 직교하고, 두 기울기에 해당하는 \(\bX^\top\bX\)의 부분은 \(n\begin{bmatrix} 1 & r_{12} \\ r_{12} & 1 \end{bmatrix}\)이다. 역행렬을 구하면

$$ \Var(\hat\beta_1 \mid \bX) = \Var(\hat\beta_2 \mid \bX) = \frac{\sigma^2}{n} \cdot \frac{1}{1 - r_{12}^2} $$

이다. 무상관(\(r_{12} = 0\))일 때에 비해 분산이 \(1/(1 - r_{12}^2)\)배로 커지고, \(r_{12} \to \pm 1\)이면 끝없이 커진다. \(r_{12} = 0.9\)만 되어도 약 5.3배, \(r_{12} = 0.99\)이면 약 50배다.

표 2.2Advertising 데이터의 다중선형회귀 계수(ISL 표 3.4의 계수 열)
계수추정값
Intercept\(\hat\beta_0\)2.939
TV\(\hat\beta_1\)0.046
radio\(\hat\beta_2\)0.189
newspaper\(\hat\beta_3\)−0.001
표 2.3Advertising 데이터의 상관행렬(ISL 표 3.5, 위 삼각만)
TVradionewspapersales
TV1.00000.05480.05670.7822
radio1.00000.35410.5762
newspaper1.00000.2283
sales1.0000
예 · Advertising의 계수와 상관

표 2.2와 표 2.3에서 두 가지를 읽는다. 첫째, 계수가 크다고 상관이 큰 것은 아니다. Radio의 계수(0.189)가 TV의 계수(0.046)보다 네 배쯤 크지만, Sales와의 상관은 TV(0.7822)가 Radio(0.5762)보다 크다. 세 예산은 모두 천 달러 단위이므로 단위가 달라서 생긴 일은 아니다. 계수는 feature가 한 단위 변할 때의 변화여서, 값이 넓게 흩어진 feature는 계수가 작아도 실제로 오가는 범위 안에서 Sales를 크게 움직인다(ISL 그림 2.1의 가로축으로 TV는 0–300, Radio는 0–50). 또 계수는 다른 feature를 고려한 뒤의 몫이고, 상관은 그 feature 하나만 본 값이다. 계수끼리 견주려면 feature의 척도(scale)를 맞춰야 한다(표준화).

둘째, Newspaper 하나만으로 Sales를 회귀하면 기울기가 양수로 나오지만(ISL 그림 2.1의 오른쪽), 세 매체를 함께 넣으면 Newspaper의 계수는 거의 0(−0.001)이다. 상관행렬(correlation matrix)을 보면 Radio와 Newspaper 사이에 양의 상관(0.3541)이 있다. Radio 광고를 많이 한 시장은 신문 광고도 많이 하는 경향이 있다는 뜻이다. Newspaper는 Sales와 직접 관계가 있어서가 아니라 Radio의 대리 변수(surrogate)로서 관계있어 보였던 것이다.

그래서 표 2.1의 셋째 질문에는 이렇게 답한다. 다른 두 매체를 고려하고 나면 Sales에 기여하는 것은 TV와 Radio이고, Newspaper의 몫은 거의 없다. 첫째 질문(관계가 있는가)에도 여기서 답할 수 있다. 세 매체를 함께 넣어도 TV와 Radio의 계수는 저마다 표준오차의 20배가 넘으므로(ISL 표 3.4) 광고 예산과 Sales 사이에는 관계가 있다. 이 물음을 한꺼번에 따지는 F-검정(F-test)은 이 강의가 다루지 않는다(3.1절).

주의 · 상관은 인과가 아니다

관찰 데이터(observational data)로는 인과관계(causality)를 주장하지 않는다. 상관이 있다고 원인이 되는 것은 아니다. 계수 \(\hat\beta_j\)는 데이터 안에서 \(X_j\)와 \(y\)가 함께 움직이는 방식을 요약할 뿐, \(X_j\)를 직접 바꾸었을 때 \(y\)가 어떻게 변할지는 말해 주지 않는다.

2.9 범주형 feature Categorical Features

L04 s04, s06–s10 · ISL 3.3.1

2.8절까지는 모형 \(\by = \bX\bbeta + \beps\)를 고정해 두고 \(\bbeta\)를 추정하고 해석했다. 이제부터는 \(\bX\)의 열을 바꾼다. 기본 선형회귀를 넓히는 길은 세 가지다: 범주형(categorical) 변수, 변수 사이의 상호작용(interaction), 그리고 feature selection. 앞의 둘은 이 절과 2.10절에서, feature selection은 제3장에서 다룬다. 어느 길이든 추정 절차(2.5절)는 그대로이고, 바뀌는 것은 \(\bX\)에 무엇을 열로 넣느냐뿐이다.

feature 가운데에는 수치가 아닌 것이 있다. 양적(quantitative) feature와 달리 질적(qualitative) feature는 몇 개의 값 가운데 하나를 가진다. 범주형 feature, 또는 요인(factor) 변수라고도 한다. Credit 데이터는 신용카드 사용자들의 기록이다. 양적 변수 7개(balance, age, cards, education, income, limit, rating)에 더해 질적 변수 4개가 있다: own(주택 소유 여부), student(학생 여부), status(결혼 여부), region(East, West, South). 양적 변수들의 산점도행렬(scatterplot matrix)(ISL 그림 3.6)을 보면 limit과 rating은 거의 한 직선 위에 놓인다. 3.1절에서 다루는 「거의 중복된 feature」의 실례다. 질적 변수는 수치가 아니어서 그대로 \(\bX\)의 열로 넣을 수 없으므로, 0과 1로 된 수치 열로 바꾼다.

두 값을 가지는 변수 Variables with Two Levels

주택 소유 여부 own에 따라 카드 잔액 balance(\(y\))가 어떻게 다른지 보자. 다른 변수는 무시한다. own을 이진 변수(binary variable) 하나로 나타낸다.

$$ x_i = \begin{cases} 1 & \text{if person } i \text{ owns a house} \\ 0 & \text{otherwise} \end{cases} $$

모형에 넣고 두 경우로 풀어 쓰면 해석이 바로 보인다.

$$ y_i = \beta_0 + \beta_1 x_i + \epsilon_i = \begin{cases} \beta_0 + \beta_1 + \epsilon_i & \text{owner} \\ \beta_0 + \epsilon_i & \text{non-owner} \end{cases} \tag{2.21} $$

\(\beta_0\)는 주택이 없는 사람의 평균 잔액이고, \(\beta_1\)은 주택 소유자와 비소유자의 평균 잔액 차이다. 이렇게 범주를 0과 1로 나타낸 변수를 가변수(dummy variable)라 한다. 표 2.4의 위쪽이 적합 결과다. 비소유자의 평균 카드 빚은 509.80달러로 추정되고, 소유자는 19.73달러를 더 져서 509.80 + 19.73 = 529.53달러로 추정된다.

세 값 이상을 가지는 변수 Variables with More Than Two Levels

범주형 feature가 가질 수 있는 값 하나하나를 수준(level)이라 한다. 수준이 셋 이상이면 가변수를 더 만든다. region(East, West, South)에는 두 개를 둔다.

$$ x_{i1} = \begin{cases} 1 & \text{South} \\ 0 & \text{otherwise} \end{cases}, \qquad x_{i2} = \begin{cases} 1 & \text{West} \\ 0 & \text{otherwise} \end{cases} $$ $$ y_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \epsilon_i = \begin{cases} \beta_0 + \beta_1 + \epsilon_i & \text{South} \\ \beta_0 + \beta_2 + \epsilon_i & \text{West} \\ \beta_0 + \epsilon_i & \text{East} \end{cases} \tag{2.22} $$
정의 · 기준 수준과 가변수 코딩

가변수는 수준 수보다 하나 적게 만든다. 가변수가 없는 수준(이 예에서는 East)을 기준 수준(baseline)이라 한다. 절편 \(\beta_0\)는 기준 수준의 평균이고, 각 가변수의 계수는 그 수준과 기준 수준의 평균 차이다. 이렇게 코딩하는 방식을 가변수 코딩(dummy coding)이라 한다.

표 2.4Credit 데이터에서 balance를 가변수로 회귀한 계수(ISL 표 3.7·3.8의 계수 열)
모형계수
own (2.21)Intercept509.80
own[Yes]19.73
region (2.22)Intercept531.00
region[South]−18.69
region[West]−12.50
예 · region 모형 읽기

표 2.4의 아래쪽에서 기준 수준인 East의 평균 잔액은 531.00달러로 추정된다. South 사람들은 East보다 빚이 18.69달러, West 사람들은 12.50달러 적을 것으로 추정되므로, 적합값은 South가 531.00 − 18.69 = 512.31달러, West가 531.00 − 12.50 = 518.50달러다. 기준 수준을 다른 지역으로 바꾸면 계수 값은 달라지지만 각 지역의 적합값은 그대로다. 모형이 표현하는 세 지역의 평균은 같고, 그것을 어느 수준에 대한 차이로 적느냐만 바뀌기 때문이다.

가변수를 왜 하나 적게 만드는가? 수준 수만큼 만들면 모든 관측값에서 가변수들의 합이 1이 되어 절편 열(모두 1)과 정확히 같아진다. 그러면 \(\bX\)의 열들이 선형종속(linear dependence)이 되어 \(\bX^\top\bX\)가 가역이 아니고(2.5절의 조건), 식 (2.16)의 해가 하나로 정해지지 않는다. 3.1절은 이것을 최소제곱 해가 하나로 정해지지 않는 경우의 하나로 다시 다룬다.

one-hot encoding과 가변수 코딩 One-Hot Encoding versus Dummy Coding

범주형 변수를 나타내는 데 널리 쓰는 다른 방식이 one-hot encoding이다. 변수가 가질 수 있는 값마다 이진 변수를 하나씩 두고, 그중 정확히 하나만 1, 나머지는 모두 0으로 둔다. 예를 들어 color \(\in\) {red, blue, green}이면 red에 \(x_1\), blue에 \(x_2\), green에 \(x_3\)을 배정하고, color = red는 \((x_1, x_2, x_3) = (1, 0, 0)\)이 된다. 표 2.5는 팀 이름을 one-hot encoding한 예다.

표 2.5one-hot encoding의 예(L04 s10). 왼쪽 두 열이 원래 데이터, 오른쪽 네 열이 변환한 데이터다
TeamPointsTeam_ATeam_BTeam_CPoints
A2510025
A1210012
B1501015
B1401014
B1901019
B2301023
C2500125
C2900129
주의 · one-hot encoding과 가변수 코딩의 차이

one-hot encoding은 수준 수만큼 열을 만들고, 가변수 코딩은 하나 적게 만든다. 절편이 있는 선형회귀에 one-hot 열을 그대로 넣으면 세 열의 합이 절편 열과 같아져 위에서 본 문제가 생긴다. 그래서 선형회귀에서는 한 열을 빼거나(그러면 가변수 코딩이 된다) 절편을 뺀다. 두 방식이 담는 정보는 같고, 차이는 절편과 함께 쓰느냐에 있다.

그럼에도 one-hot encoding이라는 이름을 여기서 익혀 둘 까닭이 있다. 분류(classification) 문제에서는 정답을 one-hot 벡터로 나타내 softmax가 내놓는 확률과 맞대고(제4장·제9장), 단어처럼 수준이 아주 많은 범주는 one-hot으로 적은 다음 embedding으로 바꾼다(제12장).

2.10 상호작용과 비선형 관계 Interactions and Nonlinear Relationships

L04 s12–s19 · ISL 3.3.2

지금까지의 Advertising 분석은 한 매체의 광고비를 늘렸을 때 Sales에 미치는 효과가 다른 매체에 쓴 금액과 무관하다고 가정했다. 예를 들어 선형 모형 \(\text{Sales} = \beta_0 + \beta_1\cdot\text{TV} + \beta_2\cdot\text{Radio} + \beta_3\cdot\text{Newspaper}\)는 TV가 한 단위 늘 때 Sales의 평균 효과가 Radio에 얼마를 썼든 늘 \(\beta_1\)이라고 말한다. 이것이 가법 가정(additive assumption)이다. 이 절은 이 가정을 두 방향으로 푼다: 상호작용과 비선형성(nonlinearity)이다.

시너지와 상호작용 효과 Synergy and Interaction Effects

Radio 광고에 돈을 쓰면 실제로 TV 광고의 효과가 커진다고 해 보자. 그러면 TV의 기울기는 Radio가 늘수록 커져야 한다. 이런 상황에서는 100,000달러의 고정 예산을 TV나 Radio 한쪽에 몰아 쓰는 것보다 반씩 나누어 쓰는 편이 Sales를 더 늘릴 수 있다. 마케팅에서는 이것을 시너지 효과(synergy effect)라 하고, 통계학에서는 상호작용 효과(interaction effect)라 한다.

실제 데이터에 그 흔적이 있다. Sales를 TV와 Radio로 회귀한 평면(ISL 그림 3.5)을 보면 잔차의 부호가 체계적으로 갈린다. 두 매체 가운데 한쪽 예산만 낮은 곳에서는 실제 Sales가 평면보다 낮고(모형이 과대예측한다), 예산이 두 매체에 나뉜 대각선 방향에서는 실제 Sales가 평면보다 높다(모형이 과소예측한다). 모형이 시너지 효과를 무시하기 때문이다. 잔차가 무작위가 아니라는 것은 가법 모형이 놓친 구조가 있다는 증거다.

정의 · 상호작용 모형

두 feature의 곱을 새 feature로 더한다.

$$ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_1 x_2 + \epsilon \tag{2.23} $$

\(\beta_3 x_1 x_2\)를 상호작용 항(interaction term)이라 한다. 항을 묶어 다시 쓰면 \(y = \beta_0 + (\beta_1 + \beta_3 x_2)\,x_1 + \beta_2 x_2 + \epsilon\)이므로, \(x_1\)의 기울기가 상수 \(\beta_1\)이 아니라 \(\beta_1 + \beta_3 x_2\)여서 \(x_2\)에 따라 변한다.

표 2.6Advertising 데이터의 상호작용 모형 계수(ISL 표 3.9의 계수 열)
계수추정값
Intercept\(\hat\beta_0\)6.7502
TV\(\hat\beta_1\)0.0191
radio\(\hat\beta_2\)0.0289
TV×radio\(\hat\beta_3\)0.0011

Advertising에서는 \(\text{Sales} = \beta_0 + \beta_1\cdot\text{TV} + \beta_2\cdot\text{Radio} + \beta_3\cdot(\text{TV}\cdot\text{Radio}) + \epsilon\)이다. 「Radio가 늘면 TV의 기울기가 커진다」를 그대로 식으로 옮긴 것이다. 그러면서도 \(x_1 x_2\)를 하나의 새 열 \(x_3\)으로 보면 모형은 여전히 계수에 대해 선형이므로, 2.5절의 정규방정식을 그대로 쓴다.

예 · 상호작용 모형 읽기

상호작용 모형의 \(R^2\)은 96.8%로, 상호작용 항 없이 TV와 Radio로 예측한 모형의 89.7%보다 높다. 가법 모형을 적합한 뒤 남은 Sales의 변동(variability) 가운데 \((96.8 - 89.7)/(100 - 89.7) \approx 69\%\)를 상호작용 항이 설명했다는 뜻이다.

계수(표 2.6)는 TV 광고를 1,000달러 늘리면 Sales가 \((\hat\beta_1 + \hat\beta_3 \times \text{Radio}) \times 1000 = 19.1 + 1.1 \times \text{Radio}\)단위 늘고, Radio 광고를 1,000달러 늘리면 \((\hat\beta_2 + \hat\beta_3 \times \text{TV}) \times 1000 = 28.9 + 1.1 \times \text{TV}\)단위 는다고 말한다. 한 매체의 한계효과(marginal effect)가 다른 매체의 예산에 따라 변한다(그림 2.7). \(\hat\beta_3 = 0.0011\)은 작아 보이지만 곱해지는 값이 크다. 예컨대 TV가 200이면 Radio의 기울기는 \(0.0289 + 0.0011 \times 200 = 0.2489\)로 \(\hat\beta_2\)의 여덟 배가 넘는다.

0 100 200 300 0 10 20 30 TV Sales (예측) Radio = 0 기울기 0.0191 Radio = 25 기울기 0.0466 Radio = 50 기울기 0.0741
그림 2.7표 2.6의 계수로 그린 상호작용 모형의 예측: Radio가 클수록 TV의 기울기가 커져서, 가법 모형이라면 평행했을 직선들이 부채꼴로 벌어진다.

이로써 표 2.1의 남은 두 질문에 답할 수 있다. 다섯째 질문(관계는 선형인가)에는 가법 선형 모형으로는 모자란다고 답한다. 그 잔차에 체계적인 무늬가 남기 때문이다(ISL 그림 3.5). 여섯째 질문(매체 사이에 시너지가 있는가)에는 TV와 Radio 사이에 시너지가 있다고 답한다. 상호작용 항 하나를 넣자 \(R^2\)이 89.7%에서 96.8%로 올랐다.

계층 원칙 The Hierarchy Principle

상호작용 항의 p-값(p-value)은 아주 작은데 관련된 주효과(main effect), 이 예에서는 TV와 Radio 자체의 p-값은 그렇지 않은 경우가 있다. 그래도 주효과를 빼서는 안 된다는 것이 계층 원칙(hierarchy principle)이다. 모형에 상호작용을 넣으면 그 주효과도 넣는다. 예를 들어 TV×Radio를 넣으면 TV와 Radio도 모두 넣는다. 주효과가 없는 모형에서는 상호작용 항을 해석하기 어렵고 그 뜻이 달라진다. 주효과 항이 없으면 상호작용 항이 주효과까지 떠안기 때문이다.

보충 · 「떠안는다」의 뜻

\(x_1\)의 원점을 옮겨 \(x_1 = x_1' + c\)로 쓰면 \(x_1 x_2 = x_1' x_2 + c\,x_2\)가 된다. 원점을 옮기는 중심화(centering)만으로 상호작용 항 안에서 \(x_2\)의 주효과가 튀어나온다. 주효과 항 \(\beta_2 x_2\)가 모형에 있으면 \(c\,x_2\)는 거기에 흡수되어 적합이 달라지지 않지만, 없으면 상호작용 계수의 뜻이 변수의 원점에 따라 달라진다.

비선형 관계와 다항회귀 Nonlinear Relationships and Polynomial Regression

곱할 수 있는 것은 서로 다른 두 변수만이 아니다. 같은 변수를 여러 번 곱할 수도 있다. Auto 데이터는 여러 자동차의 연비 mpg와 마력 horsepower를 담고 있다. mpg를 horsepower로 회귀할 때, horsepower 하나만 쓰는 단순선형회귀는 감소하다가 완만해지는 곡선 추세를 놓친다. horsepower²을 더한 모형은 그 추세를 잘 따라가고, horsepower의 5차까지 모든 거듭제곱을 넣은 모형은 쓸데없이 구불거린다(ISL 그림 3.8, 그림 2.8).

$$ \text{mpg} = \beta_0 + \beta_1 \times \text{horsepower} + \beta_2 \times \text{horsepower}^2 + \epsilon \tag{2.24} $$

mpg를 horsepower의 비선형 함수로 예측하지만, 이것은 선형 모형인가? 그렇다. \(X_1 = \text{horsepower}\), \(X_2 = \text{horsepower}^2\)인 다중선형회귀일 뿐이다. 선형회귀의 「선형」은 feature에 대한 선형이 아니라 계수에 대한 선형이다. feature의 변환(transformation)을 새 열로 더하면 \(\bX\)만 바뀌고 추정 절차는 그대로다. 이렇게 한 변수의 거듭제곱을 feature로 쓰는 것을 다항회귀(polynomial regression)라 하고, 가장 높은 거듭제곱을 차수(degree)라 한다. 식 (2.24)를 적합한 계수(ISL 표 3.10)는 \(\hat\beta_0 = 56.9001\), \(\hat\beta_1 = -0.4662\), \(\hat\beta_2 = 0.0012\)이고, 2차 계수가 양수라 적합 곡선은 위로 열린 포물선이다.

50 100 150 200 10 20 30 40 50 horsepower mpg 1차 (선형) 2차 5차
그림 2.82차 다항식은 휘는 추세를 따라가지만, 5차는 데이터가 드문 양 끝에서 휘어 나간다. 예시 데이터(ISL 그림 3.8의 Auto 산점도를 본뜸).

5차 곡선의 양 끝 요동은 차수를 높인다고 늘 좋은 것이 아님을 보여 준다. 훈련 데이터에는 더 잘 맞지만, 관측값이 드문 곳에서 데이터의 우연한 굴곡까지 따라가는 것은 1.7절의 과적합(overfitting)의 조짐이다. 차수 같은 선택을 데이터로 정하는 법은 3.5절의 검증 데이터(validation set)가, 요동 자체를 억누르는 법은 제5장이 다룬다.

이 장의 뒤 절반에서 \(\bX\)의 열은 얼마든지 늘릴 수 있게 되었다. 가변수, 상호작용 항, 거듭제곱 항을 넣어도 모형은 계수에 대해 선형이고 식 (2.16) 하나로 적합한다. 그렇다면 무엇을 남길 것인가? 열이 늘수록 2.5절의 가역 조건이 깨질 위험, 2.8절의 공선성, 그리고 방금 본 과적합이 함께 커진다. 이 질문이 다음 장의 출발점이다.

제3장 모형 선택

Model Selection

2.9–2.10절에서 보았듯 feature는 얼마든지 늘릴 수 있으니, 이제는 무엇을 남길지 정해야 한다. 이 장은 후보 모형(model) 가운데 무엇을 고르는지, 그리고 참 \(f\)를 모르는 채로 시험오차(test error)를 어떻게 추정(estimation)하는지를 묻는다. 그러려고 1.7절의 훈련오차(training error)와 시험오차, 1.8절의 간결성(parsimony), 2.5절의 정규방정식(normal equation)과 그 해가 하나로 정해질 조건, 2.7–2.8절의 공선성(collinearity)을 가져온다. 절은 강의 순서를 그대로 따르며 재배치한 곳이 없다. 3.2–3.4절의 선택 알고리즘이 저마다 「크기가 다른 후보 가운데 하나를 고른다」는 마지막 단계를 미뤄 두면 3.5–3.6절이 그 물음에 답하는, 강의의 질문과 답의 짜임을 살렸다.

이 장의 구성

  1. 3.1feature를 왜 고르는가48
  2. 3.2최적 부분집합 선택49
  3. 3.3단계적 선택51
  4. 3.4stagewise 선택과 세 방법의 비교53
  5. 3.5시험 데이터와 검증 데이터55
  6. 3.6K-fold 교차검증57

원천 Lecture 4 (2026-09-21) 슬라이드 20–41 · 읽기 ISL 3.2.2, 5.1, 6.1

3.1 feature를 왜 고르는가 Why Select Features?

L04 s21–s22 · ISL 3.2.2

2.9–2.10절에서 범주형(categorical) 변수는 가변수(dummy variable)로, 상호작용(interaction)과 비선형성(nonlinearity)은 feature를 곱하거나 거듭제곱한 열로 선형 모형(linear model)에 넣었다. 어느 경우든 추정 절차는 그대로 두고 설계행렬(design matrix) \(\bX\)의 열만 늘렸다. 열을 이렇게 늘릴 수 있다면, 이제 어느 열을 남기느냐가 문제다. 이 장의 앞 절반(3.1–3.4절)은 feature의 부분집합을 고르는 일, 곧 부분집합 선택(subset selection) 또는 feature selection을 다룬다. 먼저 왜 골라야 하는지부터 본다.

최소제곱 해는 늘 있는가 Does the Least Squares Solution Always Exist?

2.5절에서 최소제곱 추정량(least squares estimator)을 정규방정식 \(\bX\T\bX\bbeta = \bX\T\by\)(식 (2.15))의 해로 얻었다.

$$\bhbeta = (\hat\beta_0, \hat\beta_1, \dots, \hat\beta_p)\T = (\bX\T\bX)^{-1}\bX\T\by$$

여기서 \(\bX\)는 첫 열이 모두 1인 \(n \times (p+1)\) 행렬이므로 \(\bX\T\bX\)는 \((p+1) \times (p+1)\) 행렬이다. 이 식, 곧 식 (2.16)은 \(\bX\T\bX\)의 역행렬(inverse matrix)이 있어야만 계산할 수 있다. 2.5절의 조건을 다시 적으면, \(\bX\T\bX\)가 가역(invertible)일 필요충분조건은 \(\bX\)의 열이 선형독립(linear independence)인 것, 곧 \(\operatorname{rank}(\bX) = p+1\)인 것이다. 반대로 \(\bX\mathbf{v} = \mathbf{0}\)인 \(\mathbf{v} \neq \mathbf{0}\)이 하나라도 있으면 \(\bX\T\bX\mathbf{v} = \mathbf{0}\)이므로 역행렬이 없다. 열들이 이렇게 선형종속(linear dependence)이 되는 대표적인 경우는 셋이다(아래 정리).

이런 경우에도 최소제곱 해가 아예 없는 것은 아니다. 정규방정식을 만족하는 해가 무수히 많아져서, 적합값(fitted value) \(\bX\bhbeta\)는 하나로 정해지지만 계수(coefficient)는 하나로 정해지지 않는다. 계수를 해석할 수도, 위 식으로 계산할 수도 없다. 셋째 경우는 3.3절에서 다시 만난다.

정리 · 최소제곱 해가 하나로 정해지지 않는 세 경우
  1. 두 열이 같다. \(j\)열과 \(j'\)열이 같으면 \(\mathbf{v}\)의 두 성분을 1과 −1로, 나머지를 0으로 두어 \(\bX\mathbf{v} = \mathbf{0}\)을 만들 수 있다. 같은 정보를 담은 feature가 두 번 들어간 것이다.
  2. 가변수를 수준(level) 수만큼 둔다. 세 수준을 가진 region에 가변수를 셋 두면, 세 열의 합이 절편(intercept) 열, 곧 모두 1인 첫 열과 같아진다. 2.9절에서 가변수를 수준 수보다 하나 적게 두고 한 수준을 기준 수준(baseline)으로 남긴 까닭이 이것이다.
  3. 데이터가 너무 적다. 관측값(observation) 수가 \(n < p+1\)이면 \(\operatorname{rank}(\bX) \le n < p+1\)이다.

상관이 강할 때 When Features Are Strongly Correlated

슬라이드는 이어서 묻는다. feature들이 완전히 겹치지는 않지만 상관(correlation)이 강하면 어떻게 되는가? 이때 \(\bX\T\bX\)는 가역이지만 비가역에 가깝다. 2.7절의 식 (2.19) \(\Var(\bhbeta \mid \bX) = \sigma^2(\bX\T\bX)^{-1}\)에서 역행렬의 성분이 커지므로, 계수 추정값(estimate)의 분산(variance)이 커진다(2.8절). 두 feature가 사실상 같은 정보를 나눠 가지므로, 데이터가 조금만 바뀌어도 계수가 한쪽에서 다른 쪽으로 크게 옮겨 간다. 이것이 다중공선성(multicollinearity)의 문제다. 두 feature를 표준화했을 때 둘의 상관계수(correlation coefficient)가 \(r_{12}\)이면, 계수의 분산은 상관이 없을 때의 \(1/(1 - r_{12}^2)\)배다(2.8절의 보충). \(r_{12} = 0.9\)이면 약 5.3배, \(r_{12} = 0.99\)이면 약 50배다. Credit 데이터(2.9절)에서 limit과 rating이 거의 한 직선 위에 놓이는 것이 그 예이고(ISL 그림 3.6), 3.3절에서는 이 두 feature 때문에 선택 결과가 갈리는 것을 보게 된다.

세 가지 물음과 세 가지 이유 Three Questions and Three Reasons

ISL 3.2.2의 물음을 조금 바꾼 다음 셋이 이 장의 출발점이다.

  1. feature \(X_1, \dots, X_p\) 가운데 적어도 하나는 반응변수(response)를 예측(prediction)하는 데 쓸모가 있는가?
  2. 모든 feature가 \(y\)를 설명하는 데 도움이 되는가, 아니면 일부만 쓸모 있는가?
  3. feature의 부분집합만으로 훈련(training)하면 모형이 데이터에 얼마나 잘 맞는가?

ISL은 첫째 물음에 F-검정(F-test)으로, 셋째 물음에 결정계수(coefficient of determination) \(R^2\)처럼 적합도(goodness of fit)를 재는 값으로 답한다. 이 강의는 그 길 대신 부분집합을 직접 고르는 알고리즘 쪽으로 간다. 부분집합을 고르면 좋은 이유는 셋이다.

  1. (거의) 중복된 feature의 위험을 없앤다. 위에서 본 비가역과 다중공선성의 문제다.
  2. 모형을 가볍고 효율적으로 만든다. feature가 적으면 계산과 저장이 싸고, 모형을 읽기도 쉽다.
  3. 잡음(noise)에 가까운 feature가 예측을 흔드는 위험을 줄인다. 반응변수와 무관한 feature라도 훈련 데이터(training data)에서는 우연히 조금 쓸모 있어 보여 0이 아닌 계수를 받는다. 그 계수는 잡음에 맞춘 것이어서 새 데이터에서는 예측을 흔들 뿐이다. 1.9절의 말로 하면 편향(bias)은 줄지 않고 분산만 커진다.

세 이유는 1.8절에서 모형 선택(model selection)의 트레이드오프(trade-off) 가운데 하나로 든 간결성을 구체적으로 풀어 쓴 것이다. 모든 변수를 쓰는 블랙박스(black box) 모형보다 적은 변수로 된 단순한 모형을 흔히 더 낫게 여긴다는 것이었다. 이 장의 나머지는 그 선호를 계산할 수 있는 절차로 바꾸는 일이다.

3.2 최적 부분집합 선택 Best Subset Selection

L04 s23–s26 · ISL 6.1.1

가장 곧은길은 가능한 부분집합을 모두 적합(fit)해 보는 것이다. 최적 부분집합 선택(best subset selection)은 feature \(p\)개로 만들 수 있는 부분집합마다 최소제곱법(least squares)으로 모형을 적합한 뒤, 훈련오차와 모형 크기(model size)의 균형을 맞추는 선택 기준(criterion)으로 그중 하나를 고른다. 각 적합은 잔차제곱합(residual sum of squares, RSS) \(\RSS = \sum_{i=1}^{n}(y_i - \hat{y}_i)^2\)을 최소로 한다. 아래에서 \(\mathcal{M}_k\)는 feature가 \(k\)개인 모형 가운데 가장 좋은 것을 가리킨다.

알고리즘 · 최적 부분집합 선택 (ISL 알고리즘 6.1)
  1. \(\mathcal{M}_0\)을 feature가 하나도 없는 영모형(null model)으로 둔다. 영모형은 모든 관측값을 표본평균(sample mean) \(\bar{y}\)로 예측한다.
  2. \(k = 1, 2, \dots, p\)에 대해
    1. feature \(k\)개의 조합(combination) \(\binom{p}{k} = p!/\{k!\,(p-k)!\}\)가지를 모두 적합한다.
    2. 그 가운데 RSS가 가장 작은(같은 말로 \(R^2\)가 가장 큰) 모형을 \(\mathcal{M}_k\)라 한다.
  3. \(\mathcal{M}_0, \dots, \mathcal{M}_p\) 가운데 하나를 어떤 지표(metric)로 고른다.

2단계에서 RSS와 \(R^2\)가 같은 순서를 주는 것은, \(R^2 = 1 - \RSS/\TSS\)(2.2절의 식 (2.5))에서 총제곱합(total sum of squares, TSS)이 반응변수에만 달려 있어 모형과 상관없기 때문이다. 이 단계는 크기가 같은 모형끼리만 비교하므로 훈련 데이터의 RSS를 써도 된다. 그 덕에 \(2^p\)개 후보에서 고르는 문제가 \(p+1\)개 후보 \(\mathcal{M}_0, \dots, \mathcal{M}_p\)에서 고르는 문제로 줄어든다(ISL 6.1.1). 크기가 다른 모형을 견주는 3단계는 사정이 다르다.

주의 · 3단계의 지표

크기별 최선 모형의 훈련 RSS는 \(k\)가 커질수록 늘지 않고, \(R^2\)는 줄지 않는다(그림 3.2, 증명은 3.5절). 그러므로 훈련 데이터에서 잰 RSS나 \(R^2\)로 3단계를 하면 언제나 \(\mathcal{M}_p\)가 뽑혀 고르는 의미가 없다. 슬라이드는 3단계 지표의 예로 예측오차(prediction error)와 함께 \(R^2\)를 들었는데, 이 \(R^2\)는 크기에 벌점을 주는 수정결정계수(adjusted R-squared)이거나 새 데이터에서 잰 값으로 읽어야 한다. 이 장은 3.5–3.6절의 검증 방법으로 답한다.

그림 3.1은 feature 다섯 개 \(X_1, \dots, X_5\)로 이 알고리즘을 그린 것이다. 오른쪽 항아리는 고를 수 있는 feature, 가운데 칸은 모형에 든 feature, 왼쪽 식은 그 feature로 적합한 모형이다(\(x_j\)는 \(X_j\)의 값). 크기 1의 최선은 \(X_2\)였지만 크기 2의 최선은 \(X_2\)를 담지 않은 \(\{X_1, X_5\}\)일 수 있다. 크기마다 가득 찬 항아리에서 처음부터 다시 고르고, 계수도 절편까지 모두 새로 적합하기 때문이다. 3.3절과 3.4절에서 같은 틀로 다른 두 방법을 그려 나란히 견준다.

그림 3.2는 이 알고리즘을 Credit 데이터(2.9절)에 적용한 결과다. 반응변수는 신용카드 잔액 balance이고 feature는 10개인데, 수준이 셋인 region이 가변수 두 개로 들어가므로 가로축은 11까지 간다. 회색 표시는 같은 크기의 모든 모형이고, 파란 선은 크기마다 가장 좋은 모형 \(\mathcal{M}_k\)를 이은 것이다. 파란 선의 RSS는 feature 1개에서 약 \(2.1 \times 10^7\), 2개에서 약 \(1.05 \times 10^7\), 3개에서 약 \(0.4 \times 10^7\)으로 떨어진 뒤 11개까지 거의 평평하고, \(R^2\)는 약 0.75, 0.87, 0.95를 거쳐 약 0.955에 머문다. 두 곡선은 한 방향으로만 움직인다. 이 단조성 때문에 훈련 RSS로는 크기를 고를 수 없다는 것이 3.5절의 출발점이다.

적합한 모형 모형에 든 feature 후보 feature ŷ = 0.8 영모형 X1 X2 X3 X4 X5 ŷ = 0.3 − 1.2x2 크기 1 X2 X1 X2 X3 X4 X5 ŷ = 0.6 − 0.9x1 + 0.7x5 크기 2 X1 X5 X1 X2 X3 X4 X5 파란 수 이 단계에서 적합한 계수 · 주황 테두리 크기 1의 최선을 담지 않은 조합
그림 3.1최적 부분집합 선택은 크기마다 모든 feature에서 처음부터 다시 고르고 계수를 모두 새로 적합하므로, 크기 2의 최선이 크기 1의 최선 \(X_2\)를 담지 않을 수 있다(L04 s24를 다시 그림, 계수는 설명용 값).
0 2 4 6 8 2 4 6 8 10 feature 수 훈련 RSS (×107) 0.0 0.2 0.4 0.6 0.8 1.0 2 4 6 8 10 feature 수 훈련 R2
그림 3.2Credit 데이터에서 크기별 최선 모형(파란 선)의 훈련 RSS와 \(R^2\)는 feature 수에 따라 한 방향으로만 움직인다(ISL 그림 6.1을 슬라이드에서 읽은 근삿값으로 다시 그림).

최적 부분집합 선택의 두 가지 한계 Issues with Best Subset Selection

첫째는 계산량(computational cost)이다. 크기 \(k\)마다 \(\binom{p}{k}\)개를 적합하므로 모두

$$\sum_{k=0}^{p}\binom{p}{k} = 2^p \tag{3.1}$$

개의 모형을 적합해야 한다. \(p = 40\)이면 \(2^{40} \approx 1.1 \times 10^{12}\)개로, 슬라이드의 말대로 10억 개가 넘는다(실은 1조가 넘는다). \(p\)가 조금만 커져도 모든 모형을 살펴볼 수 없다.

둘째는 통계적인 문제다. 탐색 공간(search space)이 넓을수록, 앞으로 올 데이터에서는 아무 예측력(predictive power)이 없는데도 훈련 데이터에서는 좋아 보이는 모형을 우연히 찾아낼 가능성이 커진다. 거대한 탐색 공간은 과적합(overfitting)과 계수 추정값의 큰 분산으로 이어진다. 슬라이드는 이것을 차원의 저주(curse of dimensionality)라 부르고, 이 말을 수업 뒤에서 다시 쓰겠다고 예고했다. 두 한계는 모두 살펴보는 모형을 줄이라고 말한다. 훨씬 좁은 모형 집합만 탐색하는 단계적 방법이 그 대안이다.

보충 · 차원의 저주라는 말

ISL은 이 말을 주로 다른 현상에 쓴다. feature 수가 늘면 같은 수의 관측값이 공간에 드문드문 흩어져, 1.10절의 K-최근접 이웃(K-nearest neighbors, KNN)처럼 가까운 관측값에 기대는 방법이 무너지는 현상이다(ISL 3.5). 두 쓰임은 「차원(dimension)이 늘면 살펴야 할 공간이 지수적으로 넓어진다」는 한 뿌리에서 나온다.

3.3 단계적 선택 Stepwise Selection

L04 s27–s31 · ISL 6.1.2

단계적 선택(stepwise selection)은 모형을 한 번에 feature 하나씩만 바꿔 가며 훨씬 적은 모형을 살펴본다. 전진 단계적 선택(forward stepwise selection)은 feature가 없는 모형에서 출발해 feature를 하나씩 더한다. 단계마다 적합을 가장 크게 개선하는 feature를 더하고, 모든 feature가 들어갈 때까지 계속한다.

알고리즘 · 전진 단계적 선택 (ISL 알고리즘 6.2)
  1. \(\mathcal{M}_0\)을 영모형으로 둔다.
  2. \(k = 0, 1, \dots, p-1\)에 대해
    1. \(\mathcal{M}_k\)의 feature에 하나를 더한 모형 \(p-k\)개를 모두 적합한다.
    2. 그 가운데 RSS가 가장 작은(\(R^2\)가 가장 큰) 모형을 \(\mathcal{M}_{k+1}\)이라 한다.
  3. \(\mathcal{M}_0, \dots, \mathcal{M}_p\) 가운데 하나를 어떤 지표로 고른다.

최적 부분집합 선택과 다른 곳은 2단계다. \(\mathcal{M}_{k+1}\)은 반드시 \(\mathcal{M}_k\)에 feature 하나를 더한 모형이므로, 한번 뽑힌 feature는 끝까지 빠지지 않는다. 그러나 계수는 고정되지 않는다. 새 feature가 들어올 때마다 모형에 든 모든 feature의 계수를 최소제곱법으로 다시 적합한다. 그림 3.3에서 \(X_5\)가 들어오자 절편은 0.3에서 0.6으로, \(x_2\)의 계수는 −1.2에서 −0.9로 바뀐다. 도식의 바탕이 된 원래 그림의 문구대로 말하면, 가장 유의(significant)한 feature를 하나씩 더하다가 정지 규칙(stopping rule)에 이르거나 feature가 바닥나면 멈추는 절차다.

적합한 모형 모형에 든 feature 후보 feature ŷ = 0.8 영모형 X1 X2 X3 X4 X5 ŷ = 0.3 − 1.2x2 크기 1 X2 X1 X3 X4 X5 ŷ = 0.6 − 0.9x2 + 0.7x5 크기 2 X2 X5 X1 X3 X4 파란 수 이 단계에서 적합한 계수 · 주황 테두리 앞 단계에서 물려받아 빠지지 않는 feature 점선 원은 이미 뽑혀 항아리를 떠난 feature
그림 3.3전진 단계적 선택에서 한번 뽑힌 \(X_2\)는 모형을 떠나지 않지만, \(X_5\)가 들어올 때 절편과 \(x_2\)의 계수까지 모두 다시 적합된다(L04 s28을 다시 그림, 계수는 설명용 값).

대신 계산량이 크게 준다. 영모형 하나에 더해 \(k\)번째 단계에서 후보 \(p-k\)개를 적합하므로, 전진 단계적 선택이 적합하는 모형은 모두

$$1 + \sum_{k=0}^{p-1}(p-k) = 1 + \frac{p(p+1)}{2} \tag{3.2}$$

개다. 적합하는 모형의 수로 센 시간 복잡도(time complexity)는 \(O(p^2)\)이고, 최적 부분집합 선택은 \(O(2^p)\)이다. \(p = 40\)이면 821개 대 약 \(1.1 \times 10^{12}\)개다.

그 대가로 최적성을 잃는다. 전진 단계적 선택은 \(2^p\)개 부분집합 가운데 가장 좋은 모형을 찾는다고 보장하지 않는다. 표 3.1은 Credit 데이터에서 두 방법이 크기별로 고른 feature다. 크기 1–3에서는 결과가 같다. 크기 4에서 최적 부분집합 선택은 아무 네 feature나 고를 수 있으므로 rating을 빼고 cards와 limit을 넣은 조합을 찾는다. 전진 단계적 선택은 앞 단계의 세 feature를 반드시 담아야 하므로 하나만 더 고를 수 있고, 그 결과 거의 겹치는 rating과 limit(3.1절)을 함께 담은 모형이 된다.

표 3.1Credit 데이터에서 두 방법이 크기별로 고른 feature(ISL 표 6.1). 크기 4에서 결과가 갈린다
feature 수최적 부분집합 선택전진 단계적 선택
1ratingrating
2rating, incomerating, income
3rating, income, studentrating, income, student
4cards, income, student, limitrating, income, student, limit

후진 단계적 선택 Backward Stepwise Selection

후진 단계적 선택(backward stepwise selection)은 그 거울상이다. feature \(p\)개를 모두 담은 완전 모형(full model)에서 출발해, 가장 덜 쓸모 있는 feature를 한 번에 하나씩 뺀다.

알고리즘 · 후진 단계적 선택 (ISL 알고리즘 6.3)
  1. \(\mathcal{M}_p\)를 완전 모형으로 둔다.
  2. \(k = p, p-1, \dots, 1\)에 대해
    1. \(\mathcal{M}_k\)의 feature에서 하나만 뺀, feature \(k-1\)개짜리 모형 \(k\)개를 모두 적합한다.
    2. 그 가운데 RSS가 가장 작은(\(R^2\)가 가장 큰) 모형을 \(\mathcal{M}_{k-1}\)이라 한다.
  3. \(\mathcal{M}_0, \dots, \mathcal{M}_p\) 가운데 하나를 어떤 지표로 고른다.

후진 단계적 선택도 \(1 + p(p+1)/2\)개의 모형만 살펴보므로 \(O(p^2)\)이고, 최적 부분집합 선택을 쓰기에는 \(p\)가 너무 클 때 쓸 수 있다. 가장 좋은 모형을 보장하지 못하는 것도 전진 쪽과 같다. 다른 점은 출발점이다. 완전 모형을 먼저 적합해야 하므로 관측값 수 \(n\)이 feature 수 \(p\)보다 커야 한다. \(n \le p\)이면 3.1절의 셋째 경우대로 \(\bX\T\bX\)가 비가역이어서 첫 단계부터 막힌다. 전진 단계적 선택은 작은 모형부터 키우므로 \(n < p\)여도 쓸 수 있고(ISL에 따르면 이때는 \(\mathcal{M}_{n-1}\)까지 만든다), 그래서 \(p\)가 아주 클 때 쓸 수 있는 유일한 부분집합 선택 방법이다. 다만 슬라이드가 덧붙이듯, 실무에서는 대개 \(n \gg p\)이므로 이 제약을 크게 걱정할 일은 없다.

보충 · 혼합 방식 (ISL 6.1.2)

ISL은 둘을 섞은 방식도 소개한다. 전진 단계적 선택처럼 feature를 하나씩 더하되, 새 feature를 더할 때마다 더 이상 적합을 개선하지 않는 feature가 있으면 뺀다. 한번 뽑힌 feature를 뺄 수 있게 해서 최적 부분집합 선택에 더 가까이 다가가면서도, 계산량은 단계적 선택 수준으로 묶어 두려는 것이다.

3.4 stagewise 선택과 세 방법의 비교 Stagewise Selection and Comparing the Three Methods

L04 s32–s34

단계적 선택은 feature를 고정하되 계수는 다시 적합했다. 전진 stagewise 선택은 한 걸음 더 나아가 앞 단계에서 적합한 계수까지 고정한다. 단계마다 feature 하나를 더하되 그 feature의 계수 하나만 적합한다. 대신 같은 feature를 여러 번 뽑을 수 있게 해서, 앞서 적합한 계수를 나중에 보정할 길을 열어 둔다.

알고리즘 · 전진 stagewise 선택
  1. \(\mathcal{M}_0\)을 영모형으로 둔다.
  2. \(k = 1, 2, \dots, T\)에 대해
    1. \(j = 1, \dots, p\)마다, \(\mathcal{M}_{k-1}\)의 계수를 모두 그대로 두고 항 \(\beta x_j\) 하나를 더해 \(\beta\)만 최소제곱법으로 적합한다. 이 모형을 \(\mathcal{M}_k^{(j)}\)라 한다.
    2. \(\mathcal{M}_k^{(1)}, \dots, \mathcal{M}_k^{(p)}\) 가운데 RSS가 가장 작은(\(R^2\)가 가장 큰) 모형을 \(\mathcal{M}_k\)라 한다.
  3. \(\mathcal{M}_0, \dots, \mathcal{M}_T\) 가운데 하나를 어떤 지표로 고른다.

여기서 \(\mathcal{M}_k\)는 \(k\)번째 단계의 모형이다. 같은 feature를 거듭 뽑을 수 있으므로, 모형에 든 서로 다른 feature의 수는 \(k\)보다 작을 수 있다. 반복 횟수 \(T\)도 feature 수 \(p\)에 묶이지 않는다. 그래서 \(T\)는 미리 정해야 하는 하이퍼파라미터(hyperparameter)이고, 그것을 고르는 법이 3.5절의 주제다. 슬라이드는 반복 횟수를 \(K\)로 적었지만, 3.6절의 K-fold와 겹치지 않게 이 책은 \(T\)로 쓴다. 또 슬라이드에서는 (b)가 \(j\)에 대한 반복 안에 들여 쓰여 있으나, \(p\)개 후보를 모두 적합한 뒤 한 번 하는 단계다.

보충 · 새 계수 하나는 잔차에 맞춘 직선의 기울기다

\(\mathcal{M}_{k-1}\)의 적합 함수를 \(\hat{f}_{k-1}\), 그 잔차(residual)를 \(e_i = y_i - \hat{f}_{k-1}(\bx_i)\)라 하자. 후보 \(\mathcal{M}_k^{(j)}\)는 \(\hat{f}_{k-1}(\bx) + \beta x_j\)다.

  1. 앞 단계의 계수가 고정되어 있으므로 남은 미지수는 \(\beta\) 하나이고, 후보의 RSS는 \(\RSS_j(\beta) = \sum_{i=1}^{n}(e_i - \beta x_{ij})^2\)이다.
  2. \(\beta\)로 미분해 0으로 두면 \(-2\sum_i x_{ij}(e_i - \beta x_{ij}) = 0\)이므로 $$\hat\beta_j = \frac{\sum_{i} x_{ij}\, e_i}{\sum_{i} x_{ij}^2}. \tag{3.3}$$ 잔차 \(e_i\)를 반응으로, \(x_{ij}\)를 유일한 feature로 삼아 절편 없이 맞춘 최소제곱 직선의 기울기(slope)다.
  3. 다시 대입하면 $$\RSS_j(\hat\beta_j) = \sum_{i} e_i^2 - \frac{\bigl(\sum_{i} x_{ij}\, e_i\bigr)^2}{\sum_{i} x_{ij}^2}. \tag{3.4}$$ (b)는 빼는 항이 가장 큰 feature를 고른다. feature를 표준화해 두었다면, 현재 잔차와의 상관이 절댓값으로 가장 큰 feature다.

그림 3.4는 3.3절의 예를 stagewise로 다시 푼 것이다. 그림 3.1·3.3·3.4의 계수는 모두 슬라이드가 설명하려고 붙인 값이다. 영모형의 절편 0.8과 1단계에서 적합한 \(x_2\)의 계수 −1.2는 뒤 단계에서 바뀌지 않는다. 2단계에서 \(X_5\)가 뽑혀 \(0.7x_5\)가 붙고, 3단계에서 \(X_2\)가 다시 뽑혀 \(0.3x_2\)가 더해진다. 결과는 \(\hat{y} = 0.8 - 0.9x_2 + 0.7x_5\)다. 도식에서는 거듭 뽑힌 \(x_2\)의 계수가 단계적 선택과 같은 −0.9에 이르지만, 절편은 처음 값 0.8에 묶여 단계적 선택의 0.6과 다르다. 실제 데이터라면 1단계의 계수부터 두 방법이 다를 수 있다. stagewise는 절편을 0.8에 묶어 둔 채 식 (3.3)으로 기울기만 맞추기 때문이다. 고정하고 거듭 뽑는 방식으로 다시 적합한 결과에 다가갈 수는 있어도, 그 결과와 같아진다는 보장은 없다.

적합한 모형 모형에 든 feature 후보 feature ŷ = 0.8 영모형 X1 X2 X3 X4 X5 ŷ = 0.8 − 1.2x2 1단계 X2 X1 X2 X3 X4 X5 ŷ = 0.8 − 1.2x2 + 0.7x5 2단계 X2 X5 X1 X2 X3 X4 X5 ŷ = 0.8 − 1.2x2 + 0.7x5 + 0.3x2 = 0.8 − 0.9x2 + 0.7x5 3단계 X2 X5 X2 X1 X2 X3 X4 X5 파란 수 이 단계에서 적합한 계수 · 회색 물려받아 고정된 부분 주황 테두리 다시 뽑은 feature
그림 3.4전진 stagewise 선택은 앞 단계의 계수를 둔 채 새 계수 하나만 적합하고, 같은 feature를 다시 뽑아 보정한다(L04 s33을 다시 그림, 계수는 설명용 값).

세 방법의 비교 Comparing the Three Methods

세 방법은 얼마나 탐욕적인가로 줄 세울 수 있다. 탐욕 알고리즘(greedy algorithm)은 단계마다 그 자리에서 가장 좋아 보이는 선택을 하고, 한번 내린 결정을 되돌리지 않는 알고리즘이다. 단계적 선택은 한번 더한 feature를 뺄 수 없다는 점에서 탐욕적이지만, 각 feature의 계수는 바뀔 수 있다. stagewise 선택은 한번 적합한 계수조차 바꿀 수 없다는 점에서 더 탐욕적이고, 보정할 길을 열어 두려고 같은 feature를 거듭 더할 수 있게 한다. 최적 부분집합 선택은 크기마다 처음부터 다시 찾으므로 탐욕적이지 않다. 탐욕적일수록 한 단계의 계산은 싸지지만, 가장 좋은 모형에 이른다는 보장은 약해진다. 표 3.2가 이 비교를 모은 것이다. stagewise처럼 앞의 적합을 고정한 채 잔차에 작은 보정을 거듭 쌓아 가는 발상은 제6장에서 다룰 boosting에서 다시 만난다.

표 3.2세 선택 방법의 비교(보충). 적합하는 모형 수는 영모형을 포함한다
최적 부분집합단계적(전진·후진)전진 stagewise
앞서 고른 feature크기마다 새로 고른다유지한다(후진은 뺀 채로 둔다)유지한다
앞서 적합한 계수모두 다시 적합모두 다시 적합고정, 새 계수 하나만 적합
같은 feature 다시 뽑기—하지 않는다허용한다
후보 하나의 적합최소제곱 전체최소제곱 전체계수 하나, 식 (3.3)
적합하는 모형 수\(2^p\)\(1 + p(p+1)/2\)\(1 + pT\)
크기별 최선 보장있다(훈련 RSS 기준)없다없다

3.5 시험 데이터와 검증 데이터 Test Data and Validation Data

L04 s36–s39 · ISL 5.1.1, 6.1.3

세 알고리즘이 모두 비워 둔 마지막 단계로 돌아가자. \(\mathcal{M}_0, \dots, \mathcal{M}_p\) 가운데 어느 것이 가장 좋은가? RSS가 가장 작은 것, \(R^2\)가 가장 큰 것이라고 답하고 싶지만, 훈련 데이터에서 잰 이 값들로는 답할 수 없다. feature를 모두 담은 모형이 언제나 RSS가 가장 작고 \(R^2\)가 가장 크기 때문이다.

정리 · 훈련 RSS는 feature를 더해도 늘지 않는다

feature 집합 \(S \subset S'\)이면, \(S'\)로 적합한 모형의 훈련 RSS는 \(S\)로 적합한 모형의 훈련 RSS보다 크지 않다. 따라서 \(R^2\)는 줄지 않는다.

  1. \(S\) 모형의 최소제곱 계수에 \(S'\)에만 있는 feature의 계수를 0으로 덧붙이면 \(S'\) 모형의 계수 후보가 되고, 그 RSS는 \(S\) 모형의 RSS와 같다.
  2. \(S'\) 모형의 최소제곱 해는 이 후보를 포함한 모든 후보 가운데 RSS가 가장 작은 것이므로 \(\RSS(S') \le \RSS(S)\)다.
  3. \(\mathcal{M}_k\)에 feature \(X_j\) 하나를 더한 모형은 크기 \(k+1\)의 후보이므로, 최적 부분집합 선택에서 $$\RSS(\mathcal{M}_{k+1}) \le \RSS(\mathcal{M}_k + X_j) \le \RSS(\mathcal{M}_k). \tag{3.5}$$

슬라이드의 말로는 feature를 더해서 잃을 것이 없다. 더한 feature는 쓸모 있으면 쓰이고, 쓸모없으면 무시될 뿐이다. 그림 3.2의 단조 곡선이 바로 이것이다. 그러나 우리가 원하는 것은 시험오차가 작은 모형이지 훈련오차가 작은 모형이 아니다. 1.7절에서 보았듯 훈련 데이터 위의 평균제곱오차(mean squared error, MSE) \(\MSE_{\mathsf{Tr}} = \frac{1}{n}\sum_{i \in \mathsf{Tr}}\bigl(y_i - \hat{f}(\bx_i)\bigr)^2\)(식 (1.6))는 과적합된 모형 쪽으로 치우치므로, 훈련오차는 시험오차(식 (1.7))를 제대로 추정하지 못한다. 그러므로 훈련 데이터에서 잰 RSS와 \(R^2\)는 feature 수가 다른 모형들 가운데서 고르는 데 알맞지 않다. 시험오차를 추정할 다른 데이터가 필요하다.

시험 데이터를 떼어 둔다 Setting Aside Test Data

모형 평가(evaluation)에서 알고 싶은 것은 모형이 훈련 데이터를 암기(memorization)했는지가 아니라 데이터의 일반적인 패턴을 배웠는지, 곧 일반화(generalization)했는지다. 사람의 공부와 같다. 교과서의 연습문제로 푸는 법을 익혀 두면, 실제 시험에서 처음 보는 문제에도 그 기술을 쓸 수 있다.

그래서 데이터의 일부를 평가용으로 떼어 둔다. 이것이 시험 데이터(test data)다. 슬라이드는 eval data라고도 부른다. 시험 데이터는 훈련하는 동안 어떤 목적으로도 쓰면 안 된다. Kaggle 대회가 참가자에게 시험 관측값의 레이블(label)을 공개하지 않는 것도 이 때문이다.

나누는 방법으로 가장 흔한 것은 무작위 분할(random split)이다. 전체의 10–20%를 균등하게 무작위로 뽑아 시험 데이터로 둔다. 문제에 따라 다르게 나눠야 할 때도 있다. 과거로 미래를 예측하는 문제라면 시간 기준 분할(timestamp-based split)을 쓴다. 이를테면 처음 4년의 데이터로 훈련하고 마지막 1년의 데이터로 평가해야, 모형이 과거에서 미래를 예측할 수 있는지를 잴 수 있다.

주의 · 데이터 누수(보충)

시험 데이터를 「쓴다」는 것은 모형을 적합하는 데 쓰는 것만이 아니다. 후보 가운데 하나를 고르려고 시험오차를 들여다보는 것, 표준화에 쓸 평균(mean)과 표준편차(standard deviation)를 시험 데이터까지 넣어 계산하는 것, 전체 데이터로 feature selection을 해 두고 나중에 나누는 것도 모두 쓰는 것이다. 이렇게 시험 데이터의 정보가 훈련 과정에 새어 드는 것을 데이터 누수(data leakage)라 한다. 누수가 있으면 시험오차는 더 이상 처음 보는 데이터(unseen data)에서의 오차(error)가 아니어서 낙관적으로 치우친다. 전처리(preprocessing)에 필요한 값도 훈련 부분에서만 계산한다.

하이퍼파라미터와 검증 데이터 Hyperparameters and the Validation Set

많은 기계학습(machine learning) 모형에는 훈련을 시작하기 전에 정해 두어야 하는 값이 있다.

정의 · 하이퍼파라미터

훈련이 데이터에서 추정하는 파라미터(parameter), 예컨대 선형회귀(linear regression)의 계수와 달리, 훈련을 시작하기 전에 정해 두는 값을 하이퍼파라미터라 한다. 두 가지가 있다.

  • 모형 하이퍼파라미터(model hyperparameter)는 모형의 구조를 정한다. 고를 feature 수 \(k\)(3.2–3.3절), stagewise의 반복 횟수 \(T\)(3.4절), 1.10절 KNN의 \(K\)가 여기에 든다.
  • 학습 하이퍼파라미터(learning hyperparameter)는 훈련 절차를 정한다. 제4장의 경사하강법(gradient descent)에서 처음 나올 학습률(learning rate)이 대표적이다.

하이퍼파라미터 가운데 일부는 직관으로 정할 수 있지만, 데이터로 정하는 쪽이 대개 더 낫다. 방법은 모형 훈련과 똑같다. 하이퍼파라미터 조합마다 모형을 훈련하고 평가해서 가장 좋은 것을 고른다. 이 평가에도 훈련 중에 보지 않은 관측값이 필요하다. 이유는 앞과 같다. 훈련에 쓴 데이터로 평가하면 가장 복잡한 후보가 늘 이긴다. 그렇다고 시험 데이터를 쓸 수는 없다. 시험 데이터는 실제 시험 말고는 쓰지 않는다. 그래서 훈련 데이터의 일부를 다시 떼어 검증 데이터(validation set)로 두고, 하이퍼파라미터는 이것으로 고른다.

3.2–3.4절의 3단계가 바로 이 일이다. 모형 크기 \(k\)(stagewise라면 \(T\))를 하이퍼파라미터로 본다. 훈련 부분만으로 선택 알고리즘을 돌려 후보 \(\mathcal{M}_0, \dots, \mathcal{M}_p\)를 만들고, 검증 데이터에서 오차가 가장 작은 크기 \(k\)를 고른다. 고른 \(k\)로는 아래 다섯 단계의 4단계에서 훈련 데이터와 검증 데이터 전체에 선택과 적합을 다시 한다.

다섯 단계 The Five-Step Procedure

데이터를 훈련·검증·시험의 세 부분으로 나눠 하이퍼파라미터를 고르고 최종 성능을 재는 표준 절차는 다섯 단계다(그림 3.5).

  1. 훈련 데이터로 모형을 훈련한다.
  2. 검증 데이터로 그 모형을 평가한다.
  3. 하이퍼파라미터를 바꿔 가며 1–2단계를 되풀이하고, 가장 좋은 것을 고른다.
  4. 3단계에서 고른 하이퍼파라미터로, 훈련 데이터와 검증 데이터를 합친 데이터에서 모형을 다시 훈련한다.
  5. 4단계의 모형을 시험 데이터로 평가한다.
훈련 70% 검증 20% 시험 10% 1단계 · 훈련 훈련 검증 시험 2단계 · 검증 훈련 검증 시험 3단계 · 하이퍼파라미터를 바꿔 가며 1–2단계를 되풀이하고 가장 좋은 값을 고른다 4단계 · 재훈련 훈련 검증 시험 5단계 · 시험 훈련 검증 시험
그림 3.5하이퍼파라미터는 훈련 데이터와 검증 데이터만으로 고르고, 시험 데이터는 마지막 5단계에서 한 번만 쓴다(L04 s39를 다시 그림, 비율은 슬라이드의 예시).

시험 데이터는 4단계가 끝날 때까지 쓰지 않는다. 4단계에서 검증 데이터까지 합쳐 다시 훈련하는 것은, 하이퍼파라미터가 정해진 뒤에는 검증 데이터를 따로 둘 까닭이 없으므로 가진 데이터를 최대한 쓰려는 것이다. 5단계의 시험오차가 이 모형의 성능으로 보고할 값이다. 학습률 같은 학습 하이퍼파라미터도 제4장부터 이 절차로 고르고, 제11장의 학습률 스케줄링(learning rate scheduling)에서 다시 다룬다.

슬라이드는 이 절차에 「Cross Validation」이라는 제목을 달았지만, 한 번 나눈 검증 데이터로 고르는 이 방법은 엄밀히 말해 검증 데이터 방법(validation set approach)이다(ISL 5.1.1). 나누기를 되풀이하는 교차검증(cross-validation)은 다음 절에서 다룬다.

3.6 K-fold 교차검증 K-fold Cross-Validation

L04 s40–s41 · ISL 5.1.3, 6.1.3

검증 데이터 방법은 데이터를 한 번만 나눈다. ISL 5.1.1이 지적하듯, 그러면 어느 관측값이 검증 데이터에 들어갔느냐에 따라 검증오차(validation set error)가 크게 흔들리고, 검증에 떼어 준 만큼 훈련에 쓸 데이터가 준다. K-fold 교차검증(K-fold cross-validation)은 나누기를 되풀이해 이 문제를 줄인다.

정의 · K-fold 교차검증

데이터를 크기가 같은 \(K\)개의 블록, 곧 fold로 나눈다. fold 하나를 빼고 나머지로 훈련한 뒤 뺀 fold에서 평가하는 일을 fold마다 한 번씩, 모두 \(K\)번 한다. 그리고 \(K\)개의 점수를 평균한다.

$$\MSE_{\mathsf{CV}} = \frac{1}{K}\sum_{m=1}^{K}\MSE_{(m)} \tag{3.6}$$

\(m\)번째 fold를 뺀 데이터로 훈련한 모형을 그 fold에서 잰 MSE가 \(\MSE_{(m)}\)이다.

그림 3.6은 \(K = 5\)인 경우다. 모든 관측값이 검증에 꼭 한 번, 훈련에 \(K-1\)번 쓰인다. 대가는 계산이다. 후보 하나마다 모형을 \(K\)번 훈련해야 한다.

fold 1 fold 2 fold 3 fold 4 fold 5 1회 검증 훈련 훈련 훈련 훈련 MSE(1) 2회 훈련 검증 훈련 훈련 훈련 MSE(2) 3회 훈련 훈련 검증 훈련 훈련 MSE(3) 4회 훈련 훈련 훈련 검증 훈련 MSE(4) 5회 훈련 훈련 훈련 훈련 검증 MSE(5) 평균 식 (3.6)
그림 3.65-fold 교차검증은 fold마다 한 번씩 검증을 맡기고 나머지 넷으로 훈련해, 다섯 개의 검증 MSE를 평균한다(L04 s40을 다시 그림).

(보충) fold로 나누는 것은 3.5절의 훈련 데이터와 검증 데이터를 합친 부분이다. 시험 데이터는 여전히 따로 떼어 두고, 교차검증으로 하이퍼파라미터를 고른 뒤 다섯 단계의 4–5단계를 그대로 밟는다. 3.5절의 누수 주의도 fold마다 그대로 적용된다. fold를 나누기 전에 전체 데이터로 feature를 골라 두면, 검증 fold의 정보가 이미 훈련에 들어간 것이다.

Credit 데이터에서 크기 고르기 Choosing the Model Size for the Credit Data

그림 3.7은 Credit 데이터에서 모형 크기 \(k = 1, \dots, 11\)마다 세 가지 잣대를 잰 것이다. 왼쪽은 그림 3.2의 훈련 RSS, 곧 전체 데이터로 고른 \(\mathcal{M}_k\)의 값이다. 가운데와 오른쪽은 ISL 그림 6.3의 검증오차와 교차검증오차(cross-validation error)로, 크기 \(k\)마다 훈련 부분(교차검증이면 fold 하나를 뺀 나머지)에서 최적 부분집합 선택을 다시 돌려 얻은 크기 \(k\)의 최선 모형을 떼어 둔 부분에서 잰 값이다. feature를 고르는 일까지 훈련 부분 안에서 해야 누수가 없다(ISL 6.5). ISL은 검증 데이터 방법에서 관측값의 3/4로 훈련하고 1/4로 검증했으며, 교차검증은 10-fold로 했다(ISL 6.1.3). 두 패널의 세로축은 MSE가 아니라 그 제곱근이다. 크기 1의 값 약 230은 그림 3.2의 훈련 RSS \(2.1 \times 10^7\)을 \(n = 400\)으로 나눈 값의 제곱근(약 229)과 비슷하다. 훈련 RSS는 feature를 더할수록 늘지 않으므로 11개를 모두 쓰라고 말한다. 검증오차와 교차검증오차는 feature 3–4개까지 크게 줄다가 그 뒤로는 평평하거나 조금 다시 오른다. 두 곡선 모두 feature 6개에서 가장 낮으므로(제곱근으로 검증오차 약 101, 교차검증오차 약 99, 곧 \(\MSE_{\mathsf{CV}} \approx 99^2 \approx 9{,}800\)), 이 기준으로는 feature 6개짜리 모형을 고른다. 원 그림에는 베이즈 정보 기준(Bayesian information criterion, BIC)으로 잰 패널도 있는데, 슬라이드는 이를 뺐다.

보충 · 1-표준오차 규칙 (ISL 6.1.3)

그림 3.7에서 feature 4개부터 11개까지의 곡선은 거의 평평하다. 이 정도 차이는 데이터를 달리 나누면 뒤집힐 수 있다. 이럴 때 ISL은 1-표준오차 규칙(one-standard-error rule)을 권한다. 크기마다 추정한 시험 MSE의 표준오차(standard error)를 구하고, 최저점에서 표준오차 하나 안에 드는 모형 가운데 가장 작은 것을 고른다. 1.8절의 간결성(3.1절)과 같은 생각이다. 교차검증에서는 흔히 fold별 \(\MSE_{(m)}\) \(K\)개의 표준편차를 \(\sqrt{K}\)로 나눈 값을 표준오차로 쓴다. ISL에 따르면 Credit 데이터에서 이 규칙은 두 방법 모두 feature 3개짜리 모형을 고른다.

제5장의 규제(regularization) 강도와 제6장의 결정 트리(decision tree) 가지치기(pruning) 정도도 이렇게 교차검증으로 고른다.

0.0 0.5 1.0 1.5 2.0 2.5 2 4 6 8 10 feature 수 RSS (×107) 훈련 데이터로 잰 RSS 최소 · 11개 100 140 180 220 2 4 6 8 10 feature 수 검증오차 (√MSE) 검증 데이터로 잰 오차 (검증오차) 최소 · 6개 100 140 180 220 2 4 6 8 10 feature 수 교차검증오차 (√MSE) 교차검증으로 잰 오차 (교차검증오차) 최소 · 6개
그림 3.7Credit 데이터에서 훈련 RSS는 feature를 모두 쓰라고 말하지만, 처음 보는 데이터로 잰 검증오차와 교차검증오차는 feature 6개에서 가장 낮다(가운데·오른쪽은 ISL 그림 6.3으로 세로축은 MSE의 제곱근이며, 모두 슬라이드에서 읽은 근삿값).

제4장 분류

Classification

반응변수(response)가 범주형(categorical)일 때 각 클래스(class)일 확률을 어떤 모형(model)으로 추정(estimation)하고 훈련(training)하는가? 가장 좋은 규칙은 무엇이고 그 성능은 무엇으로 재는가? 앞부분(4.1–4.8, Lecture 5)은 1.10절의 분류(classification)와 조건부 확률(conditional probability), 2.3절의 베르누이 분포(Bernoulli distribution)와 최대가능도 추정(maximum likelihood estimation, MLE), 2.4절의 절편(intercept) 흡수와 가능도(likelihood)의 최대화를 손실의 최소화로 읽는 관점을 가져와 로지스틱 회귀(logistic regression)를 1.2절의 네 단계에 세운다. 식으로 풀리지 않는 그 MLE는 1.6절이 미뤄 둔 경사하강법(gradient descent)과 3.5절의 학습 하이퍼파라미터(learning hyperparameter)로 풀고, 클래스가 셋 이상이면 2.9절의 one-hot encoding을 다시 쓴다. 뒷부분(4.9–4.15, Lecture 6)은 1.5절의 분류판인 베이즈 분류기(Bayes classifier)를 세우고, 그것을 클래스별 분포의 MLE(2.3절)로 근사하는 판별분석(discriminant analysis)과 나이브 베이즈(naive Bayes)를 거쳐 평가(evaluation)로 장을 닫는다. 절은 개념 순서를 따라 feature가 여럿인 경우(L05 s33)를 4.2절로, MLE와 로그 손실(log-loss)의 요약(L05 s38)을 4.4절로, 나이브 베이즈(L06 s33–s39)를 평가 앞인 4.14절로 옮겼다.

이 장의 구성

  1. 4.1분류와 선형회귀의 한계60
  2. 4.2로지스틱 회귀 모형61
  3. 4.3계수의 해석과 예측63
  4. 4.4최대가능도 추정과 로그 손실64
  5. 4.5최적화 문제로서의 훈련65
  6. 4.6경사하강법66
  7. 4.7확률적 경사하강법과 훈련68
  8. 4.8다항 로지스틱 회귀와 softmax69
  9. 4.9베이즈 분류기71
  10. 4.10생성 분류기와 판별분석73
  11. 4.11선형판별분석과 이차판별분석74
  12. 4.12여러 feature와 여러 클래스의 판별분석75
  13. 4.13판별분석과 로지스틱 회귀77
  14. 4.14나이브 베이즈78
  15. 4.15분류기의 평가80

원천 Lecture 5 (2026-09-23) 슬라이드 3–38 · Lecture 6 (2026-09-28) 슬라이드 3–39 · 읽기 ISL 4.1–4.5

4.1 분류와 선형회귀의 한계 Classification and the Limits of Linear Regression

L05 s03–s07 · ISL 4.1–4.2

1.10절에서 반응변수 \(y\)가 질적(qualitative) 변수일 때, 곧 순서 없는 집합 \(\mathcal{C}\)에서 값을 가질 때 \(y\)가 가질 수 있는 값을 클래스라 하고, 입력(input) \(\bx\)의 클래스를 맞히는 분류기(classifier)를 만드는 일을 분류라 했다. 그때 든 세 목표 가운데 둘째가 분류의 불확실성(uncertainty)이었다. 이 장은 거기서 출발한다. 분류기는 클래스 하나를 내놓으면 되지만, 각 클래스일 확률 \(\mathbb{P}(Y = k \mid X = \bx)\)를 추정하는 편이 더 쓸모 있는 경우가 많다. 보험금 청구가 사기일 확률이 있으면 조사 인력이 볼 수 있는 만큼 확률이 높은 순서로 고를 수 있고, 사기를 놓치는 손해가 크면 기준을 0.5보다 낮출 수도 있다. 반대로 확률이 있으면 분류는 식 (1.12)처럼 확률이 가장 큰 클래스를 고르는 것으로 끝난다. 1.10절의 K-최근접 이웃(K-nearest neighbors, KNN)이 이웃의 비율로 확률을 어림했다면, 이 장은 파라미터(parameter) 몇 개로 된 모수 모형(parametric model)으로 확률을 추정한다.

Default 데이터 The Default Data

0 500 1000 1500 2000 2500 0 20 40 60 잔고 balance (달러) 소득 income (천 달러) 0 1000 2000 No Yes 잔고 0 20 40 60 No Yes 소득 ○ 연체 안 함(No)+ 연체(Yes)
그림 4.1잔고는 연체한 사람(주황 +)과 하지 않은 사람(파랑 ○)을 가르지만 소득은 거의 가르지 못한다. 가운데·오른쪽은 연체 여부별 상자그림이다. 산점도에는 연체하지 않은 사람 가운데 일부만 그렸다. 예시 데이터(ISL 그림 4.1을 본뜸).

이 장의 예제는 ISL 4장의 Default 데이터다. 신용카드 고객 10,000명의 연체 여부 default(Yes/No)와 월 카드 잔고 balance, 연 소득 income, 학생 여부 student를 담은 모의 데이터로, 연체한 사람은 약 3%다. 그림 4.1의 산점도(scatterplot)와 상자그림(box plot)을 보면 잔고는 연체 여부에 따라 분포가 크게 다르지만 소득은 거의 같다. 그래서 4.1–4.3절의 본문 예는 잔고 하나만 feature로 쓴다. balance·income은 2.9절 Credit 데이터의 변수와 이름만 같다.

0/1 코딩의 선형회귀 Linear Regression on a 0/1 Response

가장 쉬운 방법부터 보자. No를 0, Yes를 1로 코딩하면 \(y\)가 수가 되므로 선형회귀(linear regression)를 그대로 돌리고, 예측값(predicted value) \(\hat{y}\)가 0.5보다 크면 Yes로 분류할 수 있다. 이것이 그럴듯한 이유는 \(y\)가 0 아니면 1이라서 모집단(population)의 조건부 기댓값(conditional expectation)이 곧 조건부 확률이기 때문이다.

$$\E[y \mid \bx] = 0 \cdot \mathbb{P}(Y = 0 \mid X = \bx) + 1 \cdot \mathbb{P}(Y = 1 \mid X = \bx) = \mathbb{P}(Y = 1 \mid X = \bx) \tag{4.1}$$

선형회귀가 추정하는 회귀함수(regression function)가 식 (1.2)의 \(\E[y \mid \bx]\)이므로, 0/1 반응에서는 회귀함수가 곧 우리가 원하는 연체 확률이다. 문제는 그 회귀함수를 직선으로 추정한다는 데 있다. 그림 4.2의 직선은 잔고가 약 560달러보다 작으면 0보다 작은 「확률」을 내놓고, 데이터의 끝인 2,700달러에서도 0.3에 못 미쳐 「\(\hat{y} > 0.5\)이면 Yes」라는 규칙은 아무도 Yes로 분류하지 못한다. 결함은 두 가지다. 값이 [0, 1]을 벗어나고, 1,000달러 아래에서는 거의 0이다가 1,500–2,300달러에서 가파르게 오르는 실제 확률의 모양을 기울기(slope)가 하나뿐인 직선이 따라가지 못한다.

0 500 1000 1500 2000 2500 0 0.5 1 잔고 balance (달러) 연체 확률 0보다 작은 「확률」 선형회귀 로지스틱 회귀
그림 4.20/1로 코딩한 연체 여부(위아래 줄의 눈금)에 맞춘 선형회귀 직선은 [0, 1]을 벗어나고 S자 모양을 따라가지 못하지만, 로지스틱 회귀 곡선(4.2절)은 0과 1 사이에 머물며 잔고 약 1,937달러에서 0.5를 지난다. 곡선은 표 4.1의 계수로 그렸다. 예시 데이터(ISL 그림 4.2를 본뜸).
보충 · 「LDA와 같다」는 말

슬라이드는 이진 반응의 선형회귀가 분류기로서 쓸 만하고 선형판별분석(linear discriminant analysis, LDA)과 같다고 적었다. 클래스가 둘일 때 최소제곱 계수(coefficient) 벡터가 LDA의 판별 방향과 비례한다는 뜻이다. 결정 경계(decision boundary)를 어디서 자르는지는 두 클래스의 관측값(observation) 수가 같을 때만 일치한다(Hastie·Tibshirani·Friedman, The Elements of Statistical Learning, 2판, 연습문제 4.2). LDA는 4.11절에서 세우고, 이 비례 관계는 4.13절에서 다시 본다.

클래스가 셋 이상이면 문제가 더 근본적이다. 응급실 환자를 뇌졸중(stroke)·약물 과다복용(drug overdose)·뇌전증 발작(epileptic seizure)으로 분류하려고 1, 2, 3으로 코딩하면(ISL 4.2), 선형회귀는 세 클래스 사이에 순서가 있고 이웃한 두 클래스의 간격이 같다고 가정하게 된다. 코딩을 바꾸면 적합(fit)과 예측(prediction)이 달라지는데 어느 코딩이 옳다고 할 근거가 없다. 2.9절에서 범주형 feature를 한 열의 수로 넣지 않고 가변수(dummy variable)로 쪼갠 것과 같은 문제가 반응 쪽에서 생긴 것이다. 클래스가 둘일 때는 코딩을 뒤집어도 적합이 \(1 - \hat{y}\)로 대칭으로 바뀔 뿐이라 이 문제가 없다(보충). 이제 필요한 것은 확률을 직접 내놓는 모형이다. 이진은 4.2절, 셋 이상은 4.8절에서 세운다.

4.2 로지스틱 회귀 모형 The Logistic Regression Model

L05 s09–s12, s33 (앞당김) · ISL 4.3.1, 4.3.4

그림 4.2의 곡선처럼 양 끝이 각각 0과 1로 수렴(convergence)하는 S자 함수가 필요하다. 직선을 버리지 않고, 직선의 값을 S자 함수에 한 번 통과시키면 된다. 먼저 클래스가 둘인 이진 분류(binary classification)를 다룬다. 이 장은 로지스틱 회귀의 레이블(label)을 \(y \in \{-1, +1\}\)로 적고, +1을 양성 클래스(positive class), −1을 음성 클래스(negative class)라 부른다. Default에서는 연체가 +1이다. 0/1 대신 ±1을 쓰는 이유는 4.4절에서 두 클래스의 식이 하나로 합쳐지는 데서 드러나고, 0/1 코딩과의 대응도 거기서 보인다.

입력은 2.4절처럼 절편을 흡수한 \(p + 1\)차원(dimension) 벡터로 쓰고(슬라이드의 \(\R^d\)에서 \(d = p + 1\)), 입력과 계수 벡터의 선형 결합(linear combination)을 점수(score)라 부른다.

$$\begin{aligned} \bx &= (1, x_1, \dots, x_p)^\top, \qquad \bbeta = (\beta_0, \beta_1, \dots, \beta_p)^\top \\ s &= \bbeta^\top\bx = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p \end{aligned}$$

슬라이드는 「linear regression score」라 했는데, 최소제곱으로 맞춘다는 뜻이 아니라 선형회귀의 예측값과 같은 모양이라는 뜻이다. 점수는 어떤 실수든 될 수 있으므로, 점수가 크면 1에 가깝게, 음으로 크면 0에 가깝게, 0 근처면 0.5 근처로 보내는 함수가 필요하다.

정의 · 시그모이드 함수 $$\sigma(s) = \frac{1}{1 + e^{-s}} \tag{4.2}$$

\(s \to \infty\)이면 1로, \(s \to -\infty\)이면 0으로 수렴하고 \(\sigma(0) = 1/2\)이다. 값의 범위는 열린 구간 \((0, 1)\)이다. ISL은 같은 함수를 로지스틱 함수(logistic function)라 부르고, 로지스틱 회귀라는 이름이 여기서 왔다.

이 시그모이드 함수(sigmoid function)의 두 성질을 뒤에서 거듭 쓴다(보충).

$$\begin{aligned} 1 - \sigma(s) &= \frac{e^{-s}}{1 + e^{-s}} = \frac{1}{e^{s} + 1} = \sigma(-s) \\ \sigma'(s) &= \frac{e^{-s}}{(1 + e^{-s})^2} = \sigma(s)\big(1 - \sigma(s)\big) \end{aligned}$$

첫째 식은 분자와 분모에 \(e^{s}\)를 곱한 것으로, 그림 4.3의 점대칭이 이것이다. 둘째 식에서 기울기는 \(s = 0\)에서 가장 커서 \(1/4\)이다.

−6 −4 −2 0 2 4 6 0.5 1 σ(0) = 1/2 1 − σ(2) = 0.12 σ(−2) = 0.12 s → ∞이면 1로 s → −∞이면 0으로 s
그림 4.3시그모이드는 어떤 점수든 0과 1 사이로 눌러 넣고 점 \((0, 1/2)\)에 대해 점대칭이다. \(s = 2\)에서 곡선 위로 남은 틈과 \(s = -2\)에서의 높이가 같다.
정의 · 로지스틱 회귀 (이진)

레이블 \(y \in \{-1, +1\}\)의 조건부 확률을 점수의 시그모이드로 둔다.

$$p(y = +1 \mid \bx) = \sigma(\bbeta^\top\bx), \qquad p(y = -1 \mid \bx) = 1 - \sigma(\bbeta^\top\bx) = \sigma(-\bbeta^\top\bx) \tag{4.3}$$

레이블의 부호를 쓰면 두 식이 하나가 된다.

$$p(y \mid \bx) = \sigma(y\,\bbeta^\top\bx) = \frac{1}{1 + e^{-y\,\bbeta^\top\bx}}, \qquad y \in \{-1, +1\} \tag{4.4}$$

\(p(y \mid \bx)\)는 모형이 주는 조건부 확률이고, 참 확률 \(\mathbb{P}(Y = y \mid X = \bx)\)와 구분하려고 소문자로 적는다. 파라미터를 드러낼 때는 \(p(y \mid \bx; \bbeta)\)로 쓴다. 출력(output)이 0과 1 사이라는 것만으로 확률이 되지는 않는다. 이 출력을 \(y\)의 조건부 분포(conditional distribution)로 삼아 가능도를 최대화하기 때문에(4.4절) 확률 모형이 된다. 이름은 회귀지만 반응변수가 이산(discrete)인 분류기다. 분류 규칙은 확률이 큰 쪽을 고르는 것이고, \(\sigma(s)\)가 증가함수이므로 점수의 부호만 보면 된다.

$$\hat{y} = +1 \iff \sigma(\bbeta^\top\bx) > \tfrac12 \iff \bbeta^\top\bx > 0$$

두 클래스를 가르는 결정 경계는 \(\bbeta^\top\bx = 0\)인 점들, 곧 초평면(hyperplane)이다(보충). feature가 하나면 점, 둘이면 직선이다.

로그 오즈와 여러 feature Log Odds and Multiple Features

식 (4.3)을 뒤집으면 모형의 다른 얼굴이 보인다. 사건이 일어날 확률 \(\theta\)에 대해 \(\theta/(1 - \theta)\)를 오즈(odds)라 하고, 그 로그를 로그 오즈(log odds)라 한다. 2.3절의 베르누이 분포처럼 양성 확률을 \(\theta = p(y = +1 \mid \bx)\)로 적고 \(s = \bbeta^\top\bx\)라 두자.

  1. \(\theta = 1/(1 + e^{-s})\), \(1 - \theta = e^{-s}/(1 + e^{-s})\)이므로 \(\theta/(1 - \theta) = e^{s}\)다.
  2. 로그를 취하면 $$\log\frac{p(y = +1 \mid \bx)}{1 - p(y = +1 \mid \bx)} = \bbeta^\top\bx = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p \tag{4.5}$$

로지스틱 회귀는 로그 오즈가 입력에 선형인 모형이다. 확률은 입력에 대해 S자로 굽지만 로그 오즈로 바꾸면 선형이 된다. feature가 여럿인 경우를 ISL은 다중 로지스틱 회귀(multiple logistic regression)라 부르는데(ISL 4.3.4), 처음부터 벡터로 적었으므로 식 (4.2)–(4.5)는 \(p\)가 몇이든 그대로이고 파라미터는 절편을 포함해 \(p + 1\)개다. 슬라이드도 「\(\bx\)와 \(\bbeta\)가 \((p+1)\)차원일 뿐 기본 꼴은 그대로다」라고 정리한다. 뒤 절들의 유도도 모두 이 벡터 꼴로 한다.

4.3 계수의 해석과 예측 Interpreting Coefficients and Making Predictions

L05 s13–s14 · ISL 4.3.1–4.3.4

Default 데이터에서 feature가 잔고 \(x\) 하나일 때 점수는 \(\beta_0 + \beta_1 x\)이고, 추정한 계수는 표 4.1과 같다. 계수를 추정하는 방법은 4.4절에서 보고, 여기서는 읽는 법을 본다.

표 4.1Default 데이터에서 연체를 잔고로 설명한 로지스틱 회귀의 계수(ISL 표 4.1)
추정값
절편 \(\hat\beta_0\)−10.6513
balance \(\hat\beta_1\)0.0055

\(\hat\beta_1 > 0\)이므로 잔고가 늘면 연체 확률이 는다. 방향만 보면 선형회귀의 해석과 같다. 그러나 크기를 말할 때는 식 (4.5)를 따라야 한다. 잔고가 1달러 늘면 로그 오즈가 0.0055 는다.

이를 오즈와 확률로 옮겨 보자(보충). 잔고가 1달러 늘면 오즈는 \(e^{0.0055} \approx 1.0055\)배, 100달러 늘면 \(e^{0.55} \approx 1.73\)배, 1,000달러 늘면 \(e^{5.5} \approx 245\)배가 되고, 이 배수는 잔고가 얼마이든 같다. 0.0055라는 수가 작아 보이는 것은 잔고의 단위가 1달러이기 때문이다. 이렇게 두 오즈를 나눈 값을 오즈비(odds ratio)라 하며, 잔고 1달러 차이의 오즈비가 \(e^{\beta_1}\)이다. 반면 확률의 변화량은 곡선의 어디에 있느냐에 따라 다르다. 4.2절의 도함수(derivative)에서 \(d\theta/dx = \beta_1\,\theta(1 - \theta)\)이므로, 기울기로 어림하면 \(\theta = 0.5\) 근처에서는 100달러당 약 0.14 오르지만 잔고 1,000달러(\(\theta \approx 0.006\)) 근처에서는 약 0.003 오를 뿐이다(실제로 1,100달러까지 가면 0.0099로 약 0.004 오른다).

예 · 잔고 1,000달러와 2,000달러의 연체 확률

슬라이드는 \(e^{s}/(1 + e^{s})\) 꼴로 계산하는데, 분자와 분모를 \(e^{s}\)로 나누면 \(\sigma(s)\)와 같다.

  1. 1,000달러: \(s = -10.6513 + 0.0055 \times 1000 = -5.1513\), \(e^{s} \approx 0.00580\), \(\theta = 0.00580/1.00580 \approx 0.00576\), 곧 약 0.006.
  2. 2,000달러: \(s = -10.6513 + 11 = 0.3487\), \(e^{s} \approx 1.417\), \(\theta = 1.417/2.417 \approx 0.586\).

0.5를 기준으로 분류하면 점수가 0이 되는 잔고 \(10.6513/0.0055 \approx 1{,}937\)달러가 경계다. 2,000달러인 사람은 Yes로 분류되고, 모형에 따르면 그 분류가 틀릴 확률은 \(1 - 0.586 = 0.414\)다. 한편 이 경계는 연체한 사람 대부분의 잔고보다 크다(그림 4.1의 상자그림). 연체율이 약 3%라 연체 확률이 0.5를 넘기 어려운 탓으로(보충), 기준을 어디에 둘지는 4.15절의 평가와 이어지는 문제다.

feature가 여럿이면 계수의 해석에 2.8절과 같은 조건이 붙는다(보충). \(\beta_j\)는 다른 feature를 모두 고정했을 때 \(X_j\)가 1 늘면 로그 오즈가 얼마나 느는지다. feature끼리 상관(correlation)이 있으면 이 조건이 결과를 바꾼다.

보충 · 학생 여부의 계수가 부호를 바꾸는 예 (ISL 4.3.4)

Default 데이터에서 학생 여부 하나만 넣으면 student[Yes]의 계수가 0.4049로 학생이 더 연체하는 것처럼 보이지만(ISL 표 4.2), 잔고·소득과 함께 넣으면 −0.6468로 같은 잔고·소득이라면 학생이 덜 연체한다(ISL 표 4.3). 학생은 대체로 잔고가 크고 잔고가 크면 연체하기 쉬워서, 잔고를 고정하지 않은 비교에는 잔고의 효과가 섞여 든다.

4.4 최대가능도 추정과 로그 손실 Maximum Likelihood Estimation and the Log-Loss

L05 s15–s17, s38 (앞당김) · ISL 4.3.2

계수는 2.3절의 최대가능도로 추정한다. 관측값 \((\bx_i, y_i)\), \(i = 1, \dots, n\)이 입력이 주어졌을 때 서로 독립(independent)이라고 보면, 관측된 레이블들이 나올 확률은 관측값별 확률의 곱이다. 양성 관측값에서는 양성일 확률을, 음성 관측값에서는 음성일 확률을 곱하므로, 어느 쪽이든 실제로 관측된 레이블의 확률을 곱하는 셈이다.

$$L(\bbeta) = \prod_{i:\,y_i = +1} \sigma(\bbeta^\top\bx_i) \prod_{i:\,y_i = -1} \sigma(-\bbeta^\top\bx_i) = \prod_{i=1}^{n} p(y_i \mid \bx_i) \tag{4.6}$$

입력의 분포는 모형에 넣지 않고 \(\bx_i\)가 주어졌을 때 \(y_i\)의 확률만 곱했으므로 이것을 조건부 가능도(conditional likelihood)라 한다. 로지스틱 회귀는 \(p(y \mid \bx)\)만 모형화하므로 이것으로 충분하다. 슬라이드는 가능도를 필기체 \(\mathcal{L}(\beta)\)로 적었지만, 이 책은 2.3절의 약속대로 가능도를 \(L\), 로그가능도(log-likelihood)를 \(\ell\)로 적고 \(\mathcal{L}\)은 손실에 남긴다.

이 가능도는 베르누이 가능도다. 레이블을 0/1로 바꿔 \(z_i = (y_i + 1)/2\), \(\theta_i = \sigma(\bbeta^\top\bx_i)\)라 두면 \(p(y_i \mid \bx_i) = \theta_i^{z_i}(1 - \theta_i)^{1 - z_i}\)로, 2.3절의 베르누이 확률질량함수(probability mass function, pmf)에서 모든 관측값이 공유하던 \(\theta\)가 \(\bx_i\)에 따라 변하는 \(\theta_i\)로 바뀐 것이다. 공통 \(\theta\)였다면 MLE는 식 (2.9)의 표본(sample) 비율로 곧장 나왔지만, 이제는 \(\theta_i\)를 움직이는 \(\bbeta\)를 찾아야 한다.

로그를 취하면 곱이 합이 되고, ±1 코딩 덕분에 두 클래스의 항이 하나로 합쳐진다.

$$\log p(y_i \mid \bx_i) = \begin{cases} \log\sigma(\bbeta^\top\bx_i) & (y_i = +1) \\ \log\sigma(-\bbeta^\top\bx_i) & (y_i = -1) \end{cases} \;=\; \log\sigma(y_i\,\bbeta^\top\bx_i)$$ $$\ell(\bbeta) = \sum_{i=1}^{n} \log\sigma(y_i\,\bbeta^\top\bx_i) = -\sum_{i=1}^{n} \log\big(1 + e^{-y_i\bbeta^\top\bx_i}\big) \tag{4.7}$$

각 항에서 \(y_i\,\bbeta^\top\bx_i\)는 레이블과 점수의 곱으로, 점수의 부호가 레이블과 같으면(맞게 분류하면) 양수다. 이 값이 크면 항이 0에 가깝고, 음수로 크면 항이 크게 음수가 된다. 로그가능도는 자신 있게 맞힌 관측값에는 거의 벌점을 주지 않고 틀린 관측값에 큰 벌점을 주는 합이다.

정의 · 로그 손실

로지스틱 회귀의 MLE는 로그가능도를 최대화하고, 같은 말로 그 음수를 최소화한다. 이 음수가 로그 손실이다.

$$\begin{aligned} \mathcal{L}(\bbeta) &= -\ell(\bbeta) = \sum_{i=1}^{n} \log\big(1 + e^{-y_i\bbeta^\top\bx_i}\big) \\ \bhbeta &=\argmax_{\bbeta}\,\ell(\bbeta) = \argmin_{\bbeta}\,\mathcal{L}(\bbeta) \end{aligned} \tag{4.8}$$

2.4절에서 정규분포(normal distribution) 가정의 음의 로그가능도가 상수배와 상수항을 빼면 제곱오차(squared error)의 합이 되었듯, 베르누이 가정의 음의 로그가능도는 로그 손실이다. 두 모형 모두 「가능도를 최대화하는 것은 어떤 손실을 최소화하는 것」이라는 같은 길을 밟는다. 이제 2.3절의 방법대로 1계 조건(first-order condition)을 세운다.

  1. 관측값 하나의 항을 미분한다. \(\log u\)의 미분 \(u'/u\)와 연쇄법칙(chain rule)에서 $$\frac{\partial}{\partial\bbeta}\log\big(1 + e^{-y_i\bbeta^\top\bx_i}\big) = \frac{e^{-y_i\bbeta^\top\bx_i}}{1 + e^{-y_i\bbeta^\top\bx_i}}\,(-y_i\bx_i) = -y_i\bx_i\,\sigma(-y_i\,\bbeta^\top\bx_i)$$ 마지막 등호는 분자와 분모를 \(e^{-y_i\bbeta^\top\bx_i}\)로 나눈 것이다.
  2. 식 (4.7)의 부호를 붙여 더하면 1계 조건이 된다. $$\nabla\ell(\bbeta) = \sum_{i=1}^{n} y_i\bx_i\,\sigma(-y_i\,\bbeta^\top\bx_i) = \mathbf{0} \tag{4.9}$$

\(\sigma(-y_i\,\bbeta^\top\bx_i) = 1 - p(y_i \mid \bx_i)\)는 모형이 관측값 \(i\)를 틀릴 확률이다. gradient는 각 관측값의 방향 \(y_i\bx_i\)를 틀릴 확률로 가중해 더한 것이고, 1계 조건은 이 끌어당김이 균형을 이루는 점이다. 0/1 레이블로 다시 쓰면 선형회귀의 정규방정식(normal equation)과 나란히 놓인다. 아래 왼쪽이 0/1로 쓴 식 (4.9)이고, 오른쪽이 2.5절의 설계행렬(design matrix) \(\bX\)로 적은 식 (2.15)다.

$$\sum_{i=1}^{n} (z_i - \theta_i)\,\bx_i = \mathbf{0}, \qquad \bX^\top(\by - \bX\bbeta) = \sum_{i=1}^{n} (y_i - \bbeta^\top\bx_i)\,\bx_i = \mathbf{0}$$

둘 다 「잔차(residual) × 입력의 합 = 0」 꼴이다. 다른 점은 하나다. 정규방정식은 \(\bbeta\)에 일차식이라 식 (2.16)의 닫힌 형태의 해(closed-form solution) \(\bhbeta = (\bX^\top\bX)^{-1}\bX^\top\by\)가 나왔지만, 식 (4.9)는 관측값마다 \(\bbeta\)가 시그모이드 안에 들어 있어 \(\bbeta = \cdots\) 꼴로 풀어 낼 수 없다. 해가 없다는 뜻이 아니라 해를 식으로 적을 수 없다는 뜻이다. 해를 찾아가는 방법이 4.5–4.7절의 주제다.

보충 · 로그가능도는 오목하다

식 (4.9)를 한 번 더 미분하면 헤세 행렬(Hessian matrix)은 \(\mathbf{H} = -\sum_i \theta_i(1 - \theta_i)\,\bx_i\bx_i^\top\)이다. 아무 \(\mathbf{v}\)에 대해 \(\mathbf{v}^\top\mathbf{H}\mathbf{v} = -\sum_i \theta_i(1 - \theta_i)(\bx_i^\top\mathbf{v})^2 \le 0\)이므로 \(\mathbf{H}\)는 음의 준정부호(negative semidefinite)이고 \(\ell\)은 오목(concave)하다. 그래서 2.3절의 조건대로 정류점(stationary point)이 있으면 그것이 곧 전역 최대이고, \(\bX\)의 열이 선형독립(linear independence)이면 하나뿐이다. 4.6절의 경사하강법이 엉뚱한 극대(local maximum)에 걸릴 걱정이 없다는 뜻이다.

주의 · 최대점이 없는 경우(보충)

두 클래스를 초평면 하나로 완전히 가를 수 있는, 곧 선형 분리 가능(linearly separable)한 데이터에서는 최대점이 없다. 모든 관측값을 맞히는 \(\bbeta\)를 두 배, 세 배로 키우면 모든 \(y_i\bbeta^\top\bx_i\)가 커져 로그가능도가 0을 향해 계속 오르기 때문이다. 계수가 한없이 커지므로 소프트웨어는 경고를 내거나 아주 큰 값을 낸다. 계수에 벌점을 주는 규제(regularization)가 한 가지 해결책이며, 규제는 제5장에서 다룬다.

4.5 최적화 문제로서의 훈련 Training as an Optimization Problem

L05 s20–s24

1.2절의 네 단계에 로지스틱 회귀를 넣어 보자. 1단계의 모형은 식 (4.4)이고, 4단계에서는 새 입력의 \(p(y = +1 \mid \bx)\)를 계산해 0.5와 견준다. 2단계의 목표는 슬라이드가 1.2절의 「\(y \approx f(\bx)\)」를 그대로 두었지만, 정확히는 로그가능도의 최대화, 곧 로그 손실의 최소화다. 막히는 곳은 3단계의 훈련이다. 선형회귀는 이 단계를 식 (2.16) 한 번으로 끝냈지만, 로지스틱 회귀는 식 (4.9)를 풀 수 없다. 1.6절에서 닫힌 해가 없을 때 쓴다고 예고한 수치적 방법(numerical method)이 필요하다.

정의 · 최적화

수학적 최적화(mathematical optimization), 다른 이름으로 수리계획법(mathematical programming)은 가능한 대안들의 집합에서 어떤 선택 기준(criterion)에 비추어 가장 좋은 원소를 고르는 일이다. 고르는 것이 변수, 기준이 되는 값이 목적함수(objective function), 대안의 집합을 정하는 조건이 제약조건(constraint)이다.

슬라이드는 두 예로 이 세 요소를 짚는다. 첫째는 꼭대기가 \((0, 0, 4)\)인 곡면의 가장 높은 점을 찾는 문제로, 변수는 \(x, y\), 목적함수는 높이 \(z\)이고 제약조건은 없다. 둘째는 고등학교 교재의 선형계획법(linear programming) 문제로, 목적함수 \(2x + 3y\)(포만감)와 제약조건이 모두 일차식이다. 그림 4.4처럼 목적함수의 등고선(contour) \(2x + 3y = k\)를 \(k\)가 커지는 쪽으로 밀면, 제약조건을 만족하는 영역에 마지막으로 닿는 꼭짓점 \((350, 150)\)에서 최댓값 1150이 나온다. 네 꼭짓점의 값 0, 1000, 1150, 1080을 견주어도 같은 답이다.

0 200 400 600 0 200 400 x y k = 600 (350, 150) 최대 1150 변수 (best element) x, y 선택 기준 (criterion) 목적함수 2x + 3y 대안의 집합 칠한 영역: 3x + 5y ≤ 1800, x + y ≤ 500, x ≥ 0, y ≥ 0 점선은 2x + 3y = k. k를 키우며 밀면 영역에 마지막으로 닿는 꼭짓점이 답이다. 꼭짓점 값: 0 · 1000 · 1080 · 1150
그림 4.4선형계획법에서는 목적함수의 등고선(점선)을 커지는 쪽으로 밀어 제약조건의 영역에 마지막으로 닿는 꼭짓점을 찾는다(L05 s22의 교재 풀이를 다시 그림).

기계학습(machine learning)의 훈련도 같은 틀이다. 변수는 파라미터 \(\bbeta\), 선택 기준은 예측 \(\hat{y}\)가 정답 \(y\)에서 얼마나 벗어났는지를 재는 손실함수(loss function) \(\mathcal{L}(\hat{y}, y)\)를 훈련 데이터(training data) 전체에서 더한 \(\mathcal{L}(\bbeta)\)이며, 대안의 집합은 보통 제약 없는 \(\R^{p+1}\)이다. 최대화와 최소화는 부호만 다르므로(\(\ell\)의 최대화 = \(-\ell\)의 최소화) 이제부터 「손실을 최소화한다」로 통일한다. 로지스틱 회귀의 손실은 식 (4.8)의 로그 손실이다.

도함수를 풀지 않고 최솟값을 찾는 소박한 방법들이 있다. 전수 탐색(exhaustive search)은 파라미터마다 후보 \(m\)개를 격자로 두고 모든 조합(combination)을 계산하는데, 파라미터가 \(p + 1\)개면 \(m^{p+1}\)번이 들어 3.2절의 \(2^p\)와 같은 폭발을 겪는다. 무작위 탐색(random search)은 후보를 무작위로 뽑아 가장 좋은 것을 남기지만 좋은 점을 뽑을 보장이 약하다. 시각화(visualization)는 파라미터가 한두 개일 때만 된다. 탐욕 탐색(greedy search)은 다른 변수를 고정하고 한 변수씩 차례로 푸는데, 이것을 다듬은 것이 좌표 하강법(coordinate descent)이다(3.4절의 stagewise가 계수를 하나씩 맞춘 것과 닮았다). 넷 모두 지금 자리에서 어느 방향으로 내려가야 하는지, 곧 손실의 국소적인 gradient 정보를 쓰지 않는다. 다음 절이 그 정보를 쓴다.

4.6 경사하강법 Gradient Descent

L05 s25–s27

경사하강법의 발상은 지금 자리에서 손실의 gradient를 구해 그 반대 방향으로 조금 움직이기를 되풀이하는 것이다. 반대 방향인 이유는 gradient가 한 점에서 함수를 가장 잘 근사하는 일차식을 준다는 데 있다. 이것을 선형 근사(linear approximation)라 한다.

$$\mathcal{L}(\bbeta + \boldsymbol\Delta) \approx \mathcal{L}(\bbeta) + \nabla\mathcal{L}(\bbeta)^\top\boldsymbol\Delta$$

걸음 \(\boldsymbol\Delta\)의 길이를 정해 두면, 내적(inner product) \(\nabla\mathcal{L}^\top\boldsymbol\Delta\)가 가장 작은 방향, 곧 \(\boldsymbol\Delta\)가 \(-\nabla\mathcal{L}\)을 향할 때 손실이 가장 많이 준다(보충). 근사는 점 가까이에서만 맞으므로 걸음은 작아야 한다. 이를 식으로 적은 것이 갱신(update) 식이다.

$$\bbeta^{\text{new}} = \bbeta^{\text{old}} - \alpha\,\nabla\mathcal{L}(\bbeta^{\text{old}}), \qquad \beta_j^{\text{new}} = \beta_j^{\text{old}} - \alpha\,\frac{\partial\mathcal{L}}{\partial\beta_j}\bigg|_{\bbeta^{\text{old}}} \tag{4.10}$$

뒤의 식은 성분 하나로 적은 같은 식이다(슬라이드의 성분 첨자 \(i\)를 \(j\)로 바꿨다). 모든 성분을 같은 \(\bbeta^{\text{old}}\)에서 계산한 gradient로 한꺼번에 고친다는 점이 좌표 하강법과 다르다. \(\alpha > 0\)은 한 걸음의 크기를 정하는 학습률(learning rate)이다. 슬라이드에 이름은 없지만 3.5절이 말한 학습 하이퍼파라미터의 대표로, 여러 값을 시험해 그 절차대로 검증 데이터(validation set)에서 고른다. 실제 걸음은 학습률과 gradient 크기의 곱이라, 최소점에 가까워 gradient가 작아지면 걸음도 저절로 짧아진다(그림 4.5).

β β L(β) 기울기 < 0 → β를 키운다 기울기 > 0 → β를 줄인다
그림 4.5기울기의 부호가 움직일 방향을, 기울기의 크기가 걸음의 크기를 정한다. 왼쪽에서 출발하면 기울기가 음수라 \(\beta\)가 커지고 오른쪽에서 출발하면 작아지며, 최소점에 가까울수록 걸음이 짧아진다(L05 s25–s26을 다시 그림).
알고리즘 · 경사하강법 (L05 s26의 의사코드)
  1. \(\bbeta\)를 무작위 초깃값(initial value)으로 둔다.
  2. 지금의 \(\bbeta\)에서 gradient \(\mathbf{g} = \nabla\mathcal{L}(\bbeta)\)를 훈련 데이터로 계산한다.
  3. \(\bbeta \leftarrow \bbeta - \alpha\,\mathbf{g}\)로 갱신한다.
  4. \(\lVert\mathbf{g}\rVert\)가 정해 둔 임곗값(threshold) 이하이면 멈추고, 아니면 2로 돌아간다.

로지스틱 회귀에서는 \(\nabla\mathcal{L}(\bbeta)\)가 식 (4.9)에 음수 부호를 붙인 것이므로, 한 번의 갱신은 다음과 같다(보충).

$$\bbeta \leftarrow \bbeta + \alpha\sum_{i=1}^{n} y_i\bx_i\,\sigma(-y_i\,\bbeta^\top\bx_i)$$

모든 관측값이 틀릴 확률만큼씩 \(\bbeta\)를 제 방향 \(y_i\bx_i\)로 당긴다. 4.4절에서 보았듯 로그가능도가 오목하므로 그 음수인 로그 손실은 볼록(convex)하고, 최소점이 있으면(선형 분리 가능하지 않으면) 학습률이 알맞을 때 어디서 출발해도 그 점으로 다가간다. 다가가는 데 몇 번의 갱신이 들지는 미리 알 수 없으므로, 실제로는 4단계의 임곗값과 함께 갱신 횟수의 상한도 둔다(보충).

보충 · 학습률이 크면 발산한다

\(\mathcal{L}(\beta) = \tfrac12(\beta - 1)^2\)이면 gradient가 \(\beta - 1\)이라 갱신 후의 거리는 \(\beta^{\text{new}} - 1 = (1 - \alpha)(\beta^{\text{old}} - 1)\)이다. \(\alpha < 1\)이면 한쪽에서 다가가고, \(\alpha = 1\)이면 한 걸음에 닿고, \(1 < \alpha < 2\)이면 좌우로 튀며 다가가고, \(\alpha > 2\)이면 거리가 매번 커져 발산한다. 학습률이 너무 작으면 느리고 너무 크면 바닥을 지나쳐 튀어 나간다.

경사하강법의 세 가지 문제 Potential Problems

슬라이드는 세 가지 문제를 든다. 첫째, 손실 곡면이 볼록하지 않을 수 있다. 골과 봉우리가 여럿이면 주변에서만 가장 낮은 극값(local optimum)이나, 어떤 방향으로는 오르고 다른 방향으로는 내리는 안장점(saddle point)에서도 gradient가 0이라 경사하강법이 멈추고, 그곳이 전역 최적(global optimum)이라는 보장이 없다. 로지스틱 회귀의 로그 손실은 볼록이라 해당하지 않지만, 제2부의 인공신경망(artificial neural network)에서는 이 문제가 본격적으로 나온다.

둘째, 손실함수가 미분가능(differentiable)해야 한다. 분류에서 가장 자연스러운 손실은 틀리면 1, 맞으면 0인 0-1 손실(0-1 loss)이고, 훈련 데이터에서 평균(mean)을 내면 식 (1.10)의 오분류율(misclassification error rate)을 훈련 데이터로 잰 값이 된다. 그러나 레이블과 점수의 곱으로 보면 0-1 손실은 \(ys \le 0\)이면 1, 아니면 0인 계단 함수(step function)라 거의 모든 곳에서 기울기가 0이다. 그래서 대신 최소화하는 매끄러운 함수를 대리 손실(surrogate loss)이라 하며, 로그 손실이 그 예다(그림 4.6).

−3 −2 −1 0 1 2 3 0 1 2 3 레이블 × 점수 ys 틀리게 분류(ys < 0) 맞게 분류(ys > 0) 0-1 손실 log 2 ≈ 0.69 로그 손실
그림 4.6(보충) 0-1 손실은 평평한 계단이라 기울기가 없지만, 로그 손실 \(\log(1 + e^{-ys})\)는 어디서나 기울기가 있어 경사하강법이 내려갈 방향을 준다. 틀린 쪽(\(ys < 0\))에서는 거의 직선으로 커지고, \(ys = 0\)에서 \(\log 2\)다.

셋째, 느리다. 한 번 갱신할 때마다 모든 관측값의 gradient를 계산해 더하므로, 관측값이 수백만 개면 한 걸음의 계산량(computational cost)이 매우 크다. 이 문제를 다음 절이 푼다.

4.7 확률적 경사하강법과 훈련 Stochastic Gradient Descent and Training in Practice

L05 s28–s30

4.6절의 셋째 문제는 gradient를 매번 전부 계산하지 않고 관측값 일부로 어림해서 푼다. 한 걸음은 덜 정확해지지만 훨씬 싸진다.

정의 · 확률적 경사하강법

매 갱신마다 훈련 데이터 전체가 아니라 무작위로 뽑은 일부, 곧 미니배치(mini-batch) \(\mathcal{B}\)로 gradient를 어림하는 방법이 확률적 경사하강법(stochastic gradient descent, SGD)이다. 관측값 \(i\) 하나의 손실을 \(\mathcal{L}_i(\bbeta)\)라 하면 갱신은 다음과 같다.

$$\bbeta^{\text{new}} = \bbeta^{\text{old}} - \alpha\,\frac{1}{\lvert\mathcal{B}\rvert}\sum_{i \in \mathcal{B}} \nabla\mathcal{L}_i(\bbeta^{\text{old}}) \tag{4.11}$$

로지스틱 회귀에서는 \(\mathcal{L}_i(\bbeta) = \log(1 + e^{-y_i\bbeta^\top\bx_i})\)이고, 식 (4.8)의 로그 손실은 그 합이다.

미니배치를 무작위로 뽑으므로 미니배치 평균 gradient의 기댓값은 전체 평균 gradient와 같다. 곧 전체 gradient의 불편(unbiased) 추정이어서, 한 걸음 한 걸음은 틀린 방향을 가리킬 수 있어도 평균적으로는 옳은 방향이다(보충). 식 (4.8)은 합으로, 식 (4.11)은 평균으로 적었는데 둘은 상수 \(n\)배 차이라 최소점은 같고 학습률의 크기만 달라진다. 미니배치 크기가 1이면 관측값 하나마다 갱신하는 극단이고, \(n\)이면 식 (4.10)의 보통 경사하강법으로 이것을 배치 경사하강법(batch gradient descent)이라고도 한다. 흔히 그 사이의 32, 64, …, 8192를 쓰며, 최적 크기는 문제와 데이터, 그리고 미니배치를 한꺼번에 올려 계산할 하드웨어의 메모리에 달려 있다.

슬라이드는 미니배치가 작을 때는 두 배로 늘리면 gradient 추정이 크게 안정되지만, 커지면 얻는 것은 적고 비용만 두 배가 된다고 했다. 이것이 수확 체감(diminishing returns)이다. 관측값 하나의 gradient가 흩어진 정도를 표준편차(standard deviation) \(\sigma_g\)라 하면 미니배치 평균의 표준편차는 대략 \(\sigma_g/\sqrt{\lvert\mathcal{B}\rvert}\)라서, 크기를 두 배로 해도 잡음(noise)은 \(1/\sqrt2 \approx 0.71\)배로만 준다(보충). 크기 1에서 2로 가면 잡음이 \(0.29\sigma_g\)만큼 줄지만 1024에서 2048로 가면 \(0.009\sigma_g\)만큼 줄 뿐이다. 훈련 데이터를 한 바퀴 다 쓰는 것을 epoch이라 하며(보충), 한 epoch은 약 \(n/\lvert\mathcal{B}\rvert\)번의 갱신이다.

고쳐 쓴 지도학습 틀 The Revised Supervised Learning Framework

슬라이드는 이 과정을 1.2절의 네 단계로 다시 정리한다. 3단계가 한 번에 푸는 일에서 되풀이하는 훈련 루프(training loop)로 바뀐다(그림 4.7). 훈련 관측값을 모형에 넣어 예측하고(3-1), 예측을 정답 레이블(ground truth label)과 비교해 지금 얼마나 틀렸는지 재고(3-2), 그 손실로 파라미터를 고친다(3-3). 대부분의 훈련 데이터에서 예측이 정답에 가까워질 때까지 이를 되풀이한다. 비교하는 규칙이 손실함수이고 로지스틱 회귀에서는 로그 손실이며, 되풀이해 손실을 줄이는 일이 최적화로서 닫힌 해가 없으면 경사하강법이나 SGD를 쓴다. 표 4.2는 이 틀로 선형회귀와 로지스틱 회귀를 나란히 놓은 것이다(보충).

훈련 데이터 (xᵢ, yᵢ) 3-1 예측 p(y | xᵢ; β) 3-2 비교 3-3 갱신 L(ŷᵢ, yᵢ) β ← β − α∇L 대부분의 훈련 데이터에서 ŷᵢ ≈ yᵢ가 될 때까지 반복 — 최적화 닫힌 해가 없으면 (확률적) 경사하강법으로 손실함수 로지스틱 회귀는 로그 손실
그림 4.73단계는 예측하고, 정답과 비교해 손실을 재고, 그 손실로 파라미터를 고치는 일을 되풀이하는 루프다(L05 s29를 다시 그림).
표 4.2지도학습의 네 단계로 본 선형회귀와 로지스틱 회귀(보충)
단계선형회귀(제2장)로지스틱 회귀(이 장)
1 모형\(\hat{y} = \bbeta^\top\bx\)\(p(y \mid \bx) = \sigma(y\,\bbeta^\top\bx)\)
2 손실제곱오차의 합(정규분포의 음의 로그가능도와 최소점이 같다)로그 손실(베르누이의 음의 로그가능도)
3 최적화닫힌 해, 식 (2.16)닫힌 해 없음 → 경사하강법, SGD
4 예측\(\hat{y} = \bhbeta^\top\bx\)\(\bhbeta^\top\bx > 0\)이면 +1

훈련 곡선과 멈출 때 Training Curves and When to Stop

슬라이드의 실제 훈련 곡선은 훈련 손실(training loss)이 갱신을 거듭하며 약 4.6에서 0.35 근처까지 내려가는데, 원래 값은 위아래로 들쭉날쭉하다. 파라미터를 미니배치로만 갱신하고 그림에 찍힌 손실도 그 미니배치에서 잰 값이기 때문이다. 그림 4.8이 예시 데이터로 같은 모습을 재현한다. 미니배치에서 잰 손실은 크게 요동하지만, 전체 데이터의 손실은 갱신 횟수로 견주면 배치 경사하강법과 거의 같은 속도로 내려간다. 그런데 SGD의 갱신 한 번은 관측값 2,000개가 아니라 32개로 계산하므로 계산량이 약 1/60이다(보충). 언제 멈출지 묻는 슬라이드에 발표자 노트는 「안정될 때이지만 정의하기 어렵고 휴리스틱(heuristic)에 기댄다」고 답한다. 훈련 손실만으로는 과적합(overfitting)을 알 수 없으므로, 실제로는 3.5절의 검증 데이터에서 잰 손실이 더 줄지 않을 때 멈춘다. 이것이 제5장의 조기 종료(early stopping)다.

0 50 100 150 0.2 0.4 0.6 0.8 갱신 횟수 훈련 손실 경사하강법 · 전체 손실SGD(미니배치 32) · 전체 손실 연한 선: SGD의 미니배치에서 잰 손실
그림 4.8(보충) SGD의 미니배치 손실(연한 선)은 요동하지만, 전체 데이터의 손실은 갱신 횟수로 견주면 배치 경사하강법과 거의 같은 속도로 내려간다. 갱신 한 번의 계산은 SGD가 약 1/60이다. 예시 데이터(관측값 2,000개, feature 둘, 학습률 0.5, 미니배치 32).

4.8 다항 로지스틱 회귀와 softmax Multinomial Logistic Regression and Softmax

L05 s32, s34–s37 · ISL 4.3.5

지금까지는 feature가 하나이고 클래스가 둘이었다. feature가 여럿인 경우는 4.2절의 식 (4.5)에서 이미 풀었으므로, 남은 질문은 클래스가 셋 이상일 때다(슬라이드는 클래스 수를 \(K\)로 적었지만, 이 책은 \(K\)를 이름에 K가 든 방법에만 쓰므로 \(\lvert\mathcal{C}\rvert\)로 적는다). 이진 모형의 두 꼴은 셋 이상으로 곧장 넘어가지 않는다. 오즈 \(\theta/(1 - \theta)\)는 「그 클래스 대 나머지」의 비라 클래스가 둘일 때만 모형 하나로 충분하고, 시그모이드 꼴은 \(1 - \sigma(s) = \sigma(-s)\)가 남은 한 클래스의 확률이 된다는 데 기댄다. 클래스마다 \(\sigma(\bbeta_k^\top\bx)\)를 따로 두면 확률의 합이 1이 된다는 보장이 없다. 세 점수가 모두 0이면 합이 1.5다.

슬라이드는 이진 모형을 셋째 꼴로 고쳐 쓴다. 점수 \(s = \bbeta^\top\bx\)에 대해 분자와 분모에 같은 수를 곱한다.

  1. \(p(y = +1 \mid \bx) = \dfrac{1}{1 + e^{-s}} \cdot \dfrac{e^{s/2}}{e^{s/2}} = \dfrac{e^{s/2}}{e^{s/2} + e^{-s/2}}\)
  2. \(p(y = -1 \mid \bx) = \dfrac{1}{1 + e^{s}} \cdot \dfrac{e^{-s/2}}{e^{-s/2}} = \dfrac{e^{-s/2}}{e^{s/2} + e^{-s/2}}\)

두 확률의 분모가 같아지고 분모는 두 분자의 합이다. 여기서 \(\bbeta/2\)와 \(-\bbeta/2\)를 각각 \(\bbeta_{+1}\), \(\bbeta_{-1}\)로 부르면(슬라이드의 \(\beta_1'\), \(\beta_{-1}'\)) 클래스 \(k\)의 확률은 \(e^{\bbeta_k^\top\bx}\)를 모든 클래스에 대해 더한 값으로 나눈 것이 된다. 각 클래스가 자기 파라미터 벡터를 하나씩 가지므로, 이 꼴은 클래스가 몇 개든 그대로 쓸 수 있다.

정의 · softmax와 다항 로지스틱 회귀

클래스 \(k \in \mathcal{C}\)마다 파라미터 벡터 \(\bbeta_k\)와 점수 \(s_k = \bbeta_k^\top\bx\)를 두고

$$p(y = k \mid \bx) = \frac{e^{s_k}}{\sum_{l \in \mathcal{C}} e^{s_l}} \tag{4.12}$$

로 둔다. 점수 벡터를 이렇게 확률 벡터로 바꾸는 함수가 softmax이고, 이 모형이 다항 로지스틱 회귀(multinomial logistic regression)다(ISL 4.3.5). 슬라이드의 클래스 첨자 \(i\)와 합의 첨자 \(j\)를 \(k\)와 \(l\)로 바꿨다.

식 (4.12)가 확률의 조건을 만족하는지가 슬라이드의 마지막 물음이다. 지수는 늘 양수라 분자가 양수이고 분모는 분자를 포함한 양수들의 합이므로 각 값은 0과 1 사이에 있고, 모든 클래스의 분자를 더하면 분모이므로 합은 1이다. 가장 큰 점수의 클래스가 가장 큰 확률을 받지만 다른 클래스도 0이 아닌 확률을 남기므로 「부드러운 argmax」라는 뜻에서 softmax라 부른다. 그림 4.9가 계산의 예다.

2 1 1 2 −1 3 점수 sk 7.39 1 2.72 2 0.37 3 지수 exp(sk) 0.705 1 0.259 2 0.035 3 확률 = 지수 ÷ 합 합 = 10.47로 나눔 → 합 1
그림 4.9(보충) softmax는 점수를 지수로 바꾼 뒤 그 합으로 나눈다. 점수 2, 1, −1은 확률 0.705, 0.259, 0.035가 되어 순서는 그대로이고 합은 1이다.

두 성질을 덧붙인다(보충). 첫째, 클래스가 둘이면 \(e^{s_1}/(e^{s_1} + e^{s_2}) = \sigma(s_1 - s_2)\)로 이진 로지스틱 회귀로 돌아간다. 둘째, 모든 점수에 같은 수 \(c\)를 더하면 분자와 분모에 \(e^{c}\)가 똑같이 곱해져 확률이 그대로다. 그래서 모든 \(\bbeta_k\)에 같은 벡터를 더해도 확률이 변하지 않고, 파라미터 벡터 하나는 여분이다. \(\bbeta/2\)와 \(-\bbeta/2\)로 나눈 것은 가능한 선택 가운데 하나이고, 식 (4.3)은 \(\bbeta_{-1} = \mathbf{0}\)으로 고정한 선택이다. 2.9절에서 절편과 함께 수준(level)마다 one-hot 열을 모두 넣으면 한 열이 남아 계수가 하나로 정해지지 않았고(3.1절), 한 열을 빼는 가변수 코딩(dummy coding)으로 이를 피했다. 한 클래스의 벡터를 \(\mathbf{0}\)으로 고정하는 것이 그 가변수 코딩에 해당하며, ISL 4.3.5는 두 코딩이 같은 확률을 준다고 설명한다. 계산할 때는 둘째 성질을 써서 가장 큰 점수를 빼고 지수를 계산해 수가 넘치지 않게 한다.

보충 · 클래스가 여럿일 때의 로그 손실

훈련은 이진일 때와 같다. 조건부 로그가능도(conditional log-likelihood) \(\sum_i \log p(y_i \mid \bx_i)\)를 최대화하고, 닫힌 해가 없으니 경사하강법이나 SGD를 쓴다. 관측값 \(i\)의 정답을 클래스마다 한 칸씩 두어 정답 칸만 1인 one-hot 벡터로 적으면, 그 성분은 1.10절의 지시함수(indicator function)로 \(I(y_i = k)\)이고 손실은 다음과 같다.

$$\begin{aligned} \mathcal{L} &= -\sum_{i=1}^{n}\log p(y_i \mid \bx_i) \\ &= -\sum_{i=1}^{n}\sum_{k \in \mathcal{C}} I(y_i = k)\,\log p(y = k \mid \bx_i) \end{aligned} \tag{4.13}$$

정답의 one-hot 벡터와 softmax 확률 벡터를 칸마다 맞대는 이 꼴을 교차 엔트로피(cross-entropy)라 하며, 클래스가 둘이면 식 (4.8)의 로그 손실이 된다. 제9장의 softmax 분류기가 이 손실을 그대로 쓴다.

4.9 베이즈 분류기 The Bayes Classifier

L06 s03, s05–s08 · ISL 2.2.3, 4.4

4.1–4.8절은 조건부 확률을 추정하는 모형 하나를 세우고 훈련했다. 여기서는 물음을 한 걸음 물린다. 데이터를 만든 분포를 모두 안다면 가장 좋은 분류기는 무엇인가? 그 답이 베이즈 분류기이고, 이 장의 나머지 절은 그것을 데이터로 근사하는 방법과 그렇게 만든 분류기를 평가하는 방법이다.

출발점은 데이터가 어디서 오는가다. 훈련 데이터 \(n\)개는 입력과 레이블을 한 쌍으로 뽑는 어떤 결합분포(joint distribution)에서 독립동일분포(independent and identically distributed, i.i.d.)로 뽑혔다고 본다(2.3절). 분류는 이 분포에서 나온 \(\bx\)로 \(y\)를 맞히는 함수 \(f\)를 찾는 일, 곧 입력에서 레이블로 가는 함수 근사(function approximation)다. 레이블은 4.2절처럼 \(y \in \{-1, +1\}\)로 둔다. 분류를 다루는 이 장에서 \(f\)는 1.3절의 회귀함수가 아니라 분류기를 뜻한다.

정의 · 위험과 베이즈 분류기

분류기 \(f\)의 위험(risk)은 손실의 기댓값, 곧 기대 손실(expected loss)이다. 기댓값은 훈련 데이터가 아니라 참 결합분포 위에서 잡는다.

$$R(f) = \E\big[\mathcal{L}\big(f(X), Y\big)\big] \tag{4.14}$$

위험을 가장 작게 만드는 분류기 \(f^* = \argmin_f R(f)\)를 베이즈 분류기라 한다.

슬라이드는 손실을 \(\mathcal{L}(y, f(\bx))\)로 적었지만 이 책은 4.5절의 순서(예측, 정답)를 지킨다. 위험은 데이터가 아니라 참 분포 위의 기댓값이라, 4.7절의 훈련 손실처럼 데이터에서 잰 값이 아니다. 그래서 베이즈 분류기는 참 분포를 알아야만 계산할 수 있는, 이상적인 분류기다.

\(f\)를 통째로 고르는 문제는 입력마다의 문제로 쪼개진다(보충). 결합분포를 입력의 분포와 입력이 주어졌을 때 레이블의 분포로 나누어 기댓값을 두 번에 걸쳐 잡는 반복 기댓값의 법칙(law of iterated expectations)을 쓰면

$$R(f) = \E_X\Big[\,\sum_{k \in \mathcal{C}} \mathbb{P}(Y = k \mid X)\,\mathcal{L}\big(f(X), k\big)\Big]$$

이다. 괄호 안의 조건부 위험(conditional risk)은 그 입력에서 무엇을 예측하느냐에만 달려 있다. 바깥의 기댓값은 이것을 입력의 확률(음이 아닌 값)로 평균한 것이고 예측은 입력마다 따로 고를 수 있으므로, 모든 입력에서 괄호 안을 가장 작게 하면 위험 전체가 가장 작아진다. 조건부 위험은 1.5절의 평균제곱 예측오차(mean-squared prediction error)와 같은 자리에 있다. 1.5절에서 그것을 입력마다 최소화해 조건부 기댓값을 얻은 것과 같은 논리다.

$$f^*(\bx) = \argmin_{\hat{y} \in \mathcal{C}}\ \sum_{k \in \mathcal{C}} \mathbb{P}(Y = k \mid X = \bx)\,\mathcal{L}(\hat{y}, k) \tag{4.15}$$

손실의 꼴을 정해야 답이 나온다. 슬라이드는 손실을 밝히지 않은 채 「목적함수에서 더 큰 항을 없애도록」 예측한다고 설명하는데, 이 설명이 전제하는 것은 4.6절의 0-1 손실이다(보충). 0-1 손실이면 식 (4.15)의 합은 \(\hat{y}\)가 아닌 클래스들의 확률, 곧 \(1 - \mathbb{P}(Y = \hat{y} \mid X = \bx)\)이므로 조건부 확률이 가장 큰 클래스를 고를 때 가장 작다.

$$f^*(\bx) = \argmax_{k \in \mathcal{C}}\ \mathbb{P}(Y = k \mid X = \bx) \tag{4.16}$$

이진 분류에서는 두 확률 가운데 큰 쪽이다. 슬라이드는 이것을 로그 비의 부호로 한 줄에 적는다.

$$f^*(\bx) = \operatorname{sign}\left(\log\frac{\mathbb{P}(Y = +1 \mid X = \bx)}{\mathbb{P}(Y = -1 \mid X = \bx)}\right)$$

분수가 1보다 크면 로그가 양수이고, 부호 함수(sign function) \(\operatorname{sign}(\cdot)\)이 양수에 +1, 음수에 −1을 준다. 분수는 이진이라 \(\mathbb{P}(Y = +1 \mid X = \bx)\)의 오즈이므로, 베이즈 분류기는 「로그 오즈가 양수면 +1」이다. 4.2절의 로지스틱 회귀는 바로 이 로그 오즈를 식 (4.5)에서 입력의 일차식으로 모형화했다. 두 확률이 같아 로그 비가 0인 점에서는 어느 쪽을 골라도 위험이 같다.

결과 · 회귀의 조건부 기댓값, 분류의 베이즈 분류기(보충)

제곱오차의 위험을 최소화하는 함수는 조건부 기댓값 \(\E[Y \mid X = \bx]\)였고(식 (1.4)), 0-1 손실의 위험을 최소화하는 함수는 식 (4.16)이다. 1.5절이 「나중에 다시」로 남긴 이야기의 분류판이다. 1.10절의 KNN(식 (1.12))은 조건부 확률을 이웃의 비율로 추정해 이 규칙을 흉내 낸 것이고, 로지스틱 회귀도 추정한 확률을 0.5와 견준다. 베이즈 분류기의 오분류율 \(1 - \E\big[\max_k \mathbb{P}(Y = k \mid X)\big]\)을 베이즈 오류율(Bayes error rate)이라 하며, 어떤 분류기도 이보다 낮출 수 없다. 1.5절의 줄일 수 없는 오차(irreducible error)에 해당한다.

남은 것은 조건부 확률을 어떻게 구하느냐다. 슬라이드는 베이즈 정리(Bayes' theorem)로 뒤집는다. 입력을 보기 전의 클래스 확률 \(\pi_k = \mathbb{P}(Y = k)\)를 사전확률(prior probability), 입력을 본 뒤의 확률 \(\mathbb{P}(Y = k \mid X = \bx)\)를 사후확률(posterior probability)이라 하고, 클래스 \(k\)에서 입력이 따르는 분포를 \(p(\bx \mid y = k)\)로 적는다. 입력이 연속이면 이것은 확률밀도함수(probability density function, pdf)다.

$$\mathbb{P}(Y = k \mid X = \bx) = \frac{\pi_k\,p(\bx \mid y = k)}{p(\bx)}, \qquad p(\bx) = \sum_{l \in \mathcal{C}} \pi_l\,p(\bx \mid y = l) \tag{4.17}$$

분모 \(p(\bx)\)는 입력의 주변분포(marginal distribution)로 모든 클래스에 같다. 그래서 두 사후확률의 비에서는 약분되고, 이진 베이즈 분류기는 사전확률과 클래스별 입력 분포만으로 적힌다(슬라이드는 \(\pi_1\), \(\pi_{-1}\)을 \(\alpha\), \(1 - \alpha\)로 적었다. 이 장의 \(\alpha\)는 학습률이다).

$$f^*(\bx) = \operatorname{sign}\left(\log\frac{\pi_1\,p(\bx \mid y = +1)}{\pi_{-1}\,p(\bx \mid y = -1)}\right) \tag{4.18}$$

슬라이드는 \(p(\bx \mid y)\)를 가능도라 부른다. 2.3절의 가능도가 파라미터를 바꿔 가며 본 확률이었다면, 여기서는 클래스를 바꿔 가며 본 확률이다. 사후확률을 곧바로 모형화하지 않고 이렇게 바꾸는 까닭은 식 (4.18)의 두 조각, 곧 클래스별 입력 분포와 사전확률이 데이터에서 훨씬 쉽게 추정되기 때문이다. 입력의 분포는 클래스마다 따로 적으면 되고, 사전확률은 클래스의 비율이다. 입력이 1차원이면 식 (4.18)은 그림 4.10처럼 사전확률을 곱한 두 밀도 가운데 큰 쪽을 고르는 규칙이다. 두 곡선이 만나는 점이 베이즈 결정 경계(Bayes decision boundary)이고, 곡선이 겹친 꼬리가 어떤 분류기로도 피할 수 없는 오류다.

−4 −2 0 2 4 입력 x 칠한 넓이 = 베이즈 오류율 9.4% 사전확률이 같을 때의 경계(0) 베이즈 결정 경계 x = 0.34 π−1 p(x | y = −1) π−1 = 0.7 π1 p(x | y = +1) π1 = 0.3 −1로 분류 +1로 분류
그림 4.10(보충) 베이즈 분류기는 사전확률을 곱한 밀도 \(\pi_k\,p(x \mid y = k)\)가 큰 클래스를 고르므로 두 곡선이 만나는 점이 결정 경계이고, 곡선이 겹친 꼬리의 넓이(칠한 부분)가 베이즈 오류율이다. 양성의 사전확률이 0.3으로 작아 경계가 두 평균의 한가운데보다 양성 쪽에 있다. 예시(분산 1, 평균 ±1.25인 두 정규분포).

4.10 생성 분류기와 판별분석 Generative Classifiers and Discriminant Analysis

L06 s10–s12 · ISL 4.4.1

식 (4.18)은 참 분포를 알 때의 이야기다. 실제로는 결합분포를 모르므로 훈련 데이터로 추정해야 하는데, 사후확률에 이르는 길이 두 가지다.

정의 · 생성 분류기와 판별 분류기

생성 분류기(generative classifier)는 클래스별 입력 분포 \(p(\bx \mid y = k)\)와 사전확률 \(\pi_k\)를 MLE로 추정하고 식 (4.17)로 사후확률을 계산한다. 판별 분류기(discriminative classifier)는 베이즈 정리를 쓰지 않고 사후확률 \(p(y \mid \bx)\)를 곧바로 추정한다.

\(\pi_k\,p(\bx \mid y = k)\)는 결합분포이므로 생성 분류기는 결합분포 전체를 추정하는 셈이다. 추정한 분포에서 새 \((\bx, y)\)를 만들어 낼 수도 있어서 생성이라는 이름이 붙었다(보충). 판별 분류기는 입력의 분포를 다루지 않는다. 4.4절의 로지스틱 회귀가 \(\bx_i\)를 주어진 것으로 두고 \(y_i\)의 확률만 곱한 조건부 가능도를 최대화한 것이 그 예다. 이름이 헷갈리기 쉽다. 이 절의 판별분석은 이름과 달리 생성 분류기다.

판별분석은 클래스마다 입력이 정규분포를 따른다고 가정한다. 클래스 \(k\)의 평균 벡터(mean vector)를 \(\boldsymbol\mu_k\), 공분산행렬(covariance matrix)을 \(\boldsymbol\Sigma_k\)라 하면 \(\bx \mid y = k \sim \mathcal{N}(\boldsymbol\mu_k, \boldsymbol\Sigma_k)\)이고(밀도의 식은 4.12절), 추정할 것은 \(\pi_k\), \(\boldsymbol\mu_k\), \(\boldsymbol\Sigma_k\)다. 여기서 \(\bx\)는 4.2절처럼 절편 성분 1을 붙인 벡터가 아니라 feature \(p\)개만 담은 벡터다. 평균 벡터와 차원이 같아야 하기 때문이다. 사전확률의 MLE는 클래스의 비율이다(보충). 클래스가 둘이면 2.3절의 베르누이 MLE 그대로이고, 셋 이상이어도 같다. 클래스 \(k\)의 훈련 관측값 수를 \(n_k\)라 하면 \(\hat\pi_k = n_k/n\)이다.

슬라이드는 이 과정을 그림 한 쌍으로 설명한다(그림 4.11). 왼쪽은 「신만 아는」 참 분포 두 개다. 두 클래스의 사전확률과 분산(variance)이 같아서 베이즈 결정 경계는 두 평균의 한가운데 0이다. 우리가 가진 것은 오른쪽 히스토그램(histogram)의 표본뿐이다. 표본에서 클래스별 평균과 공통 분산을 추정하고, 추정한 두 정규분포로 새 입력의 밀도를 견주어 분류한다. 그렇게 그은 경계(실선)는 참 경계(점선)에서 조금 벗어나 있다. ISL은 같은 설정에서 베이즈 오류율이 10.6%, 표본 20개씩으로 추정한 분류기의 시험 오류율이 11.1%라고 보고한다. 추정 때문에 치르는 값이 크지 않다.

−4 −2 0 2 4 참 분포(신만 안다) −1 +1 −4 −2 0 2 4 클래스마다 표본 20개 LDA 베이즈
그림 4.11참 분포(왼쪽)를 알면 베이즈 결정 경계(점선)를 그을 수 있지만, 실제로는 표본(오른쪽 히스토그램)에서 클래스별 평균과 공통 분산을 추정해 경계(실선)를 긋는다. 가는 곡선은 추정한 정규분포다. 예시 데이터(ISL 그림 4.4를 본뜸).

슬라이드가 덧붙인 말은 「사전확률은 개별 표본과 상관없이 각 클래스의 확률을 조정한다」이다. 식 (4.18)의 로그를 풀면 \(\log(\pi_1/\pi_{-1})\)이라는 같은 양이 모든 입력에 더해지므로, 사전확률은 경계를 사전확률이 작은 클래스 쪽으로 민다(그림 4.10). 드문 클래스로 분류하려면 그만큼 강한 증거가 필요하다는 뜻이다.

4.11 선형판별분석과 이차판별분석 Linear and Quadratic Discriminant Analysis

L06 s13–s17 · ISL 4.4.1, 4.4.3

가장 단순한 경우, 곧 입력이 스칼라 \(x\)인 경우부터 본다(\(p = 1\)). 클래스 \(k\)의 밀도를 \(\mathcal{N}(x; \mu_k, \sigma_k^2) = (2\pi\sigma_k^2)^{-1/2}\exp\{-(x - \mu_k)^2/(2\sigma_k^2)\}\)로 적고 식 (4.18)에 넣는다.

  1. 로그 안의 비를 쪼갠다. $$\log\frac{\pi_1\,\mathcal{N}(x; \mu_1, \sigma_1^2)}{\pi_{-1}\,\mathcal{N}(x; \mu_{-1}, \sigma_{-1}^2)} = \log\mathcal{N}(x; \mu_1, \sigma_1^2) - \log\mathcal{N}(x; \mu_{-1}, \sigma_{-1}^2) + \log\frac{\pi_1}{\pi_{-1}}$$
  2. \(\log\mathcal{N}(x; \mu, \sigma^2) = -\tfrac12\log(2\pi\sigma^2) - (x - \mu)^2/(2\sigma^2)\)이고, 두 클래스의 \(2\pi\)는 서로 지워진다.
  3. 모으면 다음과 같다. $$f^*(x) = \operatorname{sign}\left(-\frac12\log\frac{\sigma_1^2}{\sigma_{-1}^2} - \frac{(x - \mu_1)^2}{2\sigma_1^2} + \frac{(x - \mu_{-1})^2}{2\sigma_{-1}^2} + \log\frac{\pi_1}{\pi_{-1}}\right) \tag{4.19}$$

부호 안은 \(x\)의 이차식이다. \(x^2\)의 계수가 \(1/(2\sigma_{-1}^2) - 1/(2\sigma_1^2)\)이라, 두 분산이 다르면 이 항이 남는다.

최대가능도 추정 Maximum Likelihood Estimation

이제 두 평균과 두 분산을 데이터로 추정한다. 레이블이 주어졌을 때 입력의 로그가능도는 두 클래스의 합으로 갈린다.

$$\ell(\mu_1, \mu_{-1}, \sigma_1^2, \sigma_{-1}^2) = \sum_{i:\,y_i = +1}\log\mathcal{N}(x_i; \mu_1, \sigma_1^2) + \sum_{i:\,y_i = -1}\log\mathcal{N}(x_i; \mu_{-1}, \sigma_{-1}^2)$$

클래스 +1의 파라미터는 앞의 합에만, 클래스 −1의 파라미터는 뒤의 합에만 들어 있으므로 클래스마다 따로 최대화하면 되고, 각각은 2.3절의 정규분포 MLE 문제 그대로다. \(\mu_1\)로 미분해 0으로 두면 \(\sum_{i:\,y_i = +1}(x_i - \mu_1) = 0\)이고, \(\sigma_1\)로 미분하면 \(-n_1/\sigma_1 + \sigma_1^{-3}\sum_{i:\,y_i = +1}(x_i - \mu_1)^2 = 0\)이다(\(\sigma_1^2\)으로 미분해도 해는 같다). 클래스 −1도 같다.

$$\hat\mu_k = \frac{1}{n_k}\sum_{i:\,y_i = k} x_i, \qquad \hat\sigma_k^2 = \frac{1}{n_k}\sum_{i:\,y_i = k}(x_i - \hat\mu_k)^2 \tag{4.20}$$

클래스별 표본평균(sample mean)과 표본분산(sample variance)이다. 분모가 \(n_k\)인 것은 2.3절의 \(\hat\sigma^2\)이 \(n\)으로 나눈 것과 같다. 슬라이드의 \(\partial\ell/\partial\mu_1\)에는 앞에 음의 부호가 붙어 있지만 양의 부호가 맞다. 0으로 두는 식이라 결과는 같다.

보충 · 결합가능도와 사전확률

위의 로그가능도에는 \(p(x_i \mid y_i)\)만 들어 있다. 생성 분류기가 최대화하는 것은 결합분포의 가능도, 곧 결합가능도(full likelihood) \(\prod_i p(x_i, y_i) = \prod_i \pi_{y_i}\,p(x_i \mid y_i)\)이고, 그 로그는 \(\sum_i \log\pi_{y_i}\)에 위의 \(\ell\)을 더한 것이다. 앞의 합은 사전확률에만, 뒤는 평균과 분산에만 달려 있어 따로 최대화된다. 앞의 합을 최대화한 결과가 4.10절의 \(\hat\pi_k = n_k/n\)이다.

분산이 같으면: 선형판별분석 Equal Variances: LDA

두 클래스의 분산이 같다고, 곧 \(\sigma_1^2 = \sigma_{-1}^2 = \sigma^2\)이라고 하자. 식 (4.19)의 첫 항은 \(\log 1 = 0\)이 되고, 두 제곱을 풀면 \(x^2\)끼리 지워진다.

$$f^*(x) = \operatorname{sign}\left(\frac{\mu_1 - \mu_{-1}}{\sigma^2}\,x - \frac{\mu_1^2 - \mu_{-1}^2}{2\sigma^2} + \log\frac{\pi_1}{\pi_{-1}}\right) \tag{4.21}$$

부호 안이 \(x\)의 일차식 \(c_1 x + c_0\)이 된다. 이것이 4.1절에서 이름만 나온 LDA이고, 부호 안의 식이 입력에 선형이라 붙은 이름이다. 결정 경계는 일차식이 0인 점이다(보충). \(\mu_1 > \mu_{-1}\)이면

$$x^* = \frac{\mu_1 + \mu_{-1}}{2} + \frac{\sigma^2}{\mu_1 - \mu_{-1}}\log\frac{\pi_{-1}}{\pi_1}$$

로, 사전확률이 같으면 두 평균의 한가운데이고 \(\pi_1\)이 작을수록 \(\mu_1\) 쪽으로 밀린다. 그림 4.10의 경계 0.34가 \((1/2.5)\log(0.7/0.3)\)이다. 공통 분산을 어떻게 추정하는지는 슬라이드에 없다(보충). 클래스별 평균에서의 편차 제곱을 모든 클래스에 걸쳐 더한 합동분산(pooled variance) \(\hat\sigma^2 = \frac1n\sum_k\sum_{i:\,y_i = k}(x_i - \hat\mu_k)^2\)이 MLE이고, ISL은 \(n\) 대신 \(n - \lvert\mathcal{C}\rvert\)로 나눠 불편하게 만든다(ISL 식 4.20).

분산이 다르면: 이차판별분석 Unequal Variances: QDA

분산을 클래스마다 따로 두면 식 (4.19)의 부호 안이 그대로 분류 규칙의 식이고 \(x\)의 이차식이다. 이것이 이차판별분석(quadratic discriminant analysis, QDA)이다. 이차식이 0인 점은 둘일 수 있어서, 1차원 QDA에서는 분산이 큰 클래스가 양쪽 꼬리를 모두 차지하기도 한다(보충). 그림 4.12는 feature가 둘이고 두 클래스의 공분산행렬이 다를 때의 경계를 견준 것이다(식은 4.12절). 참 경계는 굽어 있어 QDA는 따라가지만 LDA는 직선이라 따라가지 못한다. 거꾸로 공분산행렬이 같으면 참 경계가 직선이라 LDA가 더 가깝다(ISL 그림 4.9 왼쪽).

그렇다고 QDA가 늘 나은 것은 아니다(보충, ISL 4.4.3). feature가 \(p\)개면 공분산행렬 하나에 파라미터가 \(p(p+1)/2\)개인데, LDA는 이것을 하나만, QDA는 클래스마다 하나씩 추정한다. 유연한 QDA는 편향(bias)이 작은 대신 분산이 크다. 1.9절의 편향-분산 트레이드오프(bias-variance trade-off)다. 훈련 데이터가 적으면 LDA가, 많거나 공분산행렬이 분명히 다르면 QDA가 낫다.

−4 −2 0 2 4 −4 −2 0 2 x1 x2 베이즈 결정 경계 QDA 경계(이차식) LDA 경계(직선) 클래스 +1 (공분산 0.7) 클래스 −1 (공분산 −0.5) 클래스마다 50개, 분산은 모두 1
그림 4.12두 클래스의 공분산이 다르면 베이즈 결정 경계(점선)가 굽는다. 클래스마다 공분산을 추정한 QDA의 경계(실선)는 그것을 가깝게 따라가지만, 공분산을 함께 쓰는 LDA의 경계(회색 점선)는 직선이라 따라가지 못한다. 예시 데이터(ISL 그림 4.9 오른쪽을 본뜸).

4.12 여러 feature와 여러 클래스의 판별분석 Discriminant Analysis with Many Features and Classes

L06 s18–s23 · ISL 4.4.2

feature가 \(p\)개면 각 클래스의 입력이 다변량 정규분포(multivariate normal distribution)를 따른다고 둔다(슬라이드는 입력 차원을 \(d\)로 적었다).

정의 · 다변량 정규분포 $$\mathcal{N}(\bx; \boldsymbol\mu, \boldsymbol\Sigma) = (2\pi)^{-p/2}\,\lvert\boldsymbol\Sigma\rvert^{-1/2}\exp\Big(-\tfrac12(\bx - \boldsymbol\mu)^\top\boldsymbol\Sigma^{-1}(\bx - \boldsymbol\mu)\Big) \tag{4.22}$$

\(\boldsymbol\mu\)는 \(p\)차원 평균 벡터, \(\boldsymbol\Sigma\)는 \(p \times p\) 공분산행렬이다. 대각 성분은 각 feature의 분산, \((j, j')\) 성분은 \(X_j\)와 \(X_{j'}\)의 공분산(covariance)이라 대칭이다. \(\lvert\boldsymbol\Sigma\rvert\)는 행렬식(determinant)이다.

Σ = 10 01 분산이 같고 상관이 없다 Σ = 20 00.5 분산이 다르다 Σ = 10.8 0.81 양의 상관
그림 4.13(보충) 공분산행렬이 등고선의 모양을 정한다. 단위행렬이면 원, 대각 성분이 다르면 축을 따라 늘어난 타원, 비대각 성분(공분산)이 양수면 오른쪽 위로 기운 타원이다. 평균은 모두 원점이다.

\(p = 1\)이면 \(\boldsymbol\Sigma = \sigma^2\)이라 4.11절의 1차원 밀도가 된다. 지수에 든 \((\bx - \boldsymbol\mu)^\top\boldsymbol\Sigma^{-1}(\bx - \boldsymbol\mu)\)는 공분산으로 잰 평균에서의 거리의 제곱이다. 그 제곱근을 마할라노비스 거리(Mahalanobis distance)라 하며(보충), \(\boldsymbol\Sigma = \bI\)이면 유클리드 거리(Euclidean distance)가 된다. 밀도가 같은 점을 이은 등고선은 타원이고, 그 모양을 공분산행렬이 정한다(그림 4.13). 슬라이드의 3차원 그림과 등고선 그림은 두 클래스의 밀도 언덕을 한 그림에 겹쳐 그린 것이다.

판별함수 The Discriminant Function

LDA는 모든 클래스가 공분산행렬 \(\boldsymbol\Sigma\)를 함께 쓴다고 가정한다. 사전확률을 곱한 밀도의 로그를 펼쳐 보자(보충).

  1. 식 (4.22)에 로그를 취한다. 마지막 두 항은 공분산행렬을 함께 쓰므로 모든 클래스에 같다. $$\begin{aligned} \log\{\pi_k\,\mathcal{N}(\bx; \boldsymbol\mu_k, \boldsymbol\Sigma)\} = {} &-\tfrac12(\bx - \boldsymbol\mu_k)^\top\boldsymbol\Sigma^{-1}(\bx - \boldsymbol\mu_k) + \log\pi_k \\ &- \tfrac{p}{2}\log 2\pi - \tfrac12\log\lvert\boldsymbol\Sigma\rvert \end{aligned}$$
  2. 첫 항의 괄호를 풀면 다음과 같다. \(\boldsymbol\Sigma^{-1}\)이 대칭이라 \(\bx^\top\boldsymbol\Sigma^{-1}\boldsymbol\mu_k\)와 \(\boldsymbol\mu_k^\top\boldsymbol\Sigma^{-1}\bx\)가 같아 하나로 합쳤다. $$-\tfrac12\bx^\top\boldsymbol\Sigma^{-1}\bx + \bx^\top\boldsymbol\Sigma^{-1}\boldsymbol\mu_k - \tfrac12\boldsymbol\mu_k^\top\boldsymbol\Sigma^{-1}\boldsymbol\mu_k$$
  3. 첫 항 \(-\tfrac12\bx^\top\boldsymbol\Sigma^{-1}\bx\)는 모든 클래스에 같으므로 클래스를 견줄 때 빠진다.
정의 · 판별함수(LDA) $$\delta_k(\bx) = \bx^\top\boldsymbol\Sigma^{-1}\boldsymbol\mu_k - \tfrac12\boldsymbol\mu_k^\top\boldsymbol\Sigma^{-1}\boldsymbol\mu_k + \log\pi_k \tag{4.23}$$

를 클래스 \(k\)의 판별함수(discriminant function)라 하고, 그 값인 판별 점수(discriminant score)가 가장 큰 클래스로 분류한다. \(p = 1\)이면 \(\delta_k(x) = \mu_k x/\sigma^2 - \mu_k^2/(2\sigma^2) + \log\pi_k\)다(ISL 식 4.18).

1단계의 식에서 클래스와 무관한 부분만 뺐으므로 \(\delta_k\)가 가장 큰 클래스는 \(\pi_k\,\mathcal{N}(\bx; \boldsymbol\mu_k, \boldsymbol\Sigma)\)가 가장 큰, 곧 사후확률이 가장 큰 클래스다. 슬라이드는 1차원판을 거꾸로 얻는다. 식 (4.21)의 부호 안을 클래스 +1의 몫과 −1의 몫으로 나누면 \(\delta_1(x) - \delta_{-1}(x)\)가 된다. 두 클래스가 같은 꼴의 점수를 가지므로, 클래스가 셋 이상이면 모든 클래스의 판별 점수를 계산해 \(\argmax_k \delta_k(\bx)\)를 고르면 된다. 이진의 부호 함수가 argmax로 넓어진 것이다. 두 클래스 사이의 경계 \(\delta_k(\bx) = \delta_l(\bx)\)는 \(\bx\)의 일차식이라 초평면이다. QDA에서는 이차항과 행렬식이 클래스마다 달라 지워지지 않고, 판별함수가 이차식으로 남는다(보충, ISL 식 4.28).

$$\delta_k(\bx) = -\tfrac12(\bx - \boldsymbol\mu_k)^\top\boldsymbol\Sigma_k^{-1}(\bx - \boldsymbol\mu_k) - \tfrac12\log\lvert\boldsymbol\Sigma_k\rvert + \log\pi_k$$

추정값(estimate)을 넣은 판별 점수 \(\hat\delta_k\)에 4.8절의 softmax를 씌우면 클래스별 확률이 된다.

$$\hat{\mathbb{P}}(Y = k \mid X = \bx) = \frac{e^{\hat\delta_k(\bx)}}{\sum_{l \in \mathcal{C}} e^{\hat\delta_l(\bx)}} \tag{4.24}$$

이것은 근사가 아니라 모형 안에서 정확한 사후확률이다(보충). \(\delta_k(\bx)\)는 \(\log\{\pi_k\,\mathcal{N}(\bx; \boldsymbol\mu_k, \boldsymbol\Sigma)\}\)에서 모든 클래스에 같은 양을 뺀 것이라, 지수를 취해 합으로 나누면 그 양이 약분되어 식 (4.17)이 된다. 식 (4.12)의 다항 로지스틱 회귀와 같은 softmax 꼴이고, 점수가 \(\bx\)의 일차식이라는 점도 같다(4.13절).

세 클래스의 예 An Example with Three Classes

공통 공분산 Σ(기운 타원) A B C Σ = I로 가정(원) A B C 흰 동그라미 = 클래스 평균 · 사전확률은 모두 1/3 · 실선 = 경계
그림 4.14세 클래스가 공분산을 함께 쓰면(왼쪽, 기운 타원) 참 파라미터로 그린 LDA의 경계, 곧 베이즈 결정 경계는 두 클래스씩의 직선이다. 공분산을 단위행렬로 가정하면(오른쪽, 원, 보충) 경계는 두 평균을 잇는 선분(회색 점선)의 수직이등분선이 되어 기울기가 바뀐다. 예시 데이터(ISL 그림 4.6을 본뜸).

슬라이드의 예(ISL 그림 4.6)는 feature가 둘, 클래스가 셋이고 사전확률과 공분산행렬이 모두 같은 경우다. 각 클래스의 정규분포를 나타낸 타원은 공분산을 함께 쓰므로 크기와 모양, 기운 방향이 같고 평균만 다르다. 두 클래스씩의 경계는 직선이고 세 직선은 한 점에서 만난다(그림 4.14 왼쪽). 슬라이드의 그림에서 표본 20개씩으로 추정한 LDA 경계는 참 분포로 그린 베이즈 결정 경계에 가깝고, 베이즈 경계는 4.9절대로 모든 분류기 가운데 오분류가 가장 적다.

슬라이드는 「공분산행렬이 모두 단위행렬(identity matrix)이라고 가정하면 결과가 어떻게 바뀌나」를 묻고 답은 남겨 둔다(보충 답). \(\boldsymbol\Sigma = \bI\)이면 \(\delta_k(\bx) = \bx^\top\boldsymbol\mu_k - \tfrac12\lVert\boldsymbol\mu_k\rVert^2 + \log\pi_k\)이고, 사전확률도 같으면 \(\lVert\bx\rVert^2\)이 모든 클래스에 같으므로

$$\argmax_k\,\delta_k(\bx) = \argmin_k\,\lVert\bx - \boldsymbol\mu_k\rVert^2$$

이다. 유클리드 거리로 가장 가까운 평균의 클래스를 고르는 최근접 평균 분류기(nearest centroid classifier)가 되고, 경계는 두 평균을 잇는 선분의 수직이등분선(perpendicular bisector)이다(그림 4.14 오른쪽). 이 가정은 feature 사이의 상관과 척도(scale) 차이를 무시하므로, 데이터의 타원이 기울어 있으면 경계가 어긋난다.

4.13 판별분석과 로지스틱 회귀 Discriminant Analysis and Logistic Regression

L06 s24–s25 · ISL 4.4, 4.5.1

사후확률을 곧바로 추정하는 로지스틱 회귀가 있는데 왜 판별분석을 쓰는가. 슬라이드는 세 가지 이유를 든다(ISL 4.4).

  1. 클래스가 잘 갈리면 로지스틱 회귀의 계수 추정이 놀랄 만큼 불안정하다. 극단이 4.4절의 주의 상자에서 본 선형 분리 가능한 경우로, 계수가 끝없이 커져 MLE가 없다. 경계 근처에 표본이 거의 없으니 데이터가 경계의 자리를 정해 주지 못한다. LDA는 평균과 분산만 추정하므로 이런 문제가 없다.
  2. \(n\)이 작고 각 클래스의 입력이 정규분포에 가까우면 LDA가 더 안정적이다. 가정이 맞을 때는 그 가정을 쓰는 추정의 분산이 작다.
  3. 클래스가 셋 이상일 때 널리 쓰인다. 데이터를 낮은 차원에서 보여 주기도 하기 때문이다. 공분산을 고려한 좌표에서 클래스 평균 \(\lvert\mathcal{C}\rvert\)개는 \(\lvert\mathcal{C}\rvert - 1\)차원 공간 안에 놓이므로, 데이터를 그 공간으로 옮겨 그리면 LDA의 분류에 필요한 정보를 잃지 않는다(보충, ESL 4.3.3).

두 방법은 생각보다 가깝다. 두 클래스의 LDA에서 로그 사후확률 비(로그 오즈)를 식 (4.23)으로 적으면 \(\bx\)의 일차식이다.

$$\begin{aligned} \log\frac{\mathbb{P}(Y = +1 \mid X = \bx)}{\mathbb{P}(Y = -1 \mid X = \bx)} &= \delta_1(\bx) - \delta_{-1}(\bx) = c_0 + \mathbf{c}^\top\bx \\ \mathbf{c} &= \boldsymbol\Sigma^{-1}(\boldsymbol\mu_1 - \boldsymbol\mu_{-1}) \end{aligned} \tag{4.25}$$

여기서 \(c_0 = -\tfrac12(\boldsymbol\mu_1 + \boldsymbol\mu_{-1})^\top\boldsymbol\Sigma^{-1}(\boldsymbol\mu_1 - \boldsymbol\mu_{-1}) + \log(\pi_1/\pi_{-1})\)이고(보충), \(p = 1\)이면 식 (4.21)의 부호 안이다. 판별분석의 \(\bx\)에는 절편 성분이 없어서 절편을 \(c_0\)로 따로 적었을 뿐, 식 (4.5)의 로지스틱 회귀와 같은 꼴이다. 4.1절의 보충 상자에서 0/1 선형회귀의 계수 벡터가 LDA의 판별 방향과 비례한다고 한 그 방향이 이 \(\mathbf{c}\)다.

결과 · 같은 꼴, 다른 추정

로지스틱 회귀는 조건부 가능도 \(\prod_i p(y_i \mid \bx_i)\)를 최대화해 계수를 곧바로 고른다. 이것을 판별 학습(discriminative learning)이라 한다. LDA는 결합가능도 \(\prod_i p(\bx_i, y_i)\)를 최대화해 \(\pi_k\), \(\boldsymbol\mu_k\), \(\boldsymbol\Sigma\)를 추정하고(4.11절), 계수는 식 (4.25)처럼 그 함수로 정해진다. 이것은 생성 학습(generative learning)이다. 실제로는 두 결과가 비슷할 때가 많다.

정규분포 가정이 대략 맞으면 LDA가, 맞지 않으면 로지스틱 회귀가 나을 것으로 기대한다(ISL 4.5.1). 로지스틱 회귀도 \(x_1^2\), \(x_1x_2\) 같은 이차 항을 feature로 넣으면 QDA처럼 굽은 경계를 그릴 수 있다. 2.10절의 다항회귀(polynomial regression)에서 본 대로 「선형」은 계수에 대한 말이기 때문이다.

4.14 나이브 베이즈 Naive Bayes

L06 s33–s39 (앞당김) · ISL 4.4.4

생성 분류기는 클래스별 입력 분포 \(p(\bx \mid y = k)\)를 어떻게 모형화하느냐로 갈린다. 판별분석이 다변량 정규분포를 썼다면, 나이브 베이즈는 조건부 독립(conditional independence)을 가정한다.

정의 · 나이브 베이즈의 가정 $$p(\bx \mid y = k) = \prod_{j=1}^{p} p(x_j \mid y = k) \tag{4.26}$$

레이블이 주어지면 입력의 성분들이 서로 독립이라고 본다(슬라이드는 입력 차원을 \(d\)로 적었다). 분류는 식 (4.17)대로 \(\pi_k\prod_j p(x_j \mid y = k)\)가 가장 큰 클래스를 고른다.

이 가정 덕분에 \(p\)차원 결합분포 대신 1차원 분포 \(p\)개만 추정하면 된다(보충). 성분이 범주형이면 클래스 안의 빈도를 세고, 연속이면 성분마다 정규분포를 둔다. 성분마다 정규분포를 두면 나이브 베이즈는 공분산행렬을 대각으로 둔 QDA와 같다(ISL 4.4.4).

이 가정은 현실적인가. 꽃 사진에서 이웃한 두 픽셀은 꽃이라는 클래스를 알아도 거의 같은 색이다. 문장을 단어마다 있으면 1, 없으면 0인 벡터(bag-of-words, 보충)로 적으면 「eats」가 있는 문장에는 「food」도 있기 쉽다. 같은 클래스 안에서도 성분들은 거의 늘 얽혀 있다. 나이브(순진한)라는 이름이 여기서 왔다(보충).

그런데도 나이브 베이즈는 놀랄 만큼 잘 작동한다. 곱으로 계산한 \(p(\bx \mid y)\)는 실제 확률과 멀지만, 분류에 필요한 것은 클래스 사이의 순서(argmax)뿐이기 때문이다. 기술과 정치를 가르는 텍스트 분류(text classification)에서 「AI」「ChatGPT」 같은 단어가 많은 문장은 곱으로 계산해도 기술 쪽 값이 더 크다. 대신 나이브 베이즈가 내놓는 확률 자체는 0이나 1로 치우치는 경향이 있어 그대로 믿기 어렵다(보충). 독립 가정은 편향을 늘리지만 추정할 것을 줄여 분산을 낮추는 선택이라, feature가 많고 데이터가 적을 때 특히 쓸모 있다(ISL 4.4.4).

Weather 데이터의 예 An Example: The Weather Data

슬라이드의 예제는 날씨 조건 넷과 그날 골프를 쳤는지를 적은 14일 치 Weather 데이터다(표 4.3). 사전확률은 Play Golf의 비율(9/14, 5/14)이고, 모든 feature가 범주형이라 각 조건부 확률은 클래스 안의 빈도로 추정한다. 클래스별 빈도를 센 빈도표(frequency table)를 그 클래스의 날 수로 나누면 가능도표(likelihood table)가 된다(표 4.4).

표 4.3Weather 데이터(L06 s36)
OutlookTempHumidityWindyPlay Golf
RainyHotHighFalseNo
RainyHotHighTrueNo
OvercastHotHighFalseYes
SunnyMildHighFalseYes
SunnyCoolNormalFalseYes
SunnyCoolNormalTrueNo
OvercastCoolNormalTrueYes
RainyMildHighFalseNo
RainyCoolNormalFalseYes
SunnyMildNormalFalseYes
RainyMildNormalTrueYes
OvercastMildHighTrueYes
OvercastHotNormalFalseYes
SunnyMildHighTrueNo
표 4.4Weather 데이터의 가능도표 — 값마다 클래스 안의 비율(L06 s38)
feature값Yes (9일)No (5일)
OutlookSunny · Overcast · Rainy3/9 · 4/9 · 2/92/5 · 0/5 · 3/5
TempHot · Mild · Cool2/9 · 4/9 · 3/92/5 · 2/5 · 1/5
HumidityHigh · Normal3/9 · 6/94/5 · 1/5
WindyFalse · True6/9 · 3/92/5 · 3/5
예 · 맑고 덥고 습하고 바람 없는 날

입력이 {Sunny, Hot, High, False}일 때 두 클래스의 \(\pi_k\prod_j p(x_j \mid y = k)\)를 표 4.4로 계산한다.

  1. Yes: \(\tfrac39\cdot\tfrac29\cdot\tfrac39\cdot\tfrac69 \approx 0.0165\)에 사전확률 \(\tfrac{9}{14}\)를 곱해 약 0.0106.
  2. No: \(\tfrac25\cdot\tfrac25\cdot\tfrac45\cdot\tfrac25 = 0.0512\)에 \(\tfrac{5}{14}\)를 곱해 약 0.0183.
  3. No 쪽이 크므로 예측은 No다. 두 값을 합으로 나누면 사후확률은 Yes 0.37, No 0.63이다(보충).

슬라이드는 Yes 쪽을 \(\tfrac{9}{14} \times 0.016 = 0.013\)으로 적었지만 이 곱은 약 0.010이다. 결론은 같다. 연습 문제 {Rainy, Cool, High, True}도 같은 방법으로 Yes 약 0.0053, No 약 0.0206이 나와 사후확률 0.2 대 0.8로 No다.

슬라이드는 실전에서 부딪히는 문제 둘을 짚는다. 하나는 영빈도 문제(zero-frequency problem)다. 표 4.4의 Overcast | No가 0/5이므로, 흐린 날이면 No의 곱이 조건과 상관없이 0이 되어 다른 모든 증거가 무시된다. 훈련 데이터에 한 번도 나오지 않은 조합의 확률을 0으로 추정한 탓이다. 모든 경우에 작은 확률을 기본으로 더해 막는데, 흔한 방법이 빈도에 1을 더하는 라플라스 평활(Laplace smoothing)이다(보충). \(x_j\)가 가질 수 있는 값이 \(V_j\)가지면

$$\hat{p}(x_j = v \mid y = k) = \frac{\operatorname{count}(x_j = v,\ y = k) + 1}{n_k + V_j}$$

이고, Overcast | No는 \((0 + 1)/(5 + 3) = 1/8\)이 된다. 흐리고 포근하고 습하고 바람 부는 날 {Overcast, Mild, High, True}는 평활하지 않으면 No의 곱이 0이라 Yes일 확률이 1이지만, 평활하면 두 클래스의 값이 약 0.0148과 0.0068이 되어 사후확률이 Yes 0.68, No 0.32다(보충). 다른 하나는 수치 문제다. feature가 많으면 1보다 작은 확률을 여러 번 곱한 값이 빠르게 0에 가까워져 컴퓨터가 0으로 처리하는 언더플로(underflow)가 생긴다(2.3절). 그래서 곱 대신 로그의 합 \(\log\pi_k + \sum_j\log p(x_j \mid y = k)\)로 견준다. 로그는 증가함수라 가장 큰 클래스가 바뀌지 않는다.

이 장의 분류기 넷을 나란히 놓으면 표 4.5와 같다(보충). 로그 오즈의 꼴은 ISL 4.5.1을 따랐다. 나이브 베이즈의 로그 오즈는 성분마다의 함수를 더한 꼴이다.

$$\log\frac{\pi_1}{\pi_{-1}} + \sum_{j=1}^{p}\log\frac{p(x_j \mid y = +1)}{p(x_j \mid y = -1)}$$

각 항은 성분 하나가 어느 클래스를 얼마나 편드는지 잰 증거이고, 나이브 베이즈는 이 증거를 더해 판정한다. 한 항이라도 확률 0을 만나면 합이 무한대로 튀는 것이 앞의 영빈도 문제다.

표 4.5이 장의 네 분류기(보충)
로지스틱 회귀LDAQDA나이브 베이즈
전략판별생성생성생성
\(p(\bx \mid y = k)\)다루지 않음정규분포, 공분산 공유정규분포, 클래스별 공분산성분끼리 독립
로그 오즈일차식일차식이차식성분별 함수의 합
훈련경사하강법(4.6절)평균·공분산·비율평균·공분산·비율빈도·비율

4.15 분류기의 평가 Evaluating Classifiers

L06 s28–s31 (뒤로) · ISL 4.4.2

분류기를 세웠으면 1.2절의 넷째 단계로 넘어가 분류기가 얼마나 좋은지 재야 한다. 4.1절의 Default 데이터(그림 4.1)에 잔고와 학생 여부로 LDA를 맞추고 그 예측을 실제 연체 여부와 대조한 것이 표 4.6이다. 예측한 클래스와 실제 클래스를 교차해 센 이런 표를 혼동행렬(confusion matrix)이라 한다(슬라이드에는 이름이 없다).

표 4.6Default 데이터에 맞춘 LDA의 혼동행렬 — 열은 실제, 행은 예측(ISL 표 4.4)
실제 No실제 Yes합
예측 No9,6442529,896
예측 Yes2381104
합9,66733310,000

틀린 것은 23명과 252명이라 오분류율은 \((23 + 252)/10{,}000 = 2.75\%\)다. 그런데 입력을 보지 않고 모두 No로 분류하는 영분류기(null classifier)도 333/10,000 = 3.33%밖에 틀리지 않는다(슬라이드의 「사전확률로 분류하기」). 연체자가 3%뿐이라 오분류율 하나로는 모자란다. 실제로 연체한 333명 가운데 LDA가 잡은 사람은 81명뿐이다. 게다가 이 수치는 훈련 데이터에서 잰 것이라 1.7절의 훈련오차(training error)처럼 낙관적이다. 제대로 재려면 3.5절처럼 떼어 둔 시험 데이터(test data)를 쓴다(보충).

정의 · 두 종류의 오류

양성(Yes)을 +1로 두면 혼동행렬의 네 칸은 참 양성(true positive, TP), 거짓 양성(false positive, FP), 거짓 음성(false negative, FN), 참 음성(true negative, TN)이다. 거짓 양성률(false positive rate) \(\mathrm{FP}/(\mathrm{FP} + \mathrm{TN})\)은 실제 음성 가운데 양성으로 분류된 비율, 거짓 음성률(false negative rate) \(\mathrm{FN}/(\mathrm{TP} + \mathrm{FN})\)은 실제 양성 가운데 놓친 비율이다.

표 4.6에서 거짓 양성률은 \(23/9{,}667 \approx 0.2\%\), 거짓 음성률은 \(252/333 \approx 75.7\%\)다. 카드사에는 연체자를 놓치는 쪽이 훨씬 비싸다. 이 비율들은 분야마다 이름이 다르다(보충, ISL 표 4.7). 실제 양성 가운데 맞힌 비율 \(\mathrm{TP}/(\mathrm{TP} + \mathrm{FN})\)은 1에서 거짓 음성률을 뺀 값으로 참 양성률(true positive rate)이라 하며, 민감도(sensitivity)나 재현율(recall)이라고도 부른다. 여기서는 24.3%다. 실제 음성 가운데 맞힌 비율 \(\mathrm{TN}/(\mathrm{TN} + \mathrm{FP})\)는 1에서 거짓 양성률을 뺀 값으로 특이도(specificity)라 하며 99.8%다. 양성으로 예측한 것 가운데 실제 양성의 비율 \(\mathrm{TP}/(\mathrm{TP} + \mathrm{FP}) = 81/104 \approx 77.9\%\)는 정밀도(precision)다.

임곗값 바꾸기 Varying the Threshold

표 4.6은 양성의 사후확률이 0.5 이상이면 Yes로 분류한 결과다. 0.5는 4.9절의 베이즈 분류기가 0-1 손실에서 쓰는 임곗값이다. 임곗값을 \(t\)로 바꿔 사후확률이 \(t\) 이상이면 Yes로 하면 두 오류율이 달라진다(그림 4.15). \(t\)를 낮추면 Yes가 늘어 거짓 음성률은 줄고 거짓 양성률은 커진다. ISL은 \(t = 0.2\)에서 거짓 음성률 41.4%, 전체 오분류율 3.73%를 보고한다(ISL 표 4.5). 슬라이드가 \(t\)를 낮추는 쪽을 「더 보수적」이라 한 것은 조금만 의심스러워도 연체로 보고 대비한다는 뜻이다.

0 0.1 0.2 0.3 0.4 0.5 0 0.2 0.4 0.6 0.8 임곗값 t (양성 사후확률이 t 이상이면 +1) 오류율 거짓 음성률 거짓 양성률 전체 오분류율
그림 4.15임곗값 \(t\)를 낮추면 거짓 음성률(파랑)이 줄고 거짓 양성률(주황)이 커지며, 전체 오분류율(검정)은 \(t\)가 아주 작을 때 크게 오른다. 예시 데이터(Default를 본뜬 모의 데이터에 잔고 하나로 맞춘 LDA라 수치가 ISL과 조금 다르다. ISL 그림 4.7을 본뜸).
보충 · 비용이 다르면 임곗값이 바뀐다

어느 \(t\)가 좋은지는 두 오류의 비용에 달렸다. 식 (4.15)에서 0-1 손실 대신 FN 하나의 손실을 \(c_{\mathrm{FN}}\), FP 하나의 손실을 \(c_{\mathrm{FP}}\)로 두면, Yes로 예측할 때의 조건부 위험은 \(c_{\mathrm{FP}}\,\mathbb{P}(Y = -1 \mid X = \bx)\)이고 No로 예측할 때는 \(c_{\mathrm{FN}}\,\mathbb{P}(Y = +1 \mid X = \bx)\)다. 그래서 \(\mathbb{P}(Y = +1 \mid X = \bx) > c_{\mathrm{FP}}/(c_{\mathrm{FP}} + c_{\mathrm{FN}})\)일 때 Yes가 위험이 작다. 연체자를 놓치는 손실이 네 배(\(c_{\mathrm{FN}} = 4c_{\mathrm{FP}}\))면 \(t = 0.2\)다. 임곗값을 고르는 일은 결국 손실을 고르는 일이다.

ROC 곡선과 AUC The ROC Curve and AUC

그러니 임곗값 하나에서 잰 지표(metric)로는 모형을 평가할 수 없다. ROC 곡선(receiver operating characteristic curve)은 \(t\)를 1에서 0까지 내리며 (거짓 양성률, 참 양성률)을 이은 곡선이다(그림 4.16). \(t = 1\)이면 아무도 양성으로 분류하지 않아 (0, 0), \(t = 0\)이면 모두 양성이라 (1, 1)이다. 좋은 분류기는 거짓 양성률을 조금만 올려도 참 양성률이 빨리 올라 곡선이 왼쪽 위 모서리에 붙고, 입력을 보지 않고 무작위로 양성이라 하면 대각선이 된다(보충). 곡선 아래 넓이 AUC(area under the curve)로 곡선 전체를 한 수로 요약하는데, 1이면 완벽하고 0.5면 무작위 수준이다. ISL은 이 LDA의 AUC를 0.95로 보고한다. AUC는 무작위로 고른 양성 하나의 점수가 무작위로 고른 음성 하나의 점수보다 높을 확률과 같아서 임곗값에 기대지 않는다(보충). 슬라이드 본문은 ROC 곡선이 거짓 음성률과 참 양성률을 보여 준다고 적었지만 두 축은 거짓 양성률과 참 양성률이고, 거짓 음성률은 1 − 참 양성률로 세로축에 들어 있다.

0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 거짓 양성률 참 양성률 t = 0.5 t = 0.2 AUC = 0.94 무작위(AUC = 0.5) 임곗값 t → 1 아무도 +1로 분류하지 않는다: (0, 0) 임곗값을 낮출수록 곡선을 따라 오른쪽 위로 간다 임곗값 t → 0 모두 +1로 분류한다: (1, 1)
그림 4.16ROC 곡선은 모든 임곗값의 (거짓 양성률, 참 양성률)을 잇는다. 곡선이 왼쪽 위 모서리에 붙을수록 좋고 곡선 아래 넓이가 AUC다. 점은 임곗값 0.5와 0.2, 점선 대각선은 무작위 분류다. 예시 데이터(그림 4.15와 같은 모형, ISL 그림 4.8을 본뜸).

제5장 과적합과 규제

Overfitting and Regularization

훈련(training)을 오래 하거나 모형(model)을 크게 하면 왜 처음 보는 데이터(unseen data)에서 오히려 나빠지며, 그것을 어떻게 다스리는가? 앞의 세 절(5.1–5.3)은 훈련 시간을 따라 과적합(overfitting)이 어떻게 드러나는지 보고 훈련을 언제 멈출지 정한다. 뒤의 여덟 절(5.4–5.11)은 모형의 크기를 다스리는 길로, 계수(coefficient)를 0 쪽으로 줄이는 규제(regularization), 곧 ridge 회귀와 lasso를 다룬다. 그러려고 1.7절의 시험오차(test error), 1.9절의 편향(bias)과 분산(variance), 2.5–2.7절의 정규방정식(normal equation)과 최소제곱 해의 분산, 3.5–3.6절의 검증 데이터(validation set)와 교차검증(cross-validation), 4.4–4.7절의 로그 손실(log-loss)과 경사하강법(gradient descent)을 가져오고, 4.4절이 남긴 계수의 발산, 4.7절이 남긴 「언제 멈추나」, 4.15절이 짚은 훈련 데이터(training data) 평가(evaluation)의 낙관에 답한다. 절은 개념 순서를 따라, 행렬 꼴의 해와 기하(L07 s26–s28)를 ridge 회귀의 정의 바로 뒤 5.5절로 옮겼다.

이 장의 구성

  1. 5.1훈련 곡선과 과적합84
  2. 5.2모형 용량과 두 질문85
  3. 5.3조기 종료86
  4. 5.4축소 방법88
  5. 5.5ridge 회귀89
  6. 5.6표준화와 계수 경로92
  7. 5.7ridge 회귀는 왜 통하는가93
  8. 5.8lasso95
  9. 5.9lasso가 계수를 0으로 만드는 까닭96
  10. 5.10ridge 회귀와 lasso의 비교97
  11. 5.11λ의 선택과 모형 선택의 정리99

원천 Lecture 7 (2026-10-07) 슬라이드 3–39 · 읽기 ISL 6.2

5.1 훈련 곡선과 과적합 Training Curves and Overfitting

L07 s03–s04, s06–s08

3.5절의 절차를 되짚으며 시작하자. 데이터를 훈련 데이터 70%, 검증 데이터 20%, 시험 데이터(test data) 10%로 나누고(슬라이드는 시험 데이터를 Eval이라 적었다), 하이퍼파라미터(hyperparameter)가 다른 후보 모형 셋을 훈련 데이터로 훈련한다. 훈련 데이터에서 잰 오차(error)는 2.5%, 2.7%, 2.6%로 모형 1이 가장 작지만, 고르는 기준은 검증 데이터에서 잰 오차 3.6%, 3.2%, 3.4%이므로 모형 2를 고른다. 고른 모형만 시험 데이터로 한 번 평가하여 최종 오차 3.1%를 보고한다. 슬라이드 제목은 교차검증이지만, 그림은 데이터를 한 번만 나누는 3.5절의 검증 데이터 방법(validation set approach)이다. 최종 오차가 검증오차(validation set error)보다 낮은 것은 우연이다. 여러 후보 가운데 검증오차가 가장 작은 것을 골랐으니 그 검증오차는 낙관적으로 치우쳐 있어서, 대개는 시험오차가 조금 더 높게 나온다(보충).

슬라이드는 여기서 새로 묻는다. 이 오차들은 언제 재는가? 4.6–4.7절에서 보았듯 훈련은 파라미터(parameter)를 조금씩 고치는 갱신(update)의 되풀이여서, 같은 모형도 훈련의 어느 때에 재느냐에 따라 오차가 다르다. 슬라이드는 실제 훈련에서 기록한 두 곡선으로 실마리를 보인다. 갱신마다 훈련 데이터에서 잰 손실을 이은 훈련 곡선(training curve)과, 검증 데이터에서 잰 손실을 이은 검증 곡선(validation curve)이다. 훈련 손실(training loss)은 약 0.025에서 0.006까지 끝까지 줄어든다. 검증 손실(validation loss)은 처음에 빠르게 줄다가 가로축 100–110 근처에서 가장 낮고(약 0.016), 그 뒤로는 들쭉날쭉 올라 끝에서 약 0.018이 된다(판독값). 두 그림은 세로축 범위가 달라 높이를 견줄 수 없지만 모양은 분명히 다르다. 슬라이드는 검증 곡선이 「어느 지점에서 정점에 이른 뒤 나빠진다」고 적었는데, 손실이므로 가장 좋은 지점은 봉우리가 아니라 골이다. 왜 이렇게 갈라지는가?

슬라이드는 이 모양을 개념도로 그려 세 구간으로 나눈다. 개념도의 빨간 곡선은 이름표대로 시험 데이터에서 잰 시험 손실(test loss)이다(슬라이드의 eval loss. 문장은 이 곡선을 검증 손실이라고도 불렀지만, 검증 손실은 5.3절에서 따로 나온다). 처음에는 훈련 손실과 시험 손실이 함께 빠르게 준다. 다음에는 훈련 손실은 계속 주는데 시험 손실이 평평해진다. 마지막에는 훈련 손실은 여전히 주는데 시험 손실이 오히려 나빠진다. 까닭은 모형이 무엇을 배우는지에 있다. 처음에는 데이터 전체에 통하는 중요한 패턴을 배우는데, 이것은 처음 보는 데이터에도 통할 가능성이 크다. 어느 때가 지나면 모형이 새로 배우는 것은 훈련 데이터에만 우연히 들어 있는 잡음(noise)이다. 잡음을 맞추면 훈련 손실은 더 줄지만 새 데이터에는 그 잡음이 없으니 그만큼 틀린다. 우리가 바라는 것은 훈련에 쓴 데이터에서만이 아니라 처음 보는 데이터에서도 잘하는 모형, 곧 1.1절의 일반화(generalization)다.

정의 · 과적합

모형이 데이터의 일반적인 추세뿐 아니라 훈련 데이터의 잡음까지 맞추어, 훈련 데이터에서의 성능은 계속 좋아지는데 처음 보는 데이터에서의 성능은 나빠지는 현상이다. 1.7절이 훈련오차(training error)는 작고 시험오차는 큰 모형을 과적합되었다고 한 것을, 훈련이 진행되는 모습으로 다시 말한 것이다.

슬라이드는 과적합을 특히 조심할 경우로 둘을 든다. 하나는 고차원 데이터(high-dimensional data)로, feature 수 \(p\)가 관측값(observation) 수 \(n\)에 견줄 만하거나 그보다 크면 훈련 데이터를 통째로 외울 여지가 커진다(3.1절에서 \(n < p+1\)이면 최소제곱 해가 하나로 정해지지 않았고, 3.2절에서 탐색 공간(search space)이 넓으면 과적합되기 쉬웠다). 다른 하나는 잡음이 많은 feature로, 반응변수(response)와 관계없이 흔들리는 값을 담은 feature도 훈련 데이터에서 우연히 맞아떨어진 만큼은 모형에 쓰인다(3.1절의 셋째 이유). 5.7절의 \(n = 50\), \(p = 45\)인 데이터가 앞의 예다.

그림 5.1은 예시 데이터로 같은 모양을 재현한 것이다. 관측값 100개에 feature 50개(그 가운데 다섯만 반응과 관계있다)인 훈련 데이터로 로지스틱 회귀(logistic regression)를 4.6절의 경사하강법으로 300번 갱신했다. 갱신마다 훈련 데이터 전체를 쓰므로 갱신 한 번이 곧 한 epoch이다. 세 손실은 모두 관측값마다의 로그 손실을 평균(mean)한 값이고, 셋 다 절편(intercept)과 계수를 모두 0으로 둔 데서의 값 \(\log 2 \approx 0.693\)에서 출발한다. 훈련 손실은 끝까지 줄어 300 epoch에서 0.072가 된다. 검증 손실(관측값 150개)은 epoch 78에서 가장 낮은 0.378이고 시험 손실(관측값 20,000개)은 epoch 76에서 가장 낮은 0.416이며, 그 뒤로 둘 다 다시 올라 300 epoch에서 각각 0.448과 0.492가 된다. 앞 구간은 아직 덜 배운 과소적합(underfitting) 구간이고, 검증 손실이 가장 낮은 때부터가 과적합 구간이다.

과소적합 과적합 0 50 100 150 200 250 300 0 0.2 0.4 0.6 epoch 손실 조기 종료 훈련 손실 검증 손실 시험 손실
그림 5.1로지스틱 회귀를 경사하강법으로 훈련하면 훈련 손실은 갱신 내내 줄지만 검증 손실과 시험 손실은 거의 같은 때(epoch 78과 76) 가장 낮아졌다가 함께 커지므로, 검증 손실이 가장 낮은 곳(점선)에서 멈춘다. 예시 데이터(L07 s06·s12의 개념도를 계산으로 다시 그림).
보충 · 두 축의 U자와 제4장의 두 관찰

1.7절의 그림 1.4에서 평균제곱오차(mean squared error, MSE)로 잰 시험오차는 모형의 유연성(flexibility)을 가로축으로 U자를 그렸다. 그림 5.1의 U자는 모형을 고정하고 훈련 시간을 가로축에 둔 것이다. 오래 훈련할수록 모형이 사실상 유연해지는 셈인데, 0에서 출발한 계수가 갱신마다 커지기 때문이다. 그림 5.1에서 절편을 뺀 계수 벡터의 크기 \(\lVert\bbeta\rVert\)는 epoch 78에서 2.46, 300에서 4.39다(이 장의 \(\bbeta = (\beta_1, \dots, \beta_p)^\top\)는 절편을 뺀 계수다. 5.5절).

오른쪽 구간에는 제4장의 두 관찰도 들어 있다. 하나는 4.15절이 훈련 데이터로 잰 평가는 낙관적이라고 한 것으로, epoch 78에서 훈련 손실 0.169와 시험 손실 0.416의 차이가 그 낙관의 크기이고 훈련할수록 벌어진다. 다른 하나는 4.4절의 주의다. 이 훈련 데이터는 관측값 100개에 feature가 50개라 선형 분리 가능(linearly separable)하다. 그래서 로그 손실에는 처음부터 최소점이 없고, 경사하강법의 계수는 갱신할수록 끝없이 커진다. epoch 141부터는 계수가 모든 훈련 관측값을 맞히는데도 계속 커지고(\(\lVert\bbeta\rVert\)는 그때 3.22) 훈련 손실만 0을 향해 내려간다. 오른쪽 구간의 과적합은 이 발산과 함께 깊어진다.

5.2 모형 용량과 두 질문 Model Capacity and Two Questions

L07 s09–s10

과적합은 모형 용량(model capacity)과 깊이 얽혀 있다. 용량은 모형이 나타낼 수 있는 함수의 폭으로, 이 강의는 대략 항(파라미터)의 수로 잰다(5.4절). 모형이 쓸데없이 복잡하면 훈련 데이터의 잡음까지 외울 만큼 용량이 넉넉해서 과적합되기 쉽다. 거꾸로 일반적인 패턴조차 배울 용량이 없으면 과소적합된다. 슬라이드는 이것을 두 feature \(x_1\), \(x_2\)로 두 클래스(class)를 가르는 세 모형으로 보인다.

$$\begin{aligned} \text{(a)}\;\; & \sigma(\beta_0 + \beta_1x_1 + \beta_2x_2) \\ \text{(b)}\;\; & \sigma(\beta_0 + \beta_1x_1 + \beta_2x_2 + \beta_3x_1^2 + \beta_4x_2^2 + \beta_5x_1x_2) \\ \text{(c)}\;\; & \sigma(\beta_0 + \beta_1x_1 + \cdots + \beta_5x_1x_2 + \beta_6x_1^2x_2 + \beta_7x_1x_2^2 \\ & \qquad + \beta_8x_1^2x_2^2 + \beta_9x_1^3 + \cdots) \end{aligned}$$

슬라이드는 바깥 함수를 정의 없이 \(g\)로 적었는데, 로지스틱 회귀의 문맥이므로 4.2절의 시그모이드 함수(sigmoid function) \(\sigma(\cdot)\)로 읽는다. feature도 슬라이드는 굵게 적었지만 스칼라라 \(x_1\), \(x_2\)로 쓴다. 그러면 0.5를 기준으로 가르는 결정 경계(decision boundary)는 \(\sigma(\cdot) = 0.5\), 곧 괄호 안이 0인 곡선이다(4.2절). (a)는 feature의 일차항만 써서 경계가 직선이고, (b)는 이차항까지 넣어 경계가 포물선이나 타원 같은 곡선이 되며, (c)는 차수(degree)가 더 높은 항을 계속 더해 경계가 마음대로 구불거릴 수 있다. 같은 변수를 거듭 곱해도 계수에 대해서는 선형이라는 2.10절의 다항회귀(polynomial regression)를 분류(classification)에 쓴 것이다.

(a) 1차 과소적합 훈련 16% · 시험 19% (b) 2차 적당 훈련 10% · 시험 14% (c) 6차 과적합 훈련 0% · 시험 21%
그림 5.2같은 데이터에 다항 feature를 넣은 로지스틱 회귀를 맞추면 1차 경계는 굽은 참 경계(회색 점선)를 따라가지 못하고, 6차 경계는 잡음 점까지 감싸 훈련 오분류율이 0%인데도 시험 오분류율(21%)이 2차(14%)보다 나쁘다. 예시 데이터(L07 s09의 그림을 본뜸).

그림 5.2는 같은 예시 데이터 50개에 차수가 1, 2, 6인 다항 feature를 넣어 맞춘 결정 경계다. 참 경계(회색 점선)는 포물선이고, 레이블(label)은 확률 10%로 반대 클래스로 뒤집었다(이 50개에서는 3개). 1차의 직선은 굽은 경계를 따라가지 못해 훈련 데이터에서도 16%를 틀린다. 2차는 참 경계를 가깝게 따라가며 10%를 틀리고, 6차(feature 27개)는 잡음 점까지 감싸려고 구불거려 하나도 틀리지 않는다. 그러나 새 관측값 20,000개로 잰 시험 오분류율(misclassification error rate)은 19.0%, 14.3%, 21.2%로 가운데가 가장 낫고, 6차는 1차보다도 나쁘다. 참 경계를 아는 분류기(classifier)도 뒤집힌 레이블 때문에 9.8%는 틀린다. 6차 모형은 훈련 데이터를 완전히 가르므로 4.4절의 주의대로 로그 손실의 최소점이 없어서, 아주 작은 벌점(\(\lambda = 0.0001\), 5.5절의 끝 소절)을 붙여 맞췄다(보충).

보충 · 회귀에서 본 같은 현상

2.10절의 그림 2.8에서 5차 다항식이 관측값이 드문 양 끝에서 휘어 나간 것은 그림 5.2(c)의 회귀판이다. 차수를 높여 용량을 키우면 훈련 데이터에는 더 잘 맞지만, 데이터의 우연한 굴곡까지 따라가 새 데이터에서는 나빠진다. 1.8절이 모형 선택(model selection)의 첫째 트레이드오프(trade-off)로 든 적합(fit) 대 과적합·과소적합이 이것이다.

슬라이드는 여기서 결론을 낸다. 알맞은 크기의 모형을, 너무 길지도 짧지도 않게 훈련해야 한다. 그림 5.1에서 왼쪽 구간이 덜 훈련한 과소적합, 오른쪽 구간이 과적합이고, 그 사이에서 검증 손실이 평평한 곳이 멈추기에 알맞다(보충). 그러면 두 질문이 남는다.

  1. 훈련을 언제 멈추는가? 그것을 어떻게 정하는가?(5.3절)
  2. 모형의 알맞은 크기, 곧 용량은 얼마인가? 그것을 어떻게 정하는가?(5.4–5.11절)

과소적합과 과적합이라는 말을 그림 5.2에서는 모형 용량의 문제로, 그림 5.1에서는 훈련을 얼마나 오래 했느냐의 문제로 썼다. 두 질문이 이 두 축에 하나씩 대응한다. 1.2절의 네 단계로 말하면 첫째 질문은 3단계(훈련)를 언제 끝내느냐이고, 둘째 질문에 답할 규제는 목적함수(objective function)에 벌점을 더해 2단계(목표)를 바꾼다. 멈출 때와 규제의 세기는 둘 다 4단계의 검증(3.5–3.6절)으로 고른다(보충).

5.3 조기 종료 Early Stopping

L07 s12–s16

첫째 질문부터 보자. 3.5절처럼 데이터를 독립동일분포(independent and identically distributed, i.i.d.)라는 가정 아래 무작위 분할(random split)로 나눴다면, 훈련·검증·시험 데이터는 같은 분포에서 뽑은 표본(sample)이라 분포가 서로 비슷하다. 일반적인 패턴은 세 데이터 모두에 통하고, 훈련 데이터에만 있는 잡음은 검증 데이터에게도 잡음일 뿐이다. 그래서 각 데이터가 아주 작지만 않으면 검증 손실과 시험 손실은 값이나 과적합의 정도가 조금 달라도 거의 같은 때 과적합되기 시작한다. 그림 5.1에서 검증 손실의 최저점(epoch 78)과 시험 손실의 최저점(epoch 76)이 두 epoch밖에 떨어지지 않은 것이 그 예다. 그러니 손대지 말아야 할 시험 데이터 대신 검증 데이터의 손실로 멈출 때를 정할 수 있다. 그림 5.1은 또렷한 예를 고른 것이다(보충). 같은 설정으로 데이터를 20번 새로 뽑으면 두 최저점의 차이는 중앙값(median) 14.5 epoch, 가장 크게는 104 epoch까지 벌어진다. 그래도 검증 손실이 가장 낮을 때 멈추면, 그때의 시험 손실은 시험 손실의 최저보다 중앙값 0.002, 많아야 0.010 높을 뿐이다. 바닥이 평평한 곳에서는 멈추는 때가 조금 어긋나도 손해가 거의 없다. 이 논리는 무작위 분할에 기댄다. 3.5절의 시간 기준 분할(timestamp-based split)처럼 세 데이터의 분포가 다르면 두 최저점이 어긋날 수 있다(보충).

정의 · 조기 종료

훈련하는 동안 따로 떼어 둔 검증 데이터에서 손실을 따라가다가 과적합이 시작되면, 곧 검증 손실이 다시 커지기 시작하면 훈련을 멈추는 것을 조기 종료(early stopping)라 한다.

4.7절에서 발표자 노트가 「정의하기 어렵고 휴리스틱(heuristic)에 기댄다」고 답한 「언제 멈추나」에 이 과목이 내놓는 답이 이것이다. 실제로는 검증 손실이 요동하므로(슬라이드의 실제 곡선) 한 번 오른다고 바로 멈추지 않는다. 몇 번 잇달아 나아지지 않으면 멈추고 가장 좋았던 때의 파라미터로 되돌리는 방식을 흔히 쓴다(보충).

슬라이드는 또 묻는다. 과적합을 판단할 때 훈련에 쓰는 손실을 볼 것인가, 실제로 관심 있는 지표(metric)를 볼 것인가? 로지스틱 회귀는 로그 손실을 최소화하지만 관심은 대개 분류 정확도(classification accuracy), 곧 맞힌 비율에 있다. 4.6절에서 보았듯 정확도에 맞닿은 0-1 손실(0-1 loss)은 계단 모양이라 경사하강법으로 줄일 수 없어서, 매끄러운 대리 손실(surrogate loss)인 로그 손실을 대신 줄인다. 그러면 멈출 때는 어느 쪽으로 정해야 하는가?

슬라이드는 강사가 저자로 참여한 Lee et al.(2014)의 「Local Collaborative Ranking」(WWW'14) 실험으로 답한다. 추천 시스템(recommender system)에서 아이템을 사용자의 선호 순서로 늘어놓는 순위 매기기(ranking) 문제다. 여기에는 목표가 세 층으로 있다. 최소화하고 싶은 것은 순서를 거꾸로 매긴 아이템 쌍의 비율인 0-1 오차(zero-one error)다. 분류의 0-1 손실을 쌍의 순서에 적용한 것이라 이것도 미분할 수 없으므로, 실제로는 대리 손실을 최소화한다. 논문은 로그 손실, 점수(score)가 틀린 쪽으로 갈수록 지수적으로 커지는 지수 손실(exponential loss), 일정한 여유 이상으로 맞히면 0이고 그보다 못하면 직선으로 커지는 힌지 손실(hinge loss)을 저마다 곱셈형과 덧셈형 두 가지로 만들어 썼다(슬라이드의 식과 기호는 옮기지 않는다). 실제로 관심 있는 것은 순위 목록의 위쪽을 무겁게 세는 두 순위 지표, 평균 정밀도(average precision, AP)와 NDCG(normalized discounted cumulative gain)를 위 10개만으로 잰 NDCG@10이다.

반복(iteration) 횟수에 따라 0-1 오차, AP, NDCG@10을 그린 슬라이드의 세 그래프에서, 0-1 오차는 네 대리 손실 어느 것으로 훈련해도 끝까지 줄어 평평해질 뿐 다시 오르지 않는다. 그런데 AP와 NDCG@10은 지수 손실의 곱셈형을 빼면 반복 20–35 근처에서 가장 높았다가 내려간다. 슬라이드는 여기서 두 가지를 관찰한다.

관찰 1. 이 예에서 손실 쪽 곡선은 과적합을 드러내지 않는데 실제 지표는 과적합한다. 로그 손실의 덧셈형으로 훈련한 모형은 0-1 오차가 안정적인데도 AP가 약 0.7685에서 0.759로, NDCG@10이 약 0.714에서 0.704로 꾸준히 나빠진다(판독값). 손실만 보고 멈추면 너무 늦게 멈춘다. 그러니 될 수 있으면 검증 손실보다 실제 지표로 멈출 때를 정한다.

관찰 2. 지표마다 과적합하는 때가 다르다. 판독값으로 로그 손실 덧셈형의 최고점은 AP가 반복 약 21, NDCG@10이 약 18이고, 곱셈형은 약 35와 33이다. 그러니 가장 중요한 지표 하나를 정해 그것으로 멈춘다. 지수 손실의 곱셈형은 다른 셋과 달리 눈에 띄게 과적합하지 않는다. 다만 그 NDCG@10의 최고값(약 0.712)은 넷 가운데 가장 낮다(판독값).

주의 · 「대리 손실은 과적합하지 않는다」

슬라이드는 관찰 1을 「대리 손실은 과적합하지 않는다」고, 그 예를 「검증 손실은 안정적인데」라고 적었다. 그러나 왼쪽 그래프는 대리 손실의 값이 아니라 대리 손실로 훈련한 모형의 0-1 오차이고(슬라이드는 이 그래프 제목을 최소화하고 싶은 오차의 식에 화살표로 이었다), 어느 데이터에서 쟀는지는 적혀 있지 않다. 그림대로 말하면 「손실 쪽 잣대인 0-1 오차는 과적합을 드러내지 않는데 순위 지표는 과적합한다」이고, 결론은 같다.

그림 5.3은 두 관찰을 개념도로 옮긴 것이다. 손실로 멈추면 반복 98에서야 멈추는데, 그때 지표 1은 이미 최고점(반복 28)에서 한참 내려와 있다. 지표 2의 최고점은 반복 56이라, 어느 지표로 멈추느냐에 따라서도 멈출 때가 다르다.

0 30 60 90 120 반복 (a) 검증 손실 손실로 멈춤 0 30 60 90 120 반복 (b) 검증 지표 (높을수록 좋다) 지표로 멈춤 지표 1 지표 2
그림 5.3검증 손실(a)은 반복 98까지 내려가 평평해질 뿐 과적합을 거의 드러내지 않지만 실제로 관심 있는 검증 지표(b)는 반복 28에서 가장 좋으므로, 손실로 멈추면(회색 점선) 지표가 한참 나빠진 뒤이고 지표마다 가장 좋은 때도 다르다(점선 곡선). 개념도(L07 s14–s16의 Lee et al. 2014 그림을 본뜸, 수치는 설명용).
보충 · 조기 종료는 규제와 닮았다

조기 종료는 갱신 횟수를 하이퍼파라미터로 보고 검증 데이터로 고르는 일이다(3.5절). 3.4절의 stagewise에서 반복 횟수 \(T\)를 고른 것과 같다. 또 0에서 출발한 경사하강법은 갱신할수록 계수가 커지므로(그림 5.1에서 절편을 뺀 \(\lVert\bbeta\rVert\)가 epoch 78에 2.46, 300에 4.39), 일찍 멈추면 계수를 작게 둔 채 끝난다. 계수를 작게 누르는 것이 다음 절부터의 규제이므로 조기 종료는 규제와 비슷한 효과를 낸다. 제11장에서 신경망(neural network)을 훈련할 때 조기 종료를 다시 쓸 것이다.

두 대리 손실은 뒤에서 다시 나올 것이다. 힌지 손실은 제7장 서포트 벡터 머신(support vector machine, SVM)의 손실이고, 지수 손실은 제6장 boosting의 한 방법인 AdaBoost와 이어진다고 알려져 있다(두 강의 전이라 예고만 한다).

5.4 축소 방법 Shrinkage Methods

L07 s18–s20 · ISL 6.2

둘째 질문, 곧 모형의 알맞은 용량을 어떻게 정할지로 넘어가자. 그림 5.2의 세 모형에서 보듯 항이 많다는 것은 파라미터 \(\beta_j\)가 많다는 것이고, 그만큼 복잡한 모형, 곧 용량이 큰 모형이다. 항이 많으면 훈련 데이터의 세부까지 맞출 자유가 생긴다. 이 강의는 용량을 계수의 개수로 잰다. 3.2절의 모형 크기(model size), 곧 모형에 든 feature 수와 같은 잣대다.

가장 곧은 길은 용량이 다른 후보를 여럿 훈련해 검증오차가 가장 작은 것을 고르는 것이다. 제3장이 한 일이 이것이다. 3.2–3.4절의 선택 알고리즘이 크기별 후보를 만들고 3.5–3.6절의 검증이 그 가운데 하나를 골랐다. 슬라이드는 더 나은 길을 찾으며 한 가지를 짚는다. 단순한 모형은 복잡한 모형의 특수한 경우다. 그림 5.2의 모형 (b)에서 \(\beta_3 = \beta_4 = \beta_5 = 0\)이면 (a)가 되고, (c)에서 \(\beta_6 = \cdots = \beta_9 = 0\)이고 그 뒤의 항들도 0이면 (b)가 된다(슬라이드는 \(\beta_9\)까지만 적었지만 (c)에는 「\(+\cdots\)」로 이어지는 항이 더 있다). 그렇다면 완벽한 모형을 한 번에 설계하려 하지 말고, 가장 복잡한 모형에서 출발해 정말 필요할 때만 계수가 0이 아니게 이끌면 된다(슬라이드의 계수 첨자 \(k\)는 \(j\)로 쓴다). 3.5절에서 새 feature의 계수를 0으로 두면 이전 해를 그대로 재현할 수 있다고 한 것과 같은 관찰이다.

이 발상을 계산할 수 있게 만든 것이 ISL 6.2의 축소(shrinkage) 방법이다. \(p\)개 feature를 모두 담은 모형을 적합하되, 계수 추정값(estimate)을 제약하거나 규제하는, 같은 말로 0 쪽으로 줄이는 기법을 쓴다. 제약이 왜 적합을 좋게 하는지는 곧바로 보이지 않지만, 계수 추정값을 줄이면 그 분산이 크게 준다. 대가는 약간의 편향이다(5.7절).

정의 · 규제와 축소 방법

계수가 클수록 커지는 벌점항(penalty term)을 목적함수에 더해 계수 추정값을 0 쪽으로 줄이는 것을 규제라 한다. 이렇게 \(p\)개 feature를 모두 쓰면서 계수를 줄이는 방법을 축소 방법이라 하며, 이 장의 축소 방법은 ridge 회귀(5.5–5.7절)와 lasso(5.8–5.10절)다.

(보충) 제3장의 부분집합 선택(subset selection)은 feature를 넣거나 빼는 둘 가운데 하나만 고르므로, 계수를 0 아니면 최소제곱 값으로 두는 셈이다. 축소 방법은 계수를 그 사이 어디에든 둘 수 있어 선택이 연속적이다. 2.7절은 최소제곱 추정량(least squares estimator)이 불편(unbiased)한 추정량(estimator) 가운데 분산이 가장 작다는 정리 뒤에, 「편향을 조금 허용하는 대신 분산을 크게 줄이는 추정량은 MSE로는 최소제곱 추정량보다 나을 수 있다」고 예고했다. 축소 방법이 그 추정량이다.

5.5 ridge 회귀 Ridge Regression

L07 s21–s22, s26–s28 (앞당김) · ISL 6.2.1

최소제곱법(least squares)은 잔차제곱합(residual sum of squares, RSS)을 가장 작게 하는 계수를 고른다(2.1절, 2.5절). ridge 회귀는 여기에 계수가 클수록 커지는 벌점항을 더한다.

정의 · ridge 회귀

ridge 회귀의 계수 추정값 \(\bhbeta^R_\lambda\)는 다음을 최소화하는 값이다.

$$\begin{aligned} & \sum_{i=1}^{n}\Big(y_i - \beta_0 - \sum_{j=1}^{p}\beta_jx_{ij}\Big)^2 + \lambda\sum_{j=1}^{p}\beta_j^2 \\ &\qquad = \RSS{} + \lambda\lVert\bbeta\rVert_2^2 \end{aligned} \tag{5.1}$$

\(\lambda \ge 0\)은 계수와 따로 정하는 하이퍼파라미터로, 규제의 세기를 정한다. \(\bbeta = (\beta_1, \dots, \beta_p)^\top\)는 절편을 뺀 계수이고, \(\lVert\bbeta\rVert_2^2 = \beta_1^2 + \cdots + \beta_p^2\)은 그 \(\ell_2\) 노름(norm)의 제곱이다. 절편 \(\beta_0\)은 벌하지 않는다.

이 장의 \(\bbeta\)는 이처럼 절편을 뺀 \(p\)차원(dimension) 벡터다. 절편은 반응의 전체 높이를 정할 뿐이라, 벌하면 반응을 평행이동하기만 해도 해가 달라지기 때문이다(보충). 위 첨자 R은 ridge를, 아래 첨자 \(\lambda\)는 추정값이 \(\lambda\)에 달려 있음을 뜻한다(ISL 표기). 최소제곱 추정값은 그대로 \(\bhbeta\)로 적는다. 슬라이드의 식과 다른 점은 아래 주의 상자에 모았다.

목적함수의 두 항은 서로 당긴다. 첫 항 RSS는 최소제곱처럼 계수가 데이터에 잘 맞기를 요구한다. 둘째 항 \(\lambda\lVert\bbeta\rVert_2^2\)는 ISL이 축소 벌점이라 부르는 벌점항으로, 계수 \(\beta_1, \dots, \beta_p\)가 0에 가까울 때 작으므로 추정값을 0 쪽으로 끌어당긴다. \(\lambda\)는 두 항의 상대적인 비중을 정하는 튜닝 파라미터(tuning parameter)다. 그래서 \(\lambda\)를 잘 고르는 것이 결정적이고, 교차검증으로 고른다(5.11절). 슬라이드는 두 극단을 묻는다. \(\lambda = 0\)이면 벌점이 사라져 최소제곱 해와 같다. \(\lambda \to \infty\)이면 벌점이 압도해 절편을 뺀 계수가 모두 0으로 가고, 예측(prediction)에는 절편, 곧 반응의 평균 \(\bar{y}\)만 남는다(3.2절의 영모형(null model) \(\mathcal{M}_0\)). 그 사이의 \(\lambda\)는 두 극단의 절충이고, 계수가 \(\lambda\)에 따라 그리는 길은 5.6절에서 본다.

행렬 꼴과 닫힌 해 The Matrix Form and the Closed-form Solution

식 (5.1)을 2.5절처럼 행렬로 적어 풀자. \(\bX\)는 첫 열이 모두 1인 \(n \times (p+1)\) 설계행렬(design matrix)이고, 2.4절처럼 절편을 흡수한 계수 벡터를 \(\bbeta' = (\beta_0, \beta_1, \dots, \beta_p)^\top\)로 적는다. 첫 대각 성분만 0이고 나머지는 1인 \((p+1) \times (p+1)\) 대각행렬 \(\mathbf{D} = \operatorname{diag}(0, 1, \dots, 1)\)을 두면 벌점은 \(\bbeta'^\top\mathbf{D}\bbeta' = \lVert\bbeta\rVert_2^2\)이다(\(\mathbf{D}\)는 절편을 벌하지 않으려고 더한 보충이다). 목적함수는 \((\by - \bX\bbeta')^\top(\by - \bX\bbeta') + \lambda\,\bbeta'^\top\mathbf{D}\bbeta'\)이다.

  1. 첫 항의 gradient는 2.5절의 계산 그대로 \(-2\bX^\top(\by - \bX\bbeta')\)이다.
  2. 벌점의 gradient는 \(\mathbf{A}\)가 대칭행렬(symmetric matrix)일 때의 공식 \(\partial(\mathbf{v}^\top\mathbf{A}\mathbf{v})/\partial\mathbf{v} = 2\mathbf{A}\mathbf{v}\)에서 \(2\lambda\mathbf{D}\bbeta'\)이다(\(\mathbf{D}\)는 대칭이다).
  3. 합을 \(\mathbf{0}\)으로 놓고 2로 나누면 \(\bX^\top\by - \bX^\top\bX\bbeta' - \lambda\mathbf{D}\bbeta' = \mathbf{0}\), 곧 \((\bX^\top\bX + \lambda\mathbf{D})\bbeta' = \bX^\top\by\)다.
결과 · ridge 회귀의 닫힌 해 $$\begin{bmatrix} \hat\beta_0 \\[3pt] \bhbeta^R_\lambda \end{bmatrix} = (\bX^\top\bX + \lambda\mathbf{D})^{-1}\bX^\top\by \tag{5.2}$$

\(\lambda = 0\)이면 식 (2.16)의 최소제곱 해 \((\bX^\top\bX)^{-1}\bX^\top\by\)로 돌아간다.

정규방정식 식 (2.15)와 다른 것은 \(\bX^\top\bX\)에 더한 \(\lambda\mathbf{D}\) 하나뿐이다. 차원도 2.5절과 같아서, \((p+1) \times (p+1)\) 행렬의 역행렬(inverse matrix)에 \((p+1) \times 1\)인 \(\bX^\top\by\)를 곱한 \((p+1) \times 1\)이다(슬라이드의 \(d\)가 \(p+1\)이다).

주의 · 슬라이드 표기
  • 정의 슬라이드는 RSS를 2.1절처럼 추정값으로 잰 \(\sum_i(y_i - (\hat\beta_0 + \hat\beta_1x_i))^2\)의 꼴(feature 하나)로 적었다. 그 자체는 관례대로지만, 같은 식을 \(\argmin_{\bbeta}\) 안에 그대로 넣으면 최소화할 변수 \(\bbeta\)와 식 안의 \(\hat\beta_0\), \(\hat\beta_1\)이 어긋난다. 뜻은 feature \(p\)개의 식 (5.1)이고, 모자는 최소화의 결과에만 붙인다. 벌점을 더한 목적함수는 「RSS」라 부르지 않는다.
  • 「\(\beta_0, \beta_1, \dots, \beta_p\)의 큰 값을 벌한다」는 문장은 절편까지 벌하는 것처럼 읽히지만, 바로 아래의 \(\bbeta = (\beta_1, \dots, \beta_p)^\top\)와 벌점은 절편을 뺀다. \(\lVert\bbeta^2\rVert_2^2\)는 \(\lVert\bbeta\rVert_2^2\)의 오타다.
  • 행렬 꼴의 슬라이드는 이 해를 최대가능도 추정(maximum likelihood estimation, MLE)으로 구한다고 했지만, 벌점을 붙인 최소제곱은 가능도(likelihood)의 최대화가 아니다(아래 보충). 또 \(\bX\)가 절편 열을 담으면 해의 \(\lambda\bI\)는 절편까지 벌하므로, 식 (5.2)는 \(\mathbf{D}\)를 쓴다.

(보충) feature 열에서 평균을 빼 중심화(centering)하면 절편 열이 나머지 열과 직교하므로 식 (5.2)가 둘로 갈라져 \(\hat\beta_0 = \bar{y}\)가 되고, 나머지 \(p\)개 계수는 절편 열 없이 중심화한 feature만으로 \(\mathbf{D}\) 대신 \(\bI\)를 쓴 꼴, 곧 슬라이드의 꼴로 풀린다. 중심화하지 않은 채 \(\lambda\bI\)를 쓰면 절편까지 벌하게 된다.

(보충) \(\lambda > 0\)이면 \(\bX^\top\bX + \lambda\mathbf{D}\)는 늘 가역(invertible)이다. 2.5절의 논법 그대로, 0이 아닌 \(\mathbf{v} = (v_0, v_1, \dots, v_p)^\top\)에 대해

$$\mathbf{v}^\top(\bX^\top\bX + \lambda\mathbf{D})\mathbf{v} = \lVert\bX\mathbf{v}\rVert^2 + \lambda(v_1^2 + \cdots + v_p^2)$$

인데, 둘째 항이 0이려면 \(v_1 = \cdots = v_p = 0\)이어야 하고 그러면 \(v_0 \ne 0\)이고 \(\bX\mathbf{v}\)는 모든 성분이 \(v_0\)인 벡터라 첫 항이 \(nv_0^2 > 0\)이다. 그러니 이 행렬은 양의 정부호(positive definite)이고 역행렬이 있다. 3.1절에서 최소제곱 해가 하나로 정해지지 않던 세 경우(\(n < p+1\)일 때 등)에도 ridge 회귀의 해는 하나다. 중심화한 꼴로 말하면 \(\bX^\top\bX\)의 고윳값(eigenvalue)이 모두 \(\lambda\)만큼 올라가는 셈이라, 0에 가까운 고윳값 때문에 역행렬의 성분이 커지던 공선성(collinearity)의 문제(2.8절, 3.1절)도 눌린다. 2.7절이 식 (2.19)의 분산이 매우 커지는 경우로 예고한 것이 이것이다.

(보충) 벌점을 붙인 최소제곱도 확률로 읽는 길은 있다. 2.4절처럼 \(y_i\)가 평균 \(\beta_0 + \sum_j\beta_jx_{ij}\), 분산 \(\sigma^2\)인 정규분포(normal distribution)를 따른다고 하고, 데이터를 보기 전 절편을 뺀 각 계수 \(\beta_j\)에 평균 0이고 분산이 모두 같은 정규분포를 사전분포(prior distribution)로 두자(절편에는 두지 않는다). 4.9절의 베이즈 정리(Bayes' theorem)를 클래스 대신 계수에 적용하면(식 (4.17): 사후 \(\propto\) 가능도 \(\times\) 사전), 데이터를 본 뒤 계수의 분포에서 밀도가 가장 큰 계수는 \(\lambda\)를 잡음의 분산 \(\sigma^2\)을 사전분포의 분산으로 나눈 값으로 둔 ridge 추정값이다. 이렇게 고르는 것을 최대 사후확률 추정(maximum a posteriori estimation, MAP)이라 한다. 계수가 0 근처에 있다고 강하게 믿을수록, 곧 사전분포의 분산이 작을수록 \(\lambda\)가 크다. 사전분포를 2.4절의 보충에서 본 라플라스 분포(Laplace distribution)로 바꾸면 lasso(5.8절)가 된다.

벌점의 기하 The Geometry of the Penalty

슬라이드는 벌점항의 뜻을 이렇게 요약한다. 계수는 그것을 키워 첫 항을 줄이는 이득이 벌점보다 클 때만 커질 수 있다. 이득이 작은 계수는 작게 눌린다. 그림 5.4(a)가 이것을 \(\beta_1\)–\(\beta_2\) 평면에 그린 것이다. \(\lambda\)가 클수록 계수는 더 작은 원 안으로 끌려와(\(\lambda = 0.1\)에서 \(0.5\)로) 원점 쪽으로 더 세게 줄어든다. \(\lambda = 0\)이면 원이 한없이 커서 규제 전의 최적점, 곧 최소제곱 해 그대로다.

(보충) 원의 뜻은 벌점 꼴과 짝을 이루는 제약 꼴에 있다. 식 (5.1)을 최소화하는 것은 \(\lVert\bbeta\rVert_2^2 \le t\)라는 제약조건(constraint) 아래에서 RSS를 최소화하는 것과 같은 해를 주고, \(\lambda\)마다 그에 맞는 \(t\)가 있다(ISL 6.2.2). 원은 이 제약 영역(constraint region)이다. 해가 슬라이드 그림처럼 원점을 향해 곧게 줄어드는 것은 feature가 서로 직교하고 길이가 1인 정규직교(orthonormal) 설계, 곧 \(\bX^\top\bX = \bI\)일 때다(절편은 중심화로 떼어 낸다). 이때 식 (5.2)는 성분마다 \(\hat\beta^R_j = \hat\beta_j/(1 + \lambda)\)가 되어 모든 계수를 같은 비율로 줄인다(ISL 6.2.2). 그림 5.4(a)의 최소제곱 점 \((2, -0.8)\)은 \(\lambda = 0.1\)에서 \((1.82, -0.73)\), \(\lambda = 0.5\)에서 \((1.33, -0.53)\)이 된다. feature 사이에 상관(correlation)이 있으면 RSS의 등고선(contour)은 기운 타원이고, 해는 그 타원이 원에 처음 닿는 점이라 원점 쪽 직선에서 벗어난다(그림 5.4(b)). 상관이 0.6인 예에서 \(\lambda = 0.5\)의 해는 \((1.08, -0.17)\)이다. 두 feature가 함께 움직이는 방향보다 엇갈리는 방향이 더 많이 줄어든 결과로, 5.6절의 Credit 데이터에서 다시 본다.

(a) 정규직교 설계 XTX = I β1 β2 β λ= 0.1 λ= 0.5 (b) 상관된 두 feature (보충) β1 β2 β ridge 해 λ= 0.5
그림 5.4정규직교 설계(a)에서 ridge 추정값(파랑)은 최소제곱 점 \(\bhbeta\)(주황)를 \(1/(1+\lambda)\)배 한 점이라 원점을 향해 곧게 줄어들고 그 점에서 RSS 등고선(회색 원)이 제약 원에 맞닿지만, feature가 상관되면(b) 기운 타원이 원에 처음 닿는 점이 해라서 원점을 향한 직선(점선) 위에 있지 않다. 예시 값((a)는 L07 s27을 다시 그림, (b)는 ISL 그림 6.7 오른쪽을 본뜬 보충).

ridge 회귀의 요약 Summary of Ridge Regression

슬라이드는 ridge 회귀를 이렇게 정리한다. 목적함수에 벌점항을 더한다. 과적합은 모형이 쓸데없이 복잡할 때 생기므로(5.2절), 정말 필요하다고 드러난 만큼만 항을 갖도록 모형을 「규제」한다. 곧 꼭 필요하지 않으면 가중치(weight)를 작게 하거나 0으로 만든다. 가중치는 계수를 신경망 쪽에서 부르는 이름이다. 다만 ridge 회귀는 계수를 줄이기만 할 뿐 정확히 0으로 만들지는 않는다. 0으로 만드는 것은 lasso(5.8절)이므로, 「또는 0」은 ridge 회귀와 lasso를 아우르는 규제 전체의 말로 읽는다. 슬라이드는 최소제곱과 ridge 회귀의 목적함수와 해를 나란히 놓았는데(파라미터를 \(\theta\)로 적었다), 다른 것은 벌점 \(\lambda\lVert\bbeta\rVert_2^2\)와 그것이 해에 남긴 \(\lambda\mathbf{D}\)(슬라이드는 \(\lambda\bI\)) 둘뿐이다.

(보충) 로그 손실에 붙인 벌점 The Same Penalty on the Log-Loss

같은 벌점은 RSS가 아닌 손실에도 붙일 수 있다. 4.4절의 로그 손실에 더한 \(\mathcal{L}(\bbeta') + \lambda\lVert\bbeta\rVert_2^2\)를 보자(손실은 절편까지 묶은 \(\bbeta'\)의 함수이고 벌점은 절편을 뺀다). 4.4절의 주의 상자에서 보았듯 선형 분리 가능한 데이터에서는 계수를 키울수록 로그 손실이 0을 향해 끝없이 줄어 최소점이 없었다. 벌점은 계수가 커질수록 끝없이 커지므로 이 길을 막는다. 로그 손실은 볼록(convex)하고(4.6절) 벌점은 바닥이 원점 한 곳뿐인 그릇 모양이라, 두 클래스가 모두 있는 한 둘을 더한 목적함수는 선형 분리 가능한 데이터에서도 최소점을 꼭 하나 가진다. 4.4절이 해결책으로 예고한 규제가 이것이고, 그림 5.2(c)의 6차 모형을 아주 작은 \(\lambda\)로 맞춘 까닭이다.

경사하강법으로 풀면 절편을 뺀 계수의 갱신(식 (4.10))에 벌점의 gradient \(2\lambda\bbeta\)가 더해진다. \(\mathbf{g}\)를 지금의 \(\bbeta'\)에서 잰 로그 손실의 gradient 가운데 절편을 뺀 성분, \(\alpha\)를 학습률(learning rate)이라 하면 다음과 같다.

$$\begin{aligned} \bbeta^{\text{new}} &= \bbeta^{\text{old}} - \alpha\big(\mathbf{g} + 2\lambda\bbeta^{\text{old}}\big) \\ &= (1 - 2\alpha\lambda)\,\bbeta^{\text{old}} - \alpha\,\mathbf{g} \end{aligned}$$

갱신마다 계수를 먼저 \(1 - 2\alpha\lambda\)배로 줄인 뒤 원래의 한 걸음을 가는 셈이다(절편은 줄이지 않는다). 그래서 이것을 가중치 감쇠(weight decay)라 하며, 제11장에서 신경망을 훈련할 때 다시 만날 것이다.

5.6 표준화와 계수 경로 Standardization and Coefficient Paths

L07 s23–s24 · ISL 6.2.1

Credit 데이터에서 계수가 \(\lambda\)에 따라 그리는 계수 경로(coefficient path)를 보기 전에 feature의 척도(scale)부터 정리하자. 최소제곱 추정값은 척도 등변(scale equivariant)이다. \(j\)번째 feature에 상수 \(c\)(슬라이드 s24의 \(c\))를 곱하면 그 계수의 추정값이 \(1/c\)배가 될 뿐이라, 예측에 들어가는 곱 \(\hat\beta_jx_{ij}\)는 그대로다. 예컨대 Credit의 income은 천 달러 단위인데, 이것을 달러로 바꾸면(\(c = 1000\)) income의 계수가 1/1000배가 되고 예측은 같다(보충). 다른 계수는 변하지 않는다(슬라이드는 「계수 추정값이 \(1/c\)배」라고만 적었지만 \(j\)번째 계수만의 일이다). ridge 회귀는 다르다. 벌점이 계수 제곱의 합이라, 단위를 바꿔 계수의 크기가 달라지면 그 feature가 받는 벌점의 세기도 달라진다.

그래서 ridge 회귀는 feature를 표준화(standardization)한 뒤에 쓴다.

정의 · 표준화 $$\tilde{x}_{ij} = \frac{x_{ij}}{\hat\sigma_j}, \qquad \hat\sigma_j = \sqrt{\frac{1}{n}\sum_{i'=1}^{n}(x_{i'j} - \bar{x}_j)^2} \tag{5.3}$$

\(\hat\sigma_j\)는 \(j\)번째 feature의 표준편차(standard deviation), \(\bar{x}_j\)는 그 표본평균(sample mean)이다. 표준화하면 모든 feature의 표준편차가 1이 되어 벌점이 모든 계수를 같은 잣대로 다룬다. 표준화한 feature의 계수를 표준화 계수(standardized coefficient)라 한다.

식 (5.3)은 ISL 식 (6.6)과 같다(분모의 합 첨자를 \(i'\)로 바꿔 좌변의 \(i\)와 겹치지 않게 했다). 표준편차는 \(n - 1\)이 아니라 \(n\)으로 나눠 구한다. 분자에서 평균을 빼지 않아도 되는 것은 절편을 벌하지 않기 때문이다. feature에서 상수를 빼면 그만큼이 절편으로 옮겨 갈 뿐 기울기(slope) 계수는 그대로다(보충). 그래서 실제로는 흔히 평균도 빼서 중심화와 표준화를 함께 한다. (보충) 표준화에 쓰는 평균과 표준편차는 훈련 데이터에서만 계산하고, 교차검증이면 fold마다 그 fold를 뺀 부분에서 계산하며, 예측할 때도 새 관측값을 같은 값으로 바꾼다. 시험 데이터까지 넣어 계산하면 3.5절의 데이터 누수(data leakage)다.

예 · 단위만 바꿔도 달라지는 축소(보충)

feature가 하나이고 feature와 반응을 중심화했다고 하자. \(S = \sum_i x_i^2\)이라 두면 최소제곱 추정값은 \(\hat\beta = \sum_i x_iy_i/S\)이고, 식 (5.1)을 \(\beta_1\)로 미분해 0으로 놓으면 ridge 추정값은

$$\hat\beta^R_\lambda = \frac{\sum_i x_iy_i}{S + \lambda} = \frac{S}{S + \lambda}\,\hat\beta$$

다. 줄어드는 비율 \(S/(S + \lambda)\)가 단위에 달려 있다. \(n = 400\)이고 표준편차가 1인 feature면 \(S = 400\)이라 \(\lambda = 100\)에서 0.8배로 준다. 같은 feature를 10배 큰 단위로 재면 \(c = 0.1\)이라 \(S = 4\)가 되어 약 0.04배로 거의 사라지고, 10배 작은 단위로 재면 \(c = 10\)이라 \(S = 40{,}000\)이 되어 약 0.998배로 거의 줄지 않는다.

그림 5.5는 Credit 데이터에서 balance를 feature 10개(region은 가변수(dummy variable) 둘이라 열은 11개)로 설명하는 ridge 회귀를 표준화한 feature로 \(\lambda\)를 바꿔 가며 맞추고, 표준화 계수의 계수 경로를 그린 것이다. 슬라이드의 그림(ISL 그림 6.4)을 ISL이 공개한 원자료로 다시 계산했다. 왼쪽은 가로축이 \(\lambda\)(로그 눈금)이고, 오른쪽은 가로축이 계수 벡터 크기의 비 \(\lVert\bhbeta^R_\lambda\rVert_2/\lVert\bhbeta\rVert_2\)다. 이 비는 규제한 계수가 최소제곱 계수에 비해 얼마나 줄었는지를 0과 1 사이로 나타내므로(1이면 규제 없음, 0이면 모두 0), 오른쪽 그림은 왼쪽 그림을 좌우로 뒤집은 모양이 된다.

양 끝부터 읽자. \(\lambda\)가 아주 작으면 최소제곱과 거의 같아서(왼쪽 끝 \(\lambda = 0.01\)에서 비 0.9987), 최소제곱의 표준화 계수 income −274.7, limit 440.1, rating 175.6, student 127.7이 그대로 보이고 나머지 일곱은 ±25 안에 있다. 로그 축에는 \(\lambda = 0\)을 그릴 수 없으니 슬라이드의 「No regularization」은 이 왼쪽 끝을 가리킨다. \(\lambda\)를 키우면 계수가 모두 0 쪽으로 줄어, 비는 \(\lambda \approx 159\)에서 절반이 되고 \(\lambda = 10^5\)에서는 0.004로 모든 계수가 거의 0이다(영모형).

그 사이의 모양은 단조롭지 않다. 가장 눈에 띄는 것은 limit과 rating이다. 둘은 상관계수(correlation coefficient)가 0.9969로 거의 한 직선 위에 놓이는 feature라(3.1절), 최소제곱은 둘에 440과 176을 따로 주지만 \(\lambda\)를 키우면 rating이 오히려 커져 \(\lambda \approx 7.6\)에서 최대 281.8이 되고, \(\lambda \approx 87\)에서 둘이 219.3과 217.2로 거의 같아진 뒤 함께 줄어든다. 거의 같은 정보를 담은 두 feature에서는 두 계수의 합이 같으면 예측이 거의 같은데, 합이 같을 때 제곱의 합은 둘을 고르게 나눌 때 가장 작기 때문이다(보충). income은 \(\lambda \approx 376\)에서 부호가 바뀌어 \(\lambda \approx 1{,}200\) 근처에서 +23.4까지 올랐다가 0으로 간다. student는 \(\lambda = 10\)에서도 123.0으로 거의 그대로다.

−200 0 200 400 10−2 100 102 104 λ 0 0.2 0.4 0.6 0.8 1 ‖βRλ‖2/‖β‖2 표준화 계수 income limit rating student
그림 5.5\(\lambda\)를 키우면 ridge 회귀의 표준화 계수는 모두 0 쪽으로 줄지만 정확히 0이 되지는 않으며, 거의 같은 정보를 담은 limit과 rating은 \(\lambda = 100\) 무렵 한 값으로 모인다(회색은 나머지 일곱 feature). Credit 데이터(ISL 그림 6.4를 다시 그림).

(보충) 이 모양은 5.5절의 고윳값으로 설명된다. 표준화하고 중심화한 Credit의 \(\bX^\top\bX\)에서 가장 큰 고윳값은 1,102.3, 가장 작은 것은 0.853이고, 가장 작은 쪽의 방향이 거의 rating과 limit의 차이다. 최소제곱은 이 방향을 아주 불안정하게 추정한다. 2.8절의 두 feature 식으로는 계수 분산이 \(1/(1 - r_{12}^2) \approx 160\)배로 부풀고, 나머지 feature까지 넣은 이 모형에서는 약 235배다. ridge 회귀는 이 방향의 성분을 \(0.853/(0.853 + \lambda)\)배로 줄이므로 \(\lambda\)가 1만 되어도 절반 아래로 깎이고, 실제로 두 계수의 차이는 \(\lambda = 0\)의 264.5에서 \(\lambda = 1\)의 121.9로 준다.

오른쪽 그림에서는 비가 0.9 근처까지 limit과 rating이 한 몸처럼 거의 직선으로 커지다가, 비가 1에 다가가는 마지막 구간에서 갈라져 limit은 440으로 치솟고 rating은 176으로 떨어진다. 최소제곱에 가까울수록 거의 같은 두 feature 사이의 무게 배분이 크게 흔들린다는 뜻이다. 가로축의 \(\lambda\) 값은 목적함수의 척도(RSS에 상수를 곱하는지, 표준화의 분모가 무엇인지 등)에 따라 달라지는데, 식 (5.1)과 식 (5.3) 그대로 계산한 그림 5.5의 \(\lambda\)는 슬라이드 그림의 눈금과 대체로 맞는다. limit과 rating이 \(10^2\)대에서 모이고, income이 수백에서 부호를 바꾸며, \(10^4\)–\(10^5\)에서 모두 거의 0이 된다.

5.7 ridge 회귀는 왜 통하는가 Why Ridge Regression Works

L07 s25 · ISL 6.2.1

계수를 줄이면 왜 나아지는가? 슬라이드는 ISL 그림 6.5의 모의 데이터(simulated data)로 답한다. 관측값 \(n = 50\), feature \(p = 45\)이고 참 계수가 모두 0이 아닌 선형 모형(linear model)에서 데이터를 뽑아, \(\lambda\)마다 ridge 회귀 예측의 편향의 제곱, 분산, 시험 MSE를 잰 것이다. 참 모형을 정해 두고 뽑은 데이터라 참 \(f\)를 알므로 셋을 따로 계산할 수 있다. 그림 5.6은 같은 설정을 예시 데이터로 다시 뽑아 정확한 식으로 계산했다(잡음의 분산 \(\sigma^2 = 25\), 시험 관측값은 훈련 입력(input)에 새 잡음을 더한 것).

\(\lambda\)가 아주 작으면, 곧 최소제곱에 가까우면 편향은 거의 0이지만 분산이 22.90으로 커서 시험 MSE가 47.90이다. \(\lambda\)를 키우면 분산이 빠르게 줄고 편향의 제곱은 천천히 는다. 시험 MSE는 그 합을 따라 U자를 그려 \(\lambda \approx 38\)에서 가장 작은 35.16(× 표시)이 되는데, 그때 분산은 6.47, 편향의 제곱은 3.69다. 더 키우면 편향이 지배한다. \(\lambda \to \infty\)이면 절편 말고는 모든 계수가 0이 되어 분산은 절편 하나의 \(\sigma^2/n = 0.5\), 편향의 제곱은 33.00, 시험 MSE는 58.50으로 간다. 오른쪽 그림은 같은 곡선을 5.6절의 비에 대해 그린 것으로, 비가 1이면 최소제곱, 0이면 영모형이라 왼쪽을 뒤집은 모양이다(최소점은 비 0.255). 슬라이드 그림의 판독값(최소 약 36.4, \(\lambda \approx 30\), 왼쪽 끝 약 47.3, 오른쪽 끝 약 58.9)은 데이터를 새로 뽑은 그림 5.6과 비슷하다.

0 20 40 60 10−2 100 102 104 λ 시험 MSE 분산 편향² σ² = 25 0 0.2 0.4 0.6 0.8 1 ‖βRλ‖2/‖β‖2 MSE
그림 5.6\(\lambda\)를 키우면 ridge 회귀 예측의 분산(주황)은 줄고 편향의 제곱(검정)은 늘어 시험 MSE(파랑)가 \(\lambda \approx 38\)에서 가장 작아지며(×), 그 바닥은 줄일 수 없는 오차 \(\sigma^2 = 25\)(점선) 위에 있다. 예시 데이터(ISL 그림 6.5를 본뜸).

왜 ridge 회귀가 이기는가? \(p = 45\)가 \(n = 50\)에 가까우면 최소제곱 추정량의 분산 \(\sigma^2(\bX^\top\bX)^{-1}\)(식 (2.19))이 매우 크다. 훈련 입력에서 잰 최소제곱 예측의 분산은 평균 \(\sigma^2(p+1)/n = 25 \times 46/50 = 23\)이고, 그림의 왼쪽 끝 22.90이 이것이다(보충: 적합값(fitted value)의 분산 행렬 \(\sigma^2\bX(\bX^\top\bX)^{-1}\bX^\top\)의 대각합(trace)이 \(\sigma^2(p+1)\)이다). 편향을 조금 허용하고 계수를 줄이면 이 큰 분산이 빠르게 줄어 시험 MSE가 47.90에서 35.16으로 내려간다. \(\lambda\)는 1.9절의 편향-분산 트레이드오프(bias-variance trade-off)를 움직이는 손잡이인 셈이다. 2.7절의 가우스-마르코프 정리(Gauss–Markov theorem)가 보장하는 최소제곱의 최적성은 불편한 추정량들 사이의 순위일 뿐이고, 편향을 허용하면 MSE를 더 낮출 수 있다는 2.7절의 예고를 이 그림이 확인한다. 슬라이드의 그림 아래 문장대로, 규제가 셀수록 모형이 단순해져 덜 과적합되고 분산은 낮아지며 편향은 높아진다.

주의 · 슬라이드의 MSE 식

슬라이드는 그림 옆에 \(\MSE(\hat\theta \mid \bX) = \Var(\hat\theta \mid \bX) + \Bias(\hat\theta \mid \bX)^2\)을 적었다. 이것은 2.6절의 정리, 곧 추정량이 참값(true value)에서 벗어나는 정도의 분해다(식 (2.17), 벡터라면 \(\operatorname{tr}\Var(\hat\theta) + \lVert\Bias(\hat\theta)\rVert^2\)). 그림의 곡선은 새 관측값을 예측한 시험 MSE라서, 1.9절의 식 (1.8)대로 줄일 수 없는 오차(irreducible error) \(\Var(\epsilon) = \sigma^2\)이 더해져 있다. 그래서 시험 MSE는 분산과 편향의 제곱의 합보다 늘 25만큼 위에 있고(47.90 = 22.90 + 0 + 25, 35.16 = 6.47 + 3.69 + 25), 점선 「최소 가능 MSE」가 어떤 모형도 내려갈 수 없는 그 바닥이다.

보충 · 정규직교 설계에서 계산해 보기

5.5절의 정규직교 설계에서는 \(\hat\beta^R_j = \hat\beta_j/(1 + \lambda)\)라 계수마다 계산할 수 있다. 최소제곱 추정량 \(\hat\beta_j\)는 불편이고 분산이 \(\sigma^2\)이므로(식 (2.19)에서 \(\bX^\top\bX = \bI\))

$$\Var(\hat\beta^R_j) = \frac{\sigma^2}{(1 + \lambda)^2}, \qquad \Bias(\hat\beta^R_j) = \frac{\beta_j}{1 + \lambda} - \beta_j = -\frac{\lambda\beta_j}{1 + \lambda}$$

이다. \(\lambda\)를 0에서 조금 키우면 분산은 \(1/(1+\lambda)^2 \approx 1 - 2\lambda\)라 \(\lambda\)에 비례해 바로 줄지만, 편향의 제곱 \(\lambda^2\beta_j^2/(1 + \lambda)^2\)은 \(\lambda^2\)에 비례해 천천히 늘어 MSE가 먼저 준다. 둘을 더해 \(\lambda\)로 미분하면 가장 좋은 \(\lambda\)는 \(\sigma^2/\beta_j^2\)이다. 잡음이 클수록, 참 계수가 작을수록 더 세게 줄여야 한다.

5.8 lasso The Lasso

L07 s29–s31 · ISL 6.2.2

ridge 회귀에는 분명한 약점이 하나 있다. 3.2–3.4절의 부분집합 선택은 feature 일부만 담은 모형을 고르지만, ridge 회귀는 계수를 줄일 뿐 \(p\)개 feature를 최종 모형에 모두 남긴다. 예측에는 문제가 없어도 \(p\)가 크면 모형을 읽기 어렵다. 1.8절의 간결성(parsimony)의 문제다. lasso는 이 약점을 고친 ridge 회귀의 대안이다.

정의 · lasso

lasso의 계수 추정값 \(\bhbeta^L_\lambda\)는 다음을 최소화하는 값이다.

$$\begin{aligned} & \sum_{i=1}^{n}\Big(y_i - \beta_0 - \sum_{j=1}^{p}\beta_jx_{ij}\Big)^2 + \lambda\sum_{j=1}^{p}\lvert\beta_j\rvert \\ &\qquad = \RSS{} + \lambda\lVert\bbeta\rVert_1 \end{aligned} \tag{5.4}$$

식 (5.1)과 다른 것은 벌점뿐이다. 제곱의 합 대신 절댓값의 합 \(\lVert\bbeta\rVert_1 = \lvert\beta_1\rvert + \cdots + \lvert\beta_p\rvert\), 곧 \(\bbeta\)의 \(\ell_1\) 노름을 쓴다. 절편은 여전히 벌하지 않고, \(\lambda \ge 0\)은 하이퍼파라미터다.

슬라이드의 이 식은 ISL 식 (6.7)의 꼴이다. ridge 회귀의 정의 슬라이드와 달리 feature가 \(p\)개인 일반형이고, 「RSS」라는 이름도 벌점 없는 앞부분에만 붙였다(다음 슬라이드 맨 위의 식은 다시 5.5절 주의 상자의 꼴이지만 뜻은 같다). lasso도 ridge 회귀처럼 계수 추정값을 0 쪽으로 줄인다. 그러나 \(\ell_1\) 벌점은 \(\lambda\)가 충분히 크면 일부 계수를 정확히 0으로 만든다. 그래서 lasso는 최적 부분집합 선택(best subset selection)처럼 feature selection을 하는 경향이 있고(슬라이드가 기울여 쓴 「경향」은 \(\lambda\)가 충분히 클 때 그렇다는 뜻이다), feature 일부만 담은 희소(sparse) 모형을 낸다. 왜 정확히 0이 되는지는 5.9절에서 본다. ridge 회귀처럼 \(\lambda\)를 잘 고르는 것이 결정적이고, 이번에도 교차검증으로 고른다(5.11절).

정의 · \(\ell_q\) 노름

벡터 \(\bbeta = (\beta_1, \dots, \beta_p)^\top\)의 \(\ell_q\) 노름은 다음과 같다.

$$\lVert\bbeta\rVert_q = \Big(\sum_{j=1}^{p}\lvert\beta_j\rvert^q\Big)^{1/q}, \qquad q \ge 1 \tag{5.5}$$

\(q = 1\)이면 절댓값의 합(lasso의 벌점)이고, \(q = 2\)이면 2.6절의 유클리드 노름(ridge 회귀의 벌점은 그 제곱)이다.

슬라이드는 이것을 「어떤 실수 \(p\)에 대해서든 쓸 수 있는 일반 \(L_p\) 손실」이라 적었다. 세 가지를 고쳐 읽는다. 손실이 아니라 노름이다. 노름이 되려면 \(q \ge 1\)이어야 한다. \(0 < q < 1\)이면 두 벡터를 더한 것의 크기가 각 크기의 합보다 커질 수 있어 노름이 아니다(보충). 그리고 지수 \(p\)는 feature 수 \(p\)와, 대문자 \(L\)은 가능도 \(L\)과 겹치므로 이 책은 \(q\)와 \(\ell\)로 적는다. 슬라이드가 「lasso(\(L_1\) 벌점)」라 쓴 것도 lasso의 벌점이 \(\ell_1\) 벌점이라는 뜻이다.

−200 0 200 400 102 103 104 105 106 λ 0 0.2 0.4 0.6 0.8 1 ‖βLλ‖1/‖β‖1 표준화 계수 income limit rating student
그림 5.7lasso는 \(\lambda\)를 키우면 표준화 계수를 하나씩 정확히 0으로 만들므로, \(\lambda\)를 줄여 가면 rating, student와 limit, income의 차례로 계수가 0에서 떨어져 나온다(\(\lambda\)의 척도는 슬라이드 그림의 약 40배). Credit 데이터(ISL 그림 6.6을 다시 그림).

그림 5.7은 그림 5.5와 같은 Credit 데이터의 lasso 계수 경로다. 슬라이드가 짚었듯 lasso는 계수를 일찍 0으로 만들고, ridge 회귀(그림 5.5)는 모든 계수를 함께 줄일 뿐 0으로 만들지 않는다. \(\lambda\)가 317,250 이상이면 모든 계수가 0이고, \(\lambda\)를 줄여 가면 계수가 하나씩 0에서 떨어져 나온다. 들어오는 순서는 rating(\(\lambda \approx 317{,}250\)), 거의 함께 student(95,599)와 limit(93,269), 그다음 income(45,764)이고, 나머지 일곱은 \(\lambda\)가 16,210에서 1,665로 내려가는 동안 차례로 들어온다. 오른쪽 그림의 비 \(\lVert\bhbeta^L_\lambda\rVert_1/\lVert\bhbeta\rVert_1\)로 말하면, 비가 0.2일 때는 rating 하나(215.7)만, 0.4일 때는 넷(income −13.0, limit 77.9, rating 274.7, student 65.7)만 0이 아니다. \(\lambda\)를 고르는 일이 곧 feature를 몇 개 쓸지 고르는 일이다.

그림 5.7의 \(\lambda\) 눈금은 슬라이드 그림(20–5,000)의 약 40배다. 슬라이드 그림에서 rating·limit·income이 0이 되는 \(\lambda\)를 읽으면 약 8,000·2,300·1,100인데 우리 계산은 317,250·93,269·45,764다. 목적함수의 척도를 다르게 잡은 탓으로 보인다. 예컨대 RSS 앞에 1/2을 두고 feature의 길이를 1로 맞추면 \(\lambda\)가 \(2\sqrt{n} = 40\)배 작아진다. 계수 경로의 모양과 비의 축은 척도와 상관없다. 같은 까닭으로 슬라이드의 「lasso가 더 일찍 0으로 만든다」는 두 그림의 \(\lambda\) 값을 견주는 말이 아니다. 두 방법은 벌점의 척도가 달라 같은 \(\lambda\)를 견줄 수 없고, 「일찍」은 규제를 키워 가는 동안 ridge 회귀는 끝까지 0을 만들지 않는데 lasso는 도중에 만든다는 뜻이다.

lasso가 1.8절의 그림 1.6에서 부분집합 선택과 함께 해석력(interpretability)이 가장 높은 왼쪽 위에 있던 까닭이 여기 있다. 계수 대부분을 정확히 0으로 만들어, 남은 몇 개의 feature만 읽으면 되기 때문이다.

보충 · lasso는 어떻게 푸는가

절댓값 \(\lvert\beta_j\rvert\)는 \(\beta_j = 0\)에서 꺾여 미분가능(differentiable)하지 않다. 그래서 식 (5.4)에는 식 (5.2) 같은 닫힌 해가 없고, 4.6절의 경사하강법도 그대로는 쓸 수 없다. 대신 4.5절의 좌표 하강법(coordinate descent)이 잘 맞는다. 다른 계수를 모두 고정하고 \(\beta_j\) 하나만 보면 문제가 1차원이 되고, 그 해는 5.9절의 소프트 임곗값 처리(soft thresholding)로 바로 적힌다. 이것을 \(j = 1, \dots, p\)에 걸쳐 수렴(convergence)할 때까지 되풀이한다. 그림 5.7도 경로를 정확히 따라가는 방법으로 그리고 좌표 하강법의 해와 맞춰 보았다.

5.9 lasso가 계수를 0으로 만드는 까닭 Why the Lasso Sets Coefficients to Zero

L07 s32–s34 · ISL 6.2.2

왜 lasso는 ridge 회귀와 달리 정확히 0인 계수를 내는가? 다른 것은 벌점의 모양뿐이다. ridge 회귀의 벌점은 \(\ell_2\) 노름의 제곱(제곱의 합)이고 lasso의 벌점은 \(\ell_1\) 노름(절댓값의 합)이다(슬라이드는 앞의 것을 「2-노름(제곱의 합)」이라 줄여 적었다). 5.5절처럼 제약 꼴로 보면 차이가 그림으로 드러난다. lasso는 \(\lVert\bbeta\rVert_1 \le t\) 아래에서 RSS를 최소화하는 것과 같은데, 이 제약 영역 \(\lvert\beta_1\rvert + \lvert\beta_2\rvert \le t\)는 원이 아니라 꼭짓점이 두 축 위에 있는 마름모다.

슬라이드는 규제를 「마름모 안에서 가장 가까운 점으로 옮기는 것」으로 그린다(그림 5.8(a), \(t = 1\)). 대부분의 점에서 그 가장 가까운 점은 꼭짓점, 곧 좌표 하나가 0인 점이다. 그림의 파란 점 \((2, -0.55)\)은 오른쪽 꼭짓점 \((1, 0)\)으로 가서 \(\beta_2 = 0\)이 된다. 모든 점이 그렇지는 않다. 검은 점 \((1.25, -1.25)\)은 오른쪽 아래 변에 수직으로 옮겨져 \((0.5, -0.5)\)가 되고 두 좌표가 모두 0이 아니다. 어느 점이 어디로 가는지를 칠하면 꼭짓점 \((0, t)\), \((t, 0)\), \((0, -t)\), \((-t, 0)\)마다 바깥으로 열린 직각의 쐐기가 하나씩 생긴다(그림의 주황 영역). 쐐기 안의 점은 모두 그 꼭짓점으로 가고, 쐐기 사이의 띠에 있는 점만 변 위의 점으로 간다. 슬라이드는 꼭짓점을 \((0, a)\) 등으로 적었는데 \(a\)가 곧 제약의 크기 \(t\)다.

(보충) 꼭짓점 \((0, t)\)로 가는 점은 \(\beta_2 - t \ge \lvert\beta_1\rvert\)인 점이다. 그 꼭짓점에서 만나는 두 변에 수직인 방향 \((1, 1)\)과 \((-1, 1)\) 사이에 있는 점들이라 쐐기가 직각이 된다. \(\lambda\)가 커져 마름모가 작아지면 쐐기의 꼭지가 원점으로 다가와 평면의 더 많은 부분을 덮는다. 규제가 셀수록 더 희소해진다.

차원이 높아지면 이 효과가 더 커진다. 3차원에서 \(\ell_1\) 노름의 공 \(\lvert\beta_1\rvert + \lvert\beta_2\rvert + \lvert\beta_3\rvert \le t\)는 정팔면체다. 꼭짓점 6개에서는 세 좌표 가운데 둘이 0이고, 모서리 12개 위에서는 하나가 0이며, 면의 안쪽에서만 셋 다 0이 아니다. 슬라이드의 3차원 그림에서는 RSS의 등고선인 타원체가 위 꼭짓점에 닿아 계수 하나만 0이 아니다(그림의 축 \(x\), \(y\), \(z\)는 계수 \(\beta_1\), \(\beta_2\), \(\beta_3\)이다). 차원이 높을수록 좌표가 여럿 0인 꼭짓점과 모서리가 해가 떨어지기 쉬운 곳으로 많아진다. feature가 많을 때 lasso가 쓸모 있는 까닭이다.

(a) 가장 가까운 점으로 옮기기 β1 β2 β2= 0 (b) 기운 등고선이 닿는 곳 (보충) β1 β2 β β1= 0
그림 5.8마름모 밖의 점을 마름모 안의 가장 가까운 점으로 옮기면 꼭짓점의 쐐기(주황)에 있던 점은 모두 계수 하나가 0인 꼭짓점으로 가고(a), 기운 RSS 등고선도 마름모에는 꼭짓점에서 처음 닿아 \(\beta_1 = 0\)이 되지만 원(점선)에는 축 밖에서 닿는다(b). 예시 값((a)는 L07 s32–s33을 다시 그림, (b)는 ISL 그림 6.7 왼쪽을 본뜬 보충).
결과 · 정규직교 설계의 두 해(보충, ISL 6.2.2)

\(\bX^\top\bX = \bI\)이면(절편은 중심화로 떼어 낸다) RSS가 \(\sum_j(\beta_j - \hat\beta_j)^2\)에 상수를 더한 꼴이 되어 계수마다 따로 풀린다.

$$\hat\beta^R_j = \frac{\hat\beta_j}{1 + \lambda}, \qquad \hat\beta^L_j = \operatorname{sign}(\hat\beta_j)\Big(\lvert\hat\beta_j\rvert - \frac{\lambda}{2}\Big)_+ \tag{5.6}$$

\((a)_+ = \max(a, 0)\)이다. ridge 회귀는 모든 계수를 같은 비율로 줄이지만, lasso는 모든 계수의 절댓값을 같은 양 \(\lambda/2\)만큼 줄이고 0을 지나치면 0에서 멈춘다. 이 연산이 5.8절에서 말한 소프트 임곗값 처리다.

슬라이드의 「마름모 안의 가장 가까운 점」이 바로 이 경우다. \(\bX^\top\bX = \bI\)이면 RSS의 등고선이 \(\bhbeta\)를 중심으로 한 원이라, 제약 아래 RSS를 최소화하는 것은 마름모 안에서 \(\bhbeta\)에 가장 가까운 점을 찾는 것이다. 식 (5.6)에서 \(\lvert\hat\beta_j\rvert \le \lambda/2\)인 계수는 모두 정확히 0이 되지만, ridge 회귀는 \(\hat\beta_j = 0\)이 아닌 한 계수를 0으로 만들지 않는다.

(보충) feature가 상관되어 있으면 등고선은 기운 타원이고, 해는 \(\bhbeta\)에서 커져 나가는 RSS의 타원이 마름모에 처음 닿는 점이다(그림 5.8(b), ISL 그림 6.7). 마름모는 꼭짓점이 뾰족해 타원이 꼭짓점에 먼저 닿기 쉽다. 그림의 예에서 타원은 꼭짓점 \((0, 1)\)에 닿아 \(\beta_1 = 0\)이다. 같은 타원을 반지름 1인 원에 대면 \((0.49, 0.87)\)에서 닿아 두 계수가 모두 0이 아니다. 원에는 모서리가 없어 축 위에서 정확히 닿는 일이 드물다. ridge 회귀가 계수를 0으로 만들지 않는 까닭이다.

5.10 ridge 회귀와 lasso의 비교 Comparing Ridge Regression and the Lasso

L07 s35–s36 · ISL 6.2.2

그림 5.9(a)는 그림 5.6과 같은 모의 데이터(참 계수 45개가 모두 0이 아님)에서 lasso 예측의 편향의 제곱, 분산, 시험 MSE를 그린 것이다. lasso의 추정량은 \(\by\)의 선형 함수가 아니라서 잡음을 1,000번 다시 뽑아 평균했다(보충). 모양은 ridge 회귀와 비슷하다. \(\lambda\)를 키우면 분산은 줄고 편향은 늘며, 시험 MSE는 U자를 그려 \(\lambda \approx 53\)에서 가장 작은 36.70이 된다(분산 8.53, 편향의 제곱 3.18). 가장 큰 차이는 \(\lambda\)가 아주 클 때다. lasso는 \(\lambda\)가 어떤 값을 넘으면 절편을 뺀 모든 계수를 정확히 0으로 만들어 그 뒤로 모형이 더 변하지 않으므로, 세 곡선이 완전히 평평해진다(시험 MSE 58.53). 모든 계수가 0이 되는 \(\lambda\)는 잡음에 따라 219에서 536 사이였다. ridge 회귀는 모든 계수를 계속 줄여 갈 뿐이라 곡선이 그 극한으로 천천히 다가간다(그림 5.6). 슬라이드 그림(ISL 그림 6.8 왼쪽)에서도 lasso의 최소는 약 38.0이고, \(\lambda\)가 약 25를 넘으면 약 59.1로 평평하다.

0 20 40 60 10−1 100 101 102 103 λ 시험 MSE 분산 σ² = 25 편향² 모든 계수 0 (a) 계수 45개가 모두 0이 아님 0 0.2 0.4 0.6 0.8 1 훈련 데이터의 R² lasso ridge (b) 둘만 0이 아님 (보충) MSE
그림 5.9참 계수가 모두 0이 아니면(a) lasso의 최소 시험 MSE(36.7)가 ridge 회귀(그림 5.6의 35.2)보다 조금 크고 큰 \(\lambda\)에서는 모든 계수가 0이 되어 곡선이 평평해지지만, 참 계수가 둘뿐이면(b) lasso(실선, 최소 30.1)가 ridge 회귀(점선, 36.3)를 크게 앞선다. 예시 데이터(그림 5.6과 같은 설정에서 잡음을 1,000번 다시 뽑음, ISL 그림 6.8 왼쪽과 그림 6.9 오른쪽을 본뜸).
주의 · 「except for the bias」

슬라이드는 \(\lambda\)가 아주 큰 lasso를 「bias를 빼고 모든 계수가 0인 모형」이라 적었다. 이 bias는 같은 그림의 편향의 제곱(Bias²)이 아니라 절편이다. 신경망에서 절편을 bias라 부르는 말버릇으로, 이 책은 두 뜻을 섞지 않는다.

최소점끼리 견주면 ridge 회귀가 35.16으로 lasso의 36.70보다 조금 낫다. 참 계수가 모두 0이 아닌 데이터라, 계수를 0으로 만드는 lasso가 조금 불리하다(슬라이드 그림에서도 ridge 약 36.4, lasso 약 38.0이다). 두 그림의 \(\lambda\) 눈금은 벌점의 척도가 달라 서로 견줄 수 없다.

그러면 어느 쪽이 나은가? 어느 쪽도 늘 이기지는 않는다. 반응이 비교적 적은 수의 feature에만 달려 있으면 lasso가 낫다고 기대할 수 있다. 많은 feature가 비슷한 크기로 이바지하면 ridge 회귀가 낫다(보충, ISL 6.2.2). 그러나 실제 데이터에서 반응과 관계있는 feature가 몇 개인지는 미리 알 수 없다. 그래서 둘 다 적합해 보고 교차검증으로 그 데이터에서 어느 쪽이 나은지 정한다.

(보충) 그림 5.9(b)는 같은 \(\bX\)와 잡음으로 참 계수를 둘만 0이 아니게 바꾼 희소한 경우다(ISL 그림 6.9). 두 방법은 \(\lambda\)의 척도가 달라 가로축을 훈련 데이터의 \(R^2\)로 맞춰 같은 자로 견주었다. 이번에는 lasso의 최소 시험 MSE가 30.08로 ridge 회귀의 36.29보다 훨씬 작다. ridge 회귀는 참 모형이 희소하든 조밀하든 최소가 거의 같은데(36.29와 35.16), lasso는 참 모형이 희소할 때 크게 이긴다. 두 벌점을 함께 쓰는 elastic net도 있다(보충, 슬라이드에는 없다). 표 5.1에 두 방법을 모았다.

표 5.1ridge 회귀와 lasso(보충)
ridge 회귀lasso
벌점\(\lambda\lVert\bbeta\rVert_2^2\), 제곱의 합\(\lambda\lVert\bbeta\rVert_1\), 절댓값의 합
제약 영역원(고차원에서는 구)마름모(3차원에서는 정팔면체)
닫힌 해있다, 식 (5.2)없다 → 좌표 하강법
정규직교 설계의 해같은 비율로 줄인다같은 양만큼 줄이고 0에서 자른다, 식 (5.6)
계수가 정확히 0이 되나되지 않는다\(\lambda\)가 크면 된다(희소)
사전분포로 읽으면정규분포라플라스 분포
유리한 경우많은 feature가 조금씩 이바지소수의 feature만 이바지

5.11 λ의 선택과 모형 선택의 정리 Selecting λ and a Summary of Model Selection

L07 s37–s39 · ISL 6.2.3

부분집합 선택에서 모형의 크기를 골랐듯(3.5–3.6절), ridge 회귀와 lasso에는 \(\lambda\)를 정하는 방법이 필요하다. 3.6절의 교차검증이 간단한 답을 준다.

알고리즘 · 교차검증으로 \(\lambda\) 고르기 (ISL 6.2.3)
  1. \(\lambda\) 후보의 격자(grid)를 정한다. 흔히 로그 간격으로 둔다(보충).
  2. 격자의 \(\lambda\)마다 교차검증오차(cross-validation error)를 계산한다.
  3. 교차검증오차가 가장 작은 \(\lambda\)를 고른다.
  4. (선택) 가진 관측값 모두와 고른 \(\lambda\)로 모형을 다시 적합한다.

넷째 단계는 3.5절의 다섯 단계에서 고른 하이퍼파라미터로 훈련 데이터와 검증 데이터를 합쳐 다시 훈련하던 4단계와 같다. 슬라이드가 이것을 선택 사항으로 둔 것은 교차검증 중에 만든 모형을 그대로 써도 되기 때문으로 보인다. 어느 쪽이든 시험 데이터는 여기서도 쓰지 않는다. (보충) 5.6절의 표준화도 fold마다 그 fold를 뺀 부분으로 다시 계산해야 누수가 없다. 같은 절차는 다른 하이퍼파라미터에도 그대로 쓰인다. 제6장에서는 결정 트리(decision tree)의 크기에 벌점을 주어 가지를 쳐 내는 가지치기(pruning)의 세기도 이렇게 고를 것이다(강의 전이라 예고만 한다).

그림 5.10은 Credit 데이터의 ridge 회귀에서 \(\lambda\)를 고르는 예다(ISL 그림 6.12). ISL처럼 LOOCV(leave-one-out cross-validation)를 썼다. 관측값 하나를 빼고 남은 \(n - 1\)개로 맞춘 뒤 뺀 관측값을 예측하기를 \(n\)번 되풀이해 그 제곱오차(squared error)를 평균하는 것으로, 3.6절의 K-fold 교차검증(K-fold cross-validation)에서 \(K = n\)인 경우다. 관측값을 뺄 때마다 남은 399개로 표준화와 중심화를 다시 했다. LOOCV 오차가 가장 작은 \(\lambda\)는 약 0.35로 슬라이드 그림에서 읽은 약 0.37과 같은 자리이고, 그때 계수 크기의 비는 0.97로 계수가 최소제곱에서 조금만 줄었다(limit 440.1 → 400.7, rating 175.6 → 213.9). 이 데이터에는 규제가 약간만 필요하다는 뜻이다. 곡선의 바닥도 아주 얕다. 사실상 최소제곱인 \(\lambda = 0.001\)의 LOOCV 오차 10,072.6과 최소 10,064.8의 차이는 0.08%뿐이다. 작은 \(\lambda\)에서는 무엇을 골라도 오차가 거의 같고, \(\lambda\)가 1을 넘으면 오차가 빠르게 는다. 슬라이드 그림의 세로축 값(25.0–25.6)은 우리 계산(약 10,000)과 척도가 달라 그대로 견주지 않는다.

10−3 10−2 10−1 100 101 λ 10,000 10,200 10,400 10,600 LOOCV 오차(MSE) 10−3 10−2 10−1 100 101 λ −200 0 200 400 표준화 계수 income student limit rating
그림 5.10LOOCV 오차는 \(\lambda \approx 0.35\)에서 가장 작지만 최소제곱(왼쪽 끝)보다 0.08% 작을 뿐이라 바닥이 아주 얕고, 고른 \(\lambda\)(점선)에서 계수의 크기는 최소제곱의 97%로 조금만 줄어든다. Credit 데이터(ISL 그림 6.12를 다시 그림, ISL도 LOOCV를 썼다).

(보충) 바닥이 얕으면 고르는 \(\lambda\)가 쉽게 흔들린다. 같은 데이터에 10-fold 교차검증을 쓰면 관측값을 fold에 어떻게 나누느냐에 따라 고르는 \(\lambda\)가 0.08에서 0.40까지 오간다(무작위 배정 다섯 번). 최소에서 표준오차(standard error) 하나 안에 드는 \(\lambda\) 가운데 가장 큰 것, 곧 가장 단순한 모형을 고르는 3.6절의 1-표준오차 규칙(one-standard-error rule)을 쓰면 LOOCV로는 \(\lambda \approx 11.9\)(그림 범위 밖)가 되고, 그때는 limit이 297.6, rating이 279.8로 최소제곱과 크게 달라진다. 바닥이 얕은 곡선에서는 어느 규칙을 쓰느냐에 따라 고르는 모형이 크게 달라진다. 3.6절이 규제의 강도도 교차검증으로 고른다고 넘긴 일의 실제 모습이다.

슬라이드는 강의 전체를 한 표로 정리한다(표 5.2). 표의 두 열 위에는 그림 5.2의 결정 경계가 놓인다. 왼쪽 열 위에 (a)의 직선, 오른쪽 열 위에 (c)의 구불구불한 곡선이 있고, (b)는 두 열의 경계에 걸쳐 있다.

표 5.2모형 선택의 정리 — 단순한 쪽과 복잡한 쪽(L07 s39)
단순한 쪽(그림 5.2(a))복잡한 쪽(그림 5.2(c))
파라미터 수적다많다
모형경직되어 있다유연하다
복잡도단순하다복잡하다
결정 경계매끄럽다불규칙하다
규제큰 \(\lambda\)작은 \(\lambda\)
극단의 문제과소적합과적합
편향크다작다
분산작다크다

가운데 열이 없다는 것이 결론이다. 알맞은 용량은 두 극단 사이의 어딘가에 있고, 그 자리를 검증 데이터와 교차검증으로 찾는다. 「규제」 행은 조금 달리 읽는다. 규제는 파라미터 수를 직접 줄이지 않지만(ridge 회귀는 모두 남긴다) 계수의 크기를 눌러 쓸 수 있는 용량을 줄이므로, 같은 열의 다른 칸들과 효과의 방향이 같다(보충). 1.9절의 편향-분산 트레이드오프, 제3장의 모형 선택, 이 장의 조기 종료와 규제가 모두 이 표의 두 열 사이에서 자리를 고르는 일이다.

제6장 결정 트리와 앙상블

Decision Trees and Ensemble Methods

회귀함수(regression function)를 식 하나로 적는 대신 입력(input)의 공간을 축에 나란한 상자(box)로 나눠 상자마다 값 하나로 예측(prediction)하면 어떤가? 앞부분(6.1–6.10절)은 결정 트리(decision tree)를 키우고 줄이며, 1.10절의 이웃(neighbor)과 다수결(majority vote), 3.3–3.4절의 탐욕 알고리즘(greedy algorithm), 3.6절의 교차검증(cross-validation), 4.9절의 베이즈 분류기(Bayes classifier), 5.2절의 모형 용량(model capacity), 5.4–5.5절의 벌점항(penalty term)을 가져와 제5장이 넘긴 가지치기(pruning)를 6.5–6.6절에서 받는다. 뒷부분(6.11–6.22절)은 쉽게 흔들리는 트리(6.10절)를 부트스트랩(bootstrap), bagging, random forest, boosting으로 여럿 합친다. 1.9·2.6절의 평균제곱오차(mean squared error, MSE) 분해, 2.7절의 식 (2.19), 3.6절의 K-fold, 4.2절의 \(\pm 1\) 부호화와 로그 오즈(log odds), 4.4·4.6절의 로그 손실(log-loss)과 0-1 손실(0-1 loss)을 다시 쓰고, 3.4절의 stagewise 선택과 5.3절의 지수 손실(exponential loss)을 6.19·6.21절에서 받는다. L08 s42(알고리즘 요약)만 6.8절로 앞당겼다.

이 장의 구성

  1. 6.1트리 기반 방법102
  2. 6.2회귀 트리103
  3. 6.3영역의 예측값104
  4. 6.4재귀적 이진 분할106
  5. 6.5트리의 과적합108
  6. 6.6비용 복잡도 가지치기110
  7. 6.7분류 트리113
  8. 6.8불순도와 분할 기준114
  9. 6.9Heart 데이터의 분류 트리116
  10. 6.10트리와 선형 모형, 그리고 트리의 장단점118
  11. 6.11부트스트랩119
  12. 6.12부트스트랩의 한계와 교차검증121
  13. 6.13bagging122
  14. 6.14bagging의 분석124
  15. 6.15앙상블의 사례126
  16. 6.16bagging한 트리와 random forest126
  17. 6.17boosting128
  18. 6.18AdaBoost129
  19. 6.19AdaBoost와 지수 손실130
  20. 6.20AdaBoost의 작동 예132
  21. 6.21회귀의 boosting133
  22. 6.22앙상블의 정확도와 해석력135

원천 Lecture 8 (2026-10-12) 슬라이드 4–7, 9–20, 22–30, 32–43 · Lecture 9 (2026-10-14) 슬라이드 4–10, 12–20, 22–24, 26–39 · 읽기 ISL 8.1–8.2, 5.2
6.1–6.10절은 Lecture 8에서, 6.11–6.22절은 Lecture 9에서 왔다.

6.1 트리 기반 방법 Tree-Based Methods

L08 s04–s06 · ISL 8장 도입

제2–5장의 선형회귀(linear regression), 로지스틱 회귀(logistic regression), ridge 회귀, lasso는 모두 feature의 선형 결합(linear combination) \(\beta_0 + \beta_1x_1 + \cdots + \beta_px_p\)를 바탕에 둔 모형(model)이었다. 트리 기반 방법(tree-based method)은 그런 식을 세우지 않는다. feature가 가질 수 있는 값 전체인 feature 공간(feature space)을 단순한 영역(region) 몇 개로 나누고, 같은 영역에 떨어진 입력에는 같은 값을 예측한다. 영역을 나누는 규칙, 곧 분할(split) 규칙은 나무 모양의 그림 하나로 요약된다. 1.3절과 1.10절에서 본 두 문제, 회귀(regression)와 분류(classification)에 모두 쓰며, 회귀는 6.2–6.6절에서, 분류는 6.7–6.10절에서 다룬다.

슬라이드는 척추 수술 뒤에 척추가 굽는 합병증이 생길 확률을, 수술을 시작한 척추의 번호와 환자의 나이로 예측하는 트리를 세 가지로 그려 보인다. 트리 그림, 확률을 높이로 세운 입체 그림, 위에서 내려다본 feature 공간의 나눔이다. 트리의 잎 하나는 feature 공간의 직사각형 영역 하나이고, 입체 그림에서는 높이가 일정한 평평한 판 하나다. 예측이 영역 안에서 일정하므로 예측면은 계단 모양이 된다. 같은 대응을 6.2절의 그림 6.2가 실제 데이터로 보인다.

정의 · 트리 기반 방법

feature 공간을 서로 겹치지 않는 단순한 영역 여럿으로 나누고, 관측값(observation)이 어느 영역에 떨어지느냐에 따라 예측하는 방법이다. 나누는 규칙을 트리로 요약하므로 이렇게 부른다. 반응이 수치이면 회귀 트리(regression tree), 범주이면 분류 트리(classification tree)다.

트리의 용어 Tree Terminology

슬라이드는 자료구조의 트리 용어를 복습으로 다뤘지만 이 책에는 처음 나오므로 정리해 두자. 트리는 재귀적으로 정의된다. 트리 하나는 서로 겹치지 않는 두 부분으로 나뉜다. 하나는 맨 위의 노드(node) 하나로, 뿌리 노드(root node)라 한다(슬라이드는 노드를 vertex라고도 적었다). 다른 하나는 그 아래에 매달린 트리 여럿으로, 각각을 뿌리의 부분 트리(subtree)라 한다. 노드와 노드를 잇는 선은 간선(edge)이고, 결정 트리에서는 가지(branch)라고도 부른다. 간선으로 이어진 두 노드 가운데 위쪽이 부모 노드(parent node), 아래쪽이 자식 노드(child node)이며, 부모가 같은 노드끼리는 형제 노드(sibling node)다. 자식이 없는 노드는 잎 노드(leaf node), 자식이 있는 노드는 내부 노드(internal node)다. 뿌리 쪽으로 거슬러 올라가며 만나는 노드는 조상(ancestor), 아래로 내려가며 만나는 노드는 자손(descendant)이다.

B를 뿌리로 하는 부분 트리 A B C D E F 뿌리 노드 내부 노드 잎 노드 간선 형제 부모 · 자식 B는 D의 부모, D는 B의 자식 조상 · 자손 A는 D의 조상, D는 A의 자손 내부 노드 · 잎 노드 A, B는 자식이 있다(내부) C, D, E, F는 없다(잎)
그림 6.1뿌리 노드 A에서 간선을 따라 내려가면 자식이 없는 잎 노드(네모)에서 끝나고, B와 그 자손 D, E, F는 A의 부분 트리(파랑) 하나를 이룬다. 개념도(L08 s04를 다시 그림).

그림 6.1에서 뿌리는 A이고, A의 자식 B와 C는 형제다. C, D, E, F가 잎이고 A와 B가 내부 노드다. D의 조상은 B와 A이며, B와 그 자손 D, E, F가 A의 부분 트리 하나를 이룬다. 노드가 여섯이면 간선은 다섯이다. 뿌리를 뺀 노드마다 부모로 가는 간선이 꼭 하나씩 있기 때문이다(보충).

(보충) 결정 트리는 이 그림과 달리 내부 노드마다 자식이 꼭 둘이다. 6.4절에서 보듯 노드 하나를 언제나 둘로만 나누기 때문이다. 그래서 잎의 수는 늘 내부 노드의 수보다 하나 많다. 분할 하나가 잎 하나를 잎 둘로 바꾸기 때문이다. 뿌리에서 가장 먼 잎까지의 간선 수를 트리의 깊이(depth)라 한다. 그림 6.1의 깊이는 2다.

장점과 단점의 예고 Pros and Cons in Brief

슬라이드는 트리의 장단점을 먼저 밝힌다. 트리는 단순하고 해석하기 쉽지만, 예측 정확도(accuracy)에서는 대개 다른 방법과 겨루지 못한다. 1.8절의 그림 1.6이 이 자리를 보였다. 해석력(interpretability)과 유연성(flexibility)을 두 축으로 방법을 늘어놓은 그 그림에서 결정 트리는 두 축 모두 가운데에 있었다. 최소제곱법(least squares)보다 유연하고, 그 오른쪽 아래의 bagging과 boosting보다 해석하기 쉽다. bagging, random forest, boosting은 트리를 여럿 키워 그 예측을 하나의 합의로 합치는 방법으로, 흔히 예측 정확도를 크게 높인다. 이렇게 여러 모형의 예측을 합치는 방법을 앙상블(ensemble)이라 한다. 앙상블은 6.13–6.21절에서 다루고, 6.10절까지는 그 재료인 트리 하나를 키우는 데까지다. 트리의 장단점은 6.10절에서, 앙상블이 얻고 잃는 것은 6.22절에서 다시 정리한다.

6.2 회귀 트리 Regression Trees

L08 s07, s09–s10 · ISL 8.1.1

슬라이드의 예는 야구 선수의 연봉 데이터, 곧 ISL의 Hitters 데이터다. 1986–87년 메이저리그 타자들의 기록과 연봉을 담았고, 연봉이 빠진 59명을 빼면 263명이 남는다. 여기서는 feature 둘만 쓴다. Years는 메이저리그에서 뛴 햇수이고 Hits는 지난해 친 안타 수다. 반응변수(response)는 연봉 Salary에 로그를 씌운 log Salary다. 연봉은 소수의 고액 선수 쪽으로 길게 치우쳐 있어서 로그를 씌우면 고르게 퍼진다. 그러니 이것은 Years와 Hits로 log Salary를 예측하는 회귀 문제다.

log는 자연로그이고 Salary의 단위는 천 달러다. 슬라이드는 「log Salary: $100,000 → 5.0」이라 적었는데, 이것은 달러 단위에 밑이 10인 로그를 씌운 값(\(\log_{10} 100{,}000 = 5\))이라 ISL과 이 책의 척도(scale)와 다르다. 이 책의 척도에서 10만 달러는 \(\log 100 \approx 4.61\)이고, 5.0은 약 14만 8천 달러다(\(e^{5} \approx 148\)).

그림 6.2(a)는 이 데이터에 맞춘 회귀 트리다. 새 선수 \(\bx\)의 연봉을 예측하려면 뿌리 노드의 조건 Years < 4.5부터 본다. 참이면 왼쪽 부분 트리로, 거짓이면 오른쪽 부분 트리로 내려간다. 잎 노드에 닿을 때까지 같은 일을 되풀이하고, 닿은 잎에 적힌 값을 예측값(predicted value) \(\hat{y}\)으로 낸다. 경력이 6년이고 지난해 안타가 150개인 선수라면 Years < 4.5가 거짓이라 오른쪽으로 가고, Hits < 117.5도 거짓이라 다시 오른쪽으로 가서 6.74를 예측한다. 이 트리는 내부 노드가 둘, 잎이 셋이다. 잎의 값은 트리를 훈련(training)할 때 그 잎에 떨어진 관측값들의 반응 평균(mean)이다. 왜 평균인지는 6.3절에서 본다.

노드의 조건은 늘 \(x_j < s\) 꼴이다. \(x_j\)는 입력 \(\bx \in \R^p\)의 \(j\)번째 feature 값이고, \(s\)는 그 노드의 분할점(cutpoint)이다. feature 하나만 보고 값 하나에서 자르므로 영역의 경계는 늘 좌표축에 나란하다. 슬라이드는 입력을 \(\bx \in \R^d\), 분할점을 \(k\)번째 내부 노드의 임곗값(threshold) \(t_k\)로 적었는데, 이 책은 feature 수를 \(p\)로 쓰고 \(k\)를 클래스(class) 첨자로 남겨 두므로 분할점을 \(s\)로 쓴다(슬라이드도 6.4절의 자리부터 \(s\)로 쓴다). 잎에서 내는 값도 슬라이드는 \(y\)라 했지만 예측값 \(\hat{y}\)이다.

같은 트리를 feature 공간의 나눔으로 다시 볼 수 있다(그림 6.2(b)). 뿌리의 조건은 Years = 4.5의 세로선이 되고, 오른쪽 부분 트리의 조건은 Years ≥ 4.5 쪽에만 그은 Hits = 117.5의 가로선이 된다. 잎 셋이 직사각형 영역 셋이다.

$$\begin{aligned} R_1 &= \{\bx \mid \text{Years} < 4.5\} \\ R_2 &= \{\bx \mid \text{Years} \ge 4.5,\ \text{Hits} < 117.5\} \\ R_3 &= \{\bx \mid \text{Years} \ge 4.5,\ \text{Hits} \ge 117.5\} \end{aligned}$$

가로선이 왼쪽 띠까지 이어지지 않는 것이 요점이다. 둘째 분할은 이미 나뉜 영역 하나(Years ≥ 4.5) 안에서만 일어난다. 영역의 번호는 ISL을 따랐다.

(a) 회귀 트리 Years < 4.5 5.11 R1, 90명 Hits < 117.5 6.00 R2, 90명 6.74 R3, 83명 참 거짓 (b) 세 영역 0 5 10 15 20 25 0 50 100 150 200 250 Years Hits R1 · 5.11 R2 · 6.00 R3 · 6.74 log Salary 5.52 미만 5.52–6.47 6.47 이상 구간마다 약 1/3
그림 6.2(a)의 회귀 트리는 뿌리 조건 Years < 4.5가 참이면 왼쪽 잎으로, 거짓이면 Hits < 117.5를 물어 아래 두 잎 가운데 하나로 보내고, (b)에서 같은 트리는 feature 공간을 직사각형 영역 셋으로 나눈다. 잎과 영역 이름표의 수는 그 영역에 든 훈련 관측값의 평균 log Salary, 곧 예측값 \(\hat{y}_{R_m}\)이다. 점의 모양은 log Salary를 인원이 같게 셋으로 나눈 구간이고(낮음 ○, 가운데 점, 높음 ▲), 겹치지 않게 Years 방향으로 조금 흩뜨려 찍었다. Hitters 데이터 263명(ISL 그림 8.1–8.2를 다시 그림).

트리는 그대로 읽힌다. 첫 분할이 Years이므로 경력이 연봉에 가장 중요하다. 경력이 짧은 선수(4년 이하)는 안타 수와 상관없이 같은 값으로 예측되고, 경력이 충분하면(5년 이상) 지난해 안타가 많을수록 연봉이 높다. 슬라이드의 「5+ Years」는 Years ≥ 4.5를 정수 햇수로 읽은 것이다(Hits는 비율이 아니라 안타 수이므로 슬라이드의 「hit rate」는 안타 수로 읽는다). 그림 6.2(b)의 점 모양도 이 해석을 뒷받침한다. 263명을 log Salary의 세 구간으로 나눠 보면 \(R_1\)의 90명 가운데 71명이 가장 낮은 구간이고, \(R_3\)의 83명 가운데 61명이 가장 높은 구간이다.

(보충) 잎 값을 연봉으로 되돌리면 \(e^{5.1068} \approx 165.1\), \(e^{5.9984} \approx 402.8\), \(e^{6.7397} \approx 845.3\)천 달러다. 경력 5년 이상에 지난해 안타 118개 이상인 선수는 경력 4년 이하인 선수의 약 다섯 배를 받는다는 예측이다. 로그의 평균을 되돌린 값이라 같은 영역의 연봉을 그대로 평균한 값보다 작다.

6.3 영역의 예측값 The Prediction in Each Region

L08 s11–s13 · ISL 8.1.1

그림 6.2의 트리는 어떻게 얻었나? 슬라이드는 트리를 만드는 일을 두 단계로 나눈다(ISL 8.1.1).

정의 · 트리를 만드는 두 단계
  1. 1단계. feature 공간, 곧 \(x_1, \dots, x_p\)가 가질 수 있는 값의 집합을 서로 겹치지 않는 영역 \(J\)개 \(R_1, R_2, \dots, R_J\)로 나눈다.
  2. 2단계. 영역 \(R_m\)에 떨어지는 관측값에는 모두 같은 값을 예측한다.

슬라이드는 2단계를 먼저 다룬다. 영역이 주어지면 값을 정하기는 쉽고, 영역을 정하는 1단계가 어렵기 때문이다. 영역의 첨자는 \(m\)으로 쓴다. 슬라이드는 영역 첨자에도 \(j\)를 썼지만, \(j\)는 노드 조건 \(x_j < s\)의 feature 첨자이기도 해서 ISL 식 8.4처럼 \(m\)으로 가른다.

가장 단순한 선택은 영역마다 상수 하나를 두는 것이다. 영역 \(R_m\)에 떨어지는 입력은 모두 같은 값 \(\hat{y}_{R_m}\)으로 예측한다. 너무 단순해 보이지만, 영역이 충분히 작으면 그 안에서 반응이 크게 변하지 않으니 상수로도 괜찮은 근사가 된다. 1.3절이 조건부 기댓값(conditional expectation)을 데이터로 추정(estimation)하는 첫째 길로 든 「\(x\) 근처의 관측값을 평균한다」와 같은 발상이다(보충). 상수는 최소제곱법으로 고른다. 영역 \(J\)개 전체의 잔차제곱합(residual sum of squares, RSS)은 다음과 같다(ISL 식 8.1).

$$\RSS = \sum_{m=1}^{J}\sum_{i:\,\bx_i \in R_m}\big(y_i - \hat{y}_{R_m}\big)^2 \tag{6.1}$$

안쪽 합은 영역 \(R_m\)에 든 훈련 관측값에 대한 합이다. 영역마다 다른 상수가 따로 들어가므로 식 (6.1)은 영역별 제곱합으로 갈라지고, 영역마다 따로 최소화하면 된다. 영역 \(R_m\)에 줄 상수를 \(c_m\), 그 영역의 훈련 관측값 수를 \(n_m\)이라 하자. 아래 합은 모두 \(\bx_i \in R_m\)인 \(i\)에 대한 것이다.

  1. 제곱합을 펼치면 \(c_m\)의 이차식 \(\sum_i (y_i - c_m)^2 = \sum_i y_i^2 - 2c_m\sum_i y_i + n_mc_m^2\)이다.
  2. \(c_m\)으로 미분해 0으로 두면 \(-2\sum_i y_i + 2n_mc_m = 0\)이다.
  3. 풀면 \(c_m = \frac{1}{n_m}\sum_i y_i\)이다. 이차항 앞의 \(n_m\)이 양수라 이 점이 최솟점이다(보충).
결과 · 영역의 예측값은 평균이다 $$\begin{aligned} \hat{y}_{R_m} &= \argmin_{c_m}\sum_{i:\,\bx_i \in R_m}(y_i - c_m)^2 \\ &= \frac{1}{n_m}\sum_{i:\,\bx_i \in R_m} y_i \end{aligned} \tag{6.2}$$

회귀 트리의 잎은 그 영역에 든 훈련 관측값의 반응 평균을 예측한다.

그림 6.2의 잎 값 5.11은 \(R_1\)에 든 90명의 log Salary 평균 5.107이다. (보충) 1.5절의 식 (1.4)는 조건부 기댓값이 제곱오차(squared error)의 기댓값을 최소화한다고 했는데, 식 (6.2)는 그것을 데이터에 옮긴 것이다. 영역 안의 표본평균(sample mean)이 영역 안의 제곱오차 합을 최소화한다. 그림 6.2의 트리에서 식 (6.1)의 값은 91.33으로, 나누기 전에 모두에게 평균 5.927 하나를 예측할 때의 207.15에서 절반 아래로 줄었다.

주의 · 슬라이드의 「MLE」

슬라이드는 이 평균을 최대가능도 추정(maximum likelihood estimation, MLE)으로 구한다고 적었지만, 위에서 한 것은 제곱오차의 최소화, 곧 최소제곱이다. 2.4절에서 보았듯 오차가 정규분포(normal distribution)를 따른다고 가정하면 최소제곱이 MLE와 같다(식 (2.12)). ISL은 MLE라 하지 않는다. 슬라이드가 스칼라 \(y_i\), \(\hat{y}\), \(c\)를 굵게 쓴 것도 이 책은 보통체로 쓴다.

(보충) 트리는 영역을 배우는 선형 모형(linear model)으로 볼 수도 있다. 영역마다의 예측을 하나로 모으면 \(\hat{f}(\bx) = \sum_{m=1}^{J}\hat{y}_{R_m}\,I(\bx \in R_m)\)이다. \(I(\cdot)\)는 1.10절의 지시함수(indicator function)다. 영역마다 지시함수 하나를 feature로 만들면 이것은 그 feature들의 선형 모형이고, 계수(coefficient) \(\hat{y}_{R_m}\)은 그 최소제곱 해다. 영역이 겹치지 않으니 계수마다 따로 풀린다. 다른 점은 feature, 곧 영역 자체를 데이터에서 배운다는 것이다(ESL 9.2.2. ESL은 Hastie, Tibshirani, Friedman의 The Elements of Statistical Learning 2판이다). 1.3절의 「근처의 평균」을 1.10절의 K-최근접 이웃(K-nearest neighbors, KNN)은 예측할 점마다 거리로 고른 이웃 \(K\)개로 계산하고, 트리는 분할 규칙이 미리 나눠 둔 영역으로 계산한다. 그래서 트리의 예측 \(\hat{f}\)는 영역의 경계에서 끊기는 계단 함수(step function)다.

6.4 재귀적 이진 분할 Recursive Binary Splitting

L08 s14–s20 · ISL 8.1.1

이제 1단계, 영역을 정하는 일이다. 이상적으로는 식 (6.1)을 가장 작게 하는 상자 \(R_1, \dots, R_J\)를 찾고 싶다. 상자는 축에 나란한 직사각형(고차원이면 직육면체)이다. 그러나 feature 공간을 상자 \(J\)개로 나누는 모든 방법을 따지는 것은 계산상 불가능하다. (보충) feature 하나에 서로 다른 값이 \(n\)개만 있어도 그것을 이어진 구간 \(J\)개로 나누는 방법이 \(\binom{n-1}{J-1}\)가지이고, feature가 여럿이면 축마다의 선택이 곱해지며, \(J\)도 미리 알지 못한다. 3.2절에서 \(2^p\)개 모형을 다 따지기 어려웠던 것과 같은 조합(combination)의 폭발이다.

그래서 하향식(top-down)이고 탐욕적인 재귀적 이진 분할(recursive binary splitting)을 쓴다. 하향식은 트리의 뿌리, 곧 feature 공간 전체에서 출발해 아래로 차례차례 나눠 간다는 뜻이다. 분할 하나는 트리에서 노드 하나가 가지 둘을 내는 것으로 나타난다. 탐욕적이라는 것은 단계마다 그 자리에서 가장 좋은 분할을 고르고, 나중에 더 좋은 트리로 이어질 분할을 내다보지 않는다는 뜻이다. 3.3절의 전진 단계적 선택(forward stepwise selection)이 모든 부분집합 대신 한 번에 feature 하나씩 가장 좋아 보이는 것을 더했던 것과 같은 타협이고, 3.4절의 말로 탐욕 알고리즘이다. 탐욕의 대가는 6.5절에서 본다.

(a) 뿌리 · Years로 나눌 때 0 5 10 15 20 25 분할점 s 100 125 150 175 200 225 나누기 전 207.15 s = 4.5, RSS 115.06, 감소 92.10 (b) 뿌리 · Hits로 나눌 때 0 50 100 150 200 분할점 s s = 117.5, RSS 160.97, 감소 46.18 나눈 뒤 트리의 RSS (c) 둘째 단계 · Years로 나눌 때 0 5 10 15 20 25 분할점 s 90 100 110 120 지금 트리 115.06 (d) 둘째 단계 · Hits로 나눌 때 0 50 100 150 200 분할점 s s = 117.5, RSS 91.33, 감소 23.73 나눈 뒤 트리의 RSS Years < 4.5 영역 안에서 Years ≥ 4.5 영역 안에서
그림 6.3뿌리에서는 Years로 나눌 때(a) RSS가 가장 크게 줄어 Years < 4.5를 고르고, 둘째 단계에서는 두 영역의 모든 후보(c, d) 가운데 Years ≥ 4.5 영역을 Hits < 117.5로 나누는 것이 트리 전체의 RSS를 가장 많이 줄인다(115.06 → 91.33). 세로축은 나눈 뒤 트리 전체의 RSS이고 (c)와 (d)는 세로축을 확대했다. 두 자식에 관측값이 5개 이상씩 남는 분할점만 그렸다. Hitters 데이터 263명(L08 s16–s17을 실제 RSS로 다시 그림).

한 번의 분할 A Single Split

분할 하나는 이렇게 고른다. 모든 feature \(X_j\)와, feature마다 가능한 모든 분할점 \(s\)를 따진다. \(j\)와 \(s\)마다 feature 공간을 두 반평면(half-plane)

$$R_1(j, s) = \{\bx \mid x_j < s\}, \qquad R_2(j, s) = \{\bx \mid x_j \ge s\}$$

으로 나누고, 그 결과의 RSS

$$\sum_{i:\,\bx_i \in R_1(j,s)}\big(y_i - \hat{y}_{R_1}\big)^2 + \sum_{i:\,\bx_i \in R_2(j,s)}\big(y_i - \hat{y}_{R_2}\big)^2 \tag{6.3}$$

가 가장 작은 \((j, s)\)를 고른다(ISL 식 8.2–8.3). \(\hat{y}_{R_1}\), \(\hat{y}_{R_2}\)는 두 반평면에 든 훈련 관측값의 평균이다(식 (6.2)). 고른 \(j\)와 \(s\)가 그 노드의 조건 \(x_j < s\)가 된다. feature가 셋 이상이면 반평면은 반공간이지만 ISL과 슬라이드를 따라 반평면이라 부른다. (보충) 분할점의 후보는 유한하다. 훈련 데이터(training data)에서 그 feature가 갖는 서로 다른 값을 정렬해 이웃한 두 값의 가운데만 보면 된다. 그 사이 어디에 \(s\)를 두든 두 반평면에 드는 관측값이 같기 때문이다. Years < 4.5는 4년과 5년 사이의 분할점이다.

그림 6.3은 Hitters에서 이 과정을 실제 RSS로 그린 것이다. 뿌리에서 나누기 전 RSS는 207.15다. Years로 나누면 \(s = 4.5\)에서 RSS가 115.06으로 가장 작고(감소 92.10, 뿌리의 44.5%), Hits로 나누면 \(s = 117.5\)에서 160.97이 가장 작다(감소 46.18). 둘 가운데 작은 Years < 4.5가 뿌리의 조건이 된다. 한쪽에 몇 명만 남기는 극단의 분할점은 RSS를 거의 줄이지 못해서, 곡선이 양 끝에서 나누기 전 수준(점선)으로 올라간다. 슬라이드 s16–s17도 같은 과정을 그렸지만, 후보마다 적은 점수(5.6, 5.2 등)는 실제 RSS가 아니라 고르는 순서를 보이려는 예시 수치다. 분할은 RSS를 늘릴 수 없으니 둘째 단계의 점수가 첫 단계의 5.6을 넘을 수 없는데 9.5, 13.5 같은 값이 있다. 그래도 어느 분할이 뽑히는지는 실제와 같다.

(a) 재귀적 이진 분할이 아닌 분할(보충) X1 X2 (b) 재귀적 이진 분할 R1 R2 R3 R4 R5 t1 t3 t2 t4 X1 X2 (c) (b)의 트리 x1 < t1 x2 < t2 R1 R2 x1 < t3 R3 x2 < t4 R4 R5
그림 6.4재귀적 이진 분할(b)은 둘째 분할부터 이미 나뉜 영역 하나만 나누므로 \(t_2\)와 \(t_4\)의 선이 반쪽에서 멈추고, 그 나눔은 (c)의 트리와 하나씩 대응한다. (a)의 바람개비 모양 나눔은 끝까지 가로지르는 선이 없어 재귀적 이진 분할로 만들 수 없다(보충). 분할점 \(t_1, \dots, t_4\)는 ISL 그림의 이름이다. 개념도(ISL 그림 8.3을 본뜸, L08 s19).

되풀이와 멈춤 Repeating and Stopping

둘째 분할부터는 feature 공간 전체가 아니라 이미 나뉜 영역 가운데 하나를 나눈다. 그래서 분할을 한 번 할 때마다 영역이 하나씩 는다. 그림 6.3(c)(d)가 Hitters의 둘째 단계다. 두 영역 각각에서 두 자식에 관측값이 5개 이상씩 남는 \((j, s)\)를 모두 따지면(이 조건은 아래 문단의 규칙이다), Years < 4.5 영역은 Years < 3.5로 나눌 때 그 영역의 RSS가 9.21 줄고, Years ≥ 4.5 영역은 Hits < 117.5로 나눌 때 23.73 준다. 트리 전체의 RSS를 더 많이 줄이는 뒤쪽이 뽑혀 RSS가 115.06에서 91.33이 되고, 그림 6.2의 트리가 된다.

이 일은 언제까지 하나? 훈련 관측값이 어떤 최소 개수보다 많은 영역만 「나눌 수 있는」 노드로 후보에 든다. 관측값이 그 아래로 내려간 영역은 고정되어 다시는 나누지 않는다. 모든 영역이 고정되거나 따로 정한 정지 규칙(stopping rule)을 만족하면 멈춘다. ISL의 예는 「관측값이 다섯 개보다 많은 영역이 없을 때까지」다. 슬라이드의 「no region contains 5+ observations」는 글자 그대로는 관측값이 다섯 개 이상인 영역이 없을 때, 곧 모두 네 개 이하일 때라 ISL과 하나 다르지만, 영역이 충분히 작아지면 멈춘다는 뜻은 같다. 이 장의 그림은 R의 tree 패키지의 기본 규칙으로 키웠다. 관측값이 10개 이상인 노드를 두 자식에 5개 이상씩 남도록만 나누고, 노드의 RSS가 뿌리의 1% 밑이면 더 나누지 않는다.

그림 6.4(b)–(c)는 분할 네 번으로 영역 다섯을 만든 일반적인 모습이다(ISL 그림 8.3). 둘째 분할부터는 이미 나뉜 영역 하나만 나누므로 \(t_2\)의 선은 왼쪽에서, \(t_4\)의 선은 오른쪽에서 멈춘다. (보충) 거꾸로 말하면 축에 나란한 직사각형 나눔이라고 모두 트리로 만들 수 있지는 않다. 그림 6.4(a)의 바람개비 모양 나눔은 어느 선도 정사각형을 끝까지 가로지르지 않아 첫 분할이 될 선이 없다. 슬라이드는 ISL 그림 가운데 이 패널을 빼고 실었다.

알고리즘의 요약 Summary of the Algorithm

슬라이드는 지금까지를 의사코드(pseudocode)로 요약한다. 6.8절의 분류 트리 요약과 견주기 쉽게 단계로 옮기면 다음과 같다.

알고리즘 · 회귀 트리 키우기 (L08 s20)
  1. 훈련 데이터 전체를 담은 뿌리 노드 하나에서 시작한다.
  2. 나눌 수 있는 노드마다, 모든 feature \(X_j\)와 분할점 \(s\)에 대해 노드를 \(x_j < s\)와 \(x_j \ge s\)로 나누고, 두 자식의 평균과 식 (6.3)의 두 자식 RSS를 계산한다.
  3. 노드의 RSS에서 두 자식 RSS를 뺀 감소량이 가장 큰 (노드, \(j\), \(s\))를 골라 그 노드를 나눈다.
  4. 정지 규칙을 만족할 때까지 2–3을 되풀이한다. 잎마다 식 (6.2)의 평균을 예측값으로 둔다.
주의 · 슬라이드 의사코드의 노드 고르기

슬라이드의 의사코드는 나눌 수 있는 모든 노드 \(v\)와 \((j, s)\)에 대해 두 자식의 RSS 합 err\((v, j, s)\)를 구한 뒤, pick (v, j, s) with minimum err(v, j, s)로 그 값이 가장 작은 것을 고른다. 같은 노드 안에서 \((j, s)\)를 견줄 때는 맞지만, 노드끼리 견줄 때는 나누기 전 RSS에서 뺀 감소량, 곧 나눈 뒤 트리 전체의 RSS로 견줘야 한다. 자식의 RSS만 보면 관측값이 적어 처음부터 RSS가 작은 노드가 늘 유리하다. Hitters의 둘째 단계에서 err는 Years < 4.5 영역이 33.14(Years < 3.5), Years ≥ 4.5 영역이 48.98(Hits < 117.5)이라 의사코드대로라면 왼쪽을 나누지만, 감소량은 9.21 대 23.73으로 오른쪽이 크다. 슬라이드도 분류 트리에서는 「지금 이득이 가장 커 보이는 노드를 고른다」고 적어(6.8절) 감소량으로 견주는 쪽이다.

(보충) 정지 규칙에 걸릴 때까지 모든 노드를 끝까지 나눈다면, 어느 노드를 먼저 나누는지는 최종 트리를 바꾸지 않는다. 노드마다 제 영역 안에서 가장 좋은 분할을 따로 고르기 때문이다. 노드를 고르는 기준이 결과를 바꾸는 것은 잎의 수나 분할의 수를 정해 두고 도중에 멈출 때다. 6.6절의 큰 트리는 끝까지 키운 트리다.

6.5 트리의 과적합 Overfitting in Decision Trees

L08 s22–s24 · ISL 8.1.1

트리도 과적합(overfitting)할까? 그렇다. 정지 규칙을 아주 느슨하게 두고 계속 나누면 결국 영역마다 훈련 관측값이 하나(분류라면 한 클래스)만 남아 훈련오차(training error)가 0이 된다. 그러면 관측값 하나가 넓은 영역 전체의 예측을 정한다. 그림 6.5가 그 모습이다. 오른쪽 위 영역 \(R_5\)에는 음성 관측값이 하나뿐인데, 트리는 그 하나 때문에 \(R_5\) 전체를 음성으로 예측한다. 그 점이 잡음(noise)이라면 트리는 잡음 하나에 맞춘 셈이고, 이것이 1.7절과 5.1절에서 본 과적합이다. 그림은 두 클래스의 분류 문제로 그렸지만(분류 트리는 6.7절) 과적합의 모양은 회귀에서도 같다. 1.10절에서 본 슬라이드의 KNN 그림에서 경계가 점 하나를 둘러싼 작은 섬을 만들던 것과 같은 현상이다(보충).

그러면 무엇을 바꿔야 하나? 슬라이드는 제5장의 정리 표(표 5.2)로 돌아간다. 과적합을 줄이려면 모형을 표의 왼쪽, 단순한 쪽 열로 옮겨야 한다. 표의 위 다섯 행, 곧 모형 쪽에서 돌릴 수 있는 손잡이를 하나씩 따져 보면 셋은 트리에서 막혀 있다.

t1 t3 t2 t4 X1 X2 R1 R2 R3 R4 R5 R5 전체를 음성으로 예측 훈련 관측값이 하나뿐인데도 R4에는 양성이 일곱 개
그림 6.5끝까지 나누면 훈련 관측값이 하나(○)뿐인 영역 \(R_5\)도 생기고, 트리는 그 하나 때문에 \(R_5\) 전체를 음성으로 예측한다. 파랑은 음성 클래스와, 이 그림의 주인공인 영역 \(R_5\)를 함께 나타낸다. 개념도(L08 s22를 다시 그림).

남은 것은 파라미터 수와 결정 경계(decision boundary)의 행이다. 분할을 줄이면 둘 다 왼쪽으로 간다. 분할 하나가 분할점과 잎 값을 하나씩 더하므로 분할 수가 곧 파라미터 수 노릇을 하고, 분할이 적을수록 결정 경계가 매끄럽다. 그러니 트리의 모형 용량은 잎의 수와 깊이로 잰다(5.2절). 제5장 끝에서 트리의 깊이와 잎 노드의 수가 용량에 해당한다고 넘긴 것이 이것이다.

분할이 적은 작은 트리(작은 \(J\))는 편향(bias)을 조금 들이는 대신 분산(variance)을 줄이고 해석하기도 쉽다. 1.9절의 편향-분산 트레이드오프(bias-variance trade-off)다. 작게 키우는 한 방법은 분할 하나가 주는 RSS 감소가 어떤 (높은) 임곗값을 넘을 때만 계속 나누는 것이다. 분할의 수를 줄이는 손잡이다. (보충) 나아짐이 작으면 멈춘다는 점에서 5.3절의 조기 종료(early stopping)와 닮았지만, 검증 데이터(validation set)가 아니라 훈련 RSS의 감소만 본다. 그러나 이 방법은 근시안적이다. 처음에는 쓸모없어 보이는 분할 뒤에 RSS를 크게 줄이는 아주 좋은 분할이 올 수 있다. 트리를 탐욕적으로 키우기 때문이다.

그림 6.6이 그런 경우다. 두 클래스가 XOR 꼴로 놓인 네 덩어리(중심 \((\pm1, \pm1)\), 덩어리마다 50개)를 반응 0·1의 회귀 트리로 나눠 보자. 뿌리의 RSS는 50.00이다. 뿌리에서는 어느 축의 어느 분할점으로 잘라도 양쪽이 여전히 반반이라 RSS가 거의 줄지 않는다. 가장 많이 줄여도 1.3%이고(\(X_1\)의 가장자리 \(s = 1.13\)), 가운데 \(x_1 = 0\) 근처에서는 0%다(그림 6.6(b)). 임곗값을 뿌리 RSS의 5%로 두면 뿌리에서 멈춰 트리가 자라지 않는다. 그런데 가운데 \(x_1 = 0\)으로 한 번 자르고 나면, 양쪽을 \(x_2 = 0\)으로 나누는 분할이 각각 뿌리 RSS의 50%를 줄여(그림 6.6(c)) 잎 넷으로 완벽하게 갈린다. 첫 분할의 값어치는 다음 분할에서야 드러난다.

임곗값 규칙은 이렇게 일찍 멈춰, 쓸모없어 보이는 분할 뒤에 올 좋은 분할을 놓친다. 그래서 다른 전략이 필요하다. 일단 크게 키운 다음 가지를 쳐 낸다(6.6절). (보충) 다만 가지치기가 고치는 것은 일찍 멈추는 문제뿐이다. 임곗값 없이 탐욕적으로 고르면 감소가 가장 큰 첫 분할은 가운데가 아니라 오른쪽 끝의 점 21개를 떼어 내는 가장자리(\(x_1 < 1.13\))이고, 슬라이드가 「실제로 배운 트리」라며 실은 두 그림도 이런 가장자리 분할로 된 얕은 트리로 보인다. 이 데이터로 6.4절의 규칙대로 크게 키운 트리도 뿌리가 이 가장자리 분할이고, 잎을 더 써서 훈련 관측값을 거의 다 맞힌다. 그러나 뿌리를 \(x_1 = 0\)으로 가르는 잎 넷의 이상적인 트리는 얻을 수 없다. 가지치기는 분할을 지울 뿐 바꾸지 못하므로 어떤 부분 트리도 그 트리가 아니다.

(a) 데이터와 이상적인 분할 −2 0 2 −2 0 2 X1 X2 (b) 뿌리에서 나눌 때 −2 −1 0 1 2 0% 10% 20% 30% 40% 50% 분할점 s RSS 감소(뿌리 RSS 대비) 임곗값 5%(예) X1로 나눌 때 X2로 나눌 때 확대: 세로축 0–1.5% 1% 최대 1.3%(s = 1.13) 어디서 잘라도 거의 줄지 않는다 (c) x1 = 0으로 나눈 뒤 각 쪽 안에서 −2 −1 0 1 2 0% 10% 20% 30% 40% 50% 분할점 s RSS 감소(뿌리 RSS 대비) 임곗값 5%(예) x1 < 0 쪽을 X2로 x1 ≥ 0 쪽을 X2로
그림 6.6XOR 꼴 데이터(a)는 뿌리에서 어느 축의 어느 분할점으로 나눠도 RSS가 거의 줄지 않아(b, 최대 1.3%) 임곗값 5% 같은 규칙이면 트리가 자라지 않지만, 가운데 \(x_1 = 0\)으로 한 번 나누고 나면 양쪽을 \(x_2 = 0\)으로 나누는 둘째 분할이 뿌리 RSS의 50%씩을 줄인다(c). 파랑은 음성 클래스(○)와, 이 그림의 주인공인 둘째 분할((a)의 점선, (c)의 곡선)을 함께 나타낸다. 예시 데이터(L08 s24를 계산으로 다시 그림).

6.6 비용 복잡도 가지치기 Cost Complexity Pruning

L08 s25–s30 · ISL 8.1.1

다른 전략은 아주 큰 트리 \(T_0\)를 먼저 키운 뒤, 가지를 쳐 내 작은 트리로 되돌리는 것이다. 쓸모없어 보이는 분할 뒤에 오는 좋은 분할도 큰 트리 안에는 들어 있으니, 쳐 낼 때 둘을 함께 남길 수 있다. 6.5절의 임곗값 규칙은 거기까지 가지 못했다. 문제는 어떤 부분 트리로 되돌리느냐다. \(T_0\)의 가지를 쳐서 얻는 부분 트리 \(T \subset T_0\)는 너무 많아 모두 교차검증으로 평가(evaluation)할 수 없다. 비용 복잡도 가지치기(cost complexity pruning)는 음이 아닌 튜닝 파라미터(tuning parameter) \(\alpha\)로 줄 세운 부분 트리들만 본다.

정의 · 비용 복잡도 가지치기

\(\alpha \ge 0\)마다 다음을 가장 작게 하는 부분 트리 \(T \subset T_0\)를 고른다.

$$\sum_{m=1}^{\lvert T\rvert}\sum_{i:\,\bx_i \in R_m}\big(y_i - \hat{y}_{R_m}\big)^2 + \alpha\lvert T\rvert \tag{6.4}$$

\(\lvert T\rvert\)는 \(T\)의 잎 노드 수, \(R_m\)은 \(m\)번째 잎의 영역, \(\hat{y}_{R_m}\)은 그 영역의 평균이다. 첫 항은 \(T\)의 훈련 RSS(식 (6.1))다. weakest link pruning이라고도 한다(ISL 식 8.4).

\(\alpha\)는 트리의 복잡도와 훈련 데이터에 맞는 정도 사이의 트레이드오프를 정한다. 슬라이드의 말대로 \(\alpha\lvert T\rvert\)는 규제(regularization)의 벌점항과 같은 구실을 하고, \(\alpha\)는 5.4–5.5절의 \(\lambda\)에 해당한다(제4·5장의 학습률(learning rate) \(\alpha\)와 글자는 같지만 뜻이 다르다). (보충) 다른 점은 벌하는 대상이다. ridge 회귀와 lasso는 계수의 크기를 벌했지만 식 (6.4)는 잎의 개수를 센다. \(\alpha = 0\)이면 벌점이 없어 \(T_0\) 자신이 답이고, \(\alpha\)를 키울수록 잎 하나가 비싸져 작은 트리가 뽑힌다. 이렇게 얻는 트리들은 차례로 포개진다. \(\alpha\)를 키우면 가지가 예측할 수 있는 순서로 잘려 나가, 큰 \(\alpha\)의 트리는 작은 \(\alpha\)의 트리의 부분 트리다(ISL 8.1.1). 그래서 \(\alpha\)를 고르는 일은 이 수열에서 트리 크기(tree size), 곧 잎 노드 수 \(\lvert T\rvert\) 하나를 고르는 일과 같다.

가장 약한 고리 The Weakest Link

수열은 쉽게 얻는다. 매번 잎 하나를 줄일 때 첫 항(RSS)이 가장 적게 느는 곳을 접으면 된다(아래 보충). 슬라이드는 이것을 「주된 항의 이점이 가장 작은 두 잎 노드를 합친다」고 적었는데, 정확히는 내부 노드 하나를 접어 그 아래 부분 트리 전체를 잎 하나로 만든다. 접히는 부분 트리에 잎이 셋 이상이면 잎이 한 번에 둘 이상 줄고, 잎 둘을 합치는 것은 두 자식이 모두 잎인 특수한 경우다.

보충 · 잎 하나당 RSS 증가

내부 노드 \(v\)를 뿌리로 하는 부분 트리를 \(T_v\)라 하자(노드 \(v\)는 6.4절의 의사코드와 같은 기호다). \(v\)를 접으면 잎이 \(\lvert T_v\rvert - 1\)개 줄고, RSS는 노드 \(v\) 하나를 잎으로 둘 때의 RSS와 \(T_v\)의 잎들의 RSS 합의 차이만큼 는다. 잎 하나를 줄일 때 늘어나는 RSS

$$\alpha_v = \frac{\RSS(v) - \RSS(T_v)}{\lvert T_v\rvert - 1}$$

가 가장 작은 노드가 가장 약한 고리다. 식 (6.4)에서 \(\alpha\)가 \(\alpha_v\)와 같으면 \(v\)를 접은 트리와 접지 않은 트리의 값이 같고, \(\alpha_v\)를 넘으면 접는 편이 작다. 그래서 가장 약한 고리부터 차례로 접으면 모든 \(\alpha\)의 최선 부분 트리가 나온다(ESL 9.2.2).

교차검증으로 α 고르기 Choosing α by Cross-Validation

이제 슬라이드의 네 단계(ISL 알고리즘 8.1)를 모을 수 있다.

알고리즘 · 가지치기로 회귀 트리 만들기 (ISL 알고리즘 8.1)
  1. 재귀적 이진 분할로 훈련 데이터에서 큰 트리 \(T_0\)를 키운다. 잎 노드의 관측값이 어떤 최소 개수보다 적어질 때에만 멈춘다.
  2. \(T_0\)에 비용 복잡도 가지치기를 써서 \(\alpha\)에 따른 최선 부분 트리의 수열을 얻는다.
  3. K-fold 교차검증(K-fold cross-validation)으로 \(\alpha\)를 고른다. fold마다 그 fold를 뺀 훈련 데이터로 1–2단계를 되풀이하고, 뺀 fold에서 \(\alpha\)에 따른 MSE를 잰다. fold에 걸쳐 평균해 가장 작은 \(\alpha\)를 고른다.
  4. 2단계의 수열에서 고른 \(\alpha\)에 해당하는 부분 트리를 돌려준다.

3단계는 3.6절에서 교차검증으로 하이퍼파라미터(hyperparameter)를 고르던 일 그대로이고, 5.11절에서 \(\lambda\)를 고르던 것과 같다. 슬라이드는 3단계를 「교차검증으로 \(\alpha\)를 고른다」는 한 줄로 적었지만(fold 수를 소문자 \(k\)로 썼다), fold를 하나씩 뺄 때마다 남은 훈련 데이터로 트리를 새로 키우고 가지를 쳐야 한다. \(T_0\)의 부분 트리들을 그대로 뺀 fold에 대 보면, 그 fold가 이미 \(T_0\)를 키우는 데 쓰였으므로 오차를 낮게 잰다(3.5절의 데이터 누수(data leakage)).

Hitters의 예 An Example with the Hitters Data

슬라이드는 네 단계를 Hitters 데이터로 하나씩 보인다(ISL 그림 8.4–8.5). 이 책은 ISL처럼 263명을 무작위로 훈련 132명과 시험 데이터(test data) 131명으로 나누고, 지난 시즌의 기록 여덟(AtBat, Hits, HmRun, Runs, RBI, Walks, Putouts, Assists)과 경력 Years, 모두 아홉 feature로 다시 계산했다. ISL은 아홉 feature가 무엇인지 밝히지 않았는데, 슬라이드의 트리에 나오는 Years, RBI, Putouts, Hits, Walks, Runs가 모두 여기에 든다. RBI는 타점, Walks는 볼넷, Runs는 득점, Putouts는 수비에서 잡아낸 아웃 수다.

1단계. 훈련 데이터로 키운 \(T_0\)는 잎이 17개, 깊이가 6이다(그림 6.7). 뿌리가 Years < 4.5이고 그 오른쪽 자식이 Hits < 117.5인 것은 슬라이드(ISL)의 \(T_0\)와 같지만, 그 아래의 노드는 다르고 슬라이드의 \(T_0\)는 잎이 12개다. 훈련 데이터를 무작위로 나눈 결과가 ISL과 다르기 때문이다. 같은 feature가 여러 번 쓰이는 것(Years와 RBI가 세 번, HmRun이 네 번)은 영역마다 따로 나누기 때문이다.

Years < 4.5 RBI < 68.5 Hits < 117.5 Walks < 10 5.92 5.85 Runs < 27.5 4.41 Years < 3.5 4.82 5.38 Years < 6.5 Putouts < 771 RBI < 44 RBI < 31.5 HmRun < 7 5.91 5.22 5.69 HmRun < 4.5 HmRun < 7.5 6.09 5.64 6.14 6.57 HmRun < 28.5 7.23 AtBat < 566 7.11 Hits < 138 6.74 6.65 6.25 교차검증으로 고른 잎 3개짜리 부분 트리
그림 6.7Hitters 훈련 데이터 132명으로 끝까지 키운 트리 \(T_0\)는 잎이 17개이고, 교차검증이 고른 잎 3개짜리 부분 트리(파랑)는 그 뿌리 쪽 두 분할만 남긴 것이다. 잎에 적은 수는 그 잎에 든 훈련 관측값의 평균 log Salary다. Hitters 데이터(ISL 그림 8.4를 다시 계산함 — 훈련 데이터가 달라 ISL과 노드가 다르다).

2단계. 가장 약한 고리부터 접은 수열은 표 6.1과 같다. \(\alpha\)가 표의 한 열의 값에 이르면 그 열의 크기가 식 (6.4)를 최소화하는 트리가 되고, 다음 열의 값에 이르기 전까지 그대로다. 크기 16과 4는 수열에 없다. 그 자리에서 접힌 노드의 부분 트리에 잎이 셋이라 잎이 한 번에 둘씩 줄었기 때문이다. 슬라이드 s28은 잎 둘을 하나씩 합치며 열두 개에서 하나까지 모든 크기를 거쳤다.

표 6.1Hitters 훈련 데이터의 가지치기 수열 — \(\alpha\)가 한 열의 값에 이르면 그 열의 크기가 식 (6.4)를 최소화한다. 굵은 글씨는 교차검증이 고른 크기
트리 크기 \(\lvert T\rvert\)1715141312111098765321
\(\alpha\)(꺾이는 점)00.520.590.600.680.791.071.231.611.692.033.054.3714.0445.47
훈련 MSE0.17850.18630.19080.19530.20050.20650.21460.22390.23610.24890.26430.28740.35360.46000.8044
교차검증 MSE0.48360.47620.47150.45970.46260.46150.46660.45360.45100.44130.44470.46790.40720.51030.8127
시험 MSE0.36730.34910.34710.35270.34600.34950.34870.39050.39210.40330.39070.39340.34220.41560.7735

3단계. 6-fold 교차검증(fold마다 22명)으로 크기마다 MSE를 잰 것이 그림 6.8(a)다. 훈련 MSE는 트리가 클수록 계속 준다. 교차검증 MSE는 잎 3개에서 가장 작은 0.407(표준오차(standard error) 0.093)이고, 그보다 크면 다시 늘어 평평해진다. 5.1절의 과적합 모양이 트리 크기를 가로축으로 나타난 것이다. 최소에서 표준오차 하나 안에 드는 크기 가운데 가장 작은 트리를 고르는 3.6절의 1-표준오차 규칙(one-standard-error rule)으로 골라도 잎 3개다. 0.407 + 0.093 = 0.500 안에 드는 더 작은 트리가 없기 때문이다(잎 2개는 0.510). 4단계. 수열에서 잎 3개짜리 트리를 꺼내면 그림 6.8(b)다. 슬라이드(ISL)도 잎 3개를 골랐고, 그 트리도 Years < 4.5와 Hits < 117.5로 이루어진다.

(a) 트리 크기에 따른 MSE 1 5 10 15 0 0.2 0.4 0.6 0.8 1.0 트리 크기 |T|(잎 수) MSE 훈련 교차검증 ± 표준오차 시험 교차검증이 고른 크기 3 (b) 가지 친 트리(훈련 132명, 잎 3개) Years < 4.5 5.07 40명 Hits < 117.5 5.97 47명 6.75 45명
그림 6.8트리가 클수록 훈련 MSE(검정)는 계속 줄지만 6-fold 교차검증 MSE(파랑)는 잎 3개에서 가장 작고(0.407) 그 뒤로 다시 늘어 평평해지며, 그 크기의 트리(b)는 뿌리 쪽 두 분할만 남긴다. 이 데이터 분할에서는 시험 MSE(주황 점선)도 잎 3개에서 가장 작다(0.342). 가로축에 16과 4가 없는 것은 가지치기 수열이 그 크기를 건너뛰기 때문이다. Hitters 데이터, 훈련 132명·시험 131명(ISL 그림 8.5와 8.1을 다시 계산함).

이 데이터 분할에서는 시험 MSE도 잎 3개에서 가장 작다(0.342). 그러나 이것을 일반적인 성질로 읽으면 안 된다. 슬라이드의 그림(ISL 그림 8.5)에서도 교차검증의 최소는 잎 3개지만 시험 오차가 가장 낮은 것은 잎 10개였다(판독값 약 0.33). (보충) 이 책의 그림은 슬라이드와 같은 모양이 나오는 분할을 골라 그린 것이다. 훈련·시험 분할을 스무 번 바꿔 같은 절차를 되풀이하면 교차검증이 잎 3개를 고른 것은 여섯 번뿐이고, 고른 크기는 3에서 19까지 흔들리고 그 중앙값(median)은 5.5다. 고른 트리의 시험 MSE는 시험 MSE가 가장 작은 부분 트리보다 중앙값으로 0.037 높았다. 교차검증은 시험오차(test error)의 꽤 좋은 근사일 뿐 시험오차 자체가 아니다.

(보충) 그림 6.8(b)의 잎 값 5.07, 5.97, 6.75는 그림 6.2의 5.11, 6.00, 6.74와 조금 다르다. 같은 두 분할이지만 훈련 데이터 132명(잎마다 40명, 47명, 45명)만으로 평균을 냈기 때문이다. 슬라이드 s30의 잎 값 5.325, 6.148, 6.880은 슬라이드가 s28에서 잎을 합치며 적어 넣은 값으로 ISL에는 없어, 어떻게 얻었는지 확인할 수 없다(합친 값 가운데 6.514와 5.919는 두 자식 값의 단순 평균과 같아 예시 수치일 수 있다).

6.7 분류 트리 Classification Trees

L08 s32–s34 · ISL 8.1.2

분류 트리는 회귀 트리와 거의 같다. 다른 것은 수치인 반응 대신 질적(qualitative), 곧 범주형(categorical)인 반응을 예측한다는 점이다. 관측값이 떨어진 영역에서 훈련 관측값이 가장 많은 클래스로 예측한다. 6.3절의 두 단계도 그대로다. 1단계는 feature 공간을 영역 \(J\)개로 나누고, 2단계는 한 영역에 떨어지는 관측값에 모두 같은 예측을 한다. 달라지는 것은 각 단계의 세부, 곧 2단계에서 줄 값(이 절)과 1단계에서 분할을 고르는 기준(6.8절)이다.

2단계부터 보자. 회귀에서는 영역의 평균을 줬다(식 (6.2)). 분류에서는 영역 안의 다수결이다. 영역 \(R_m\)에 든 훈련 관측값 가운데 클래스 \(k\)의 비율을 \(\hat{p}_{mk}\)라 하면 다음과 같다.

$$\hat{y}_{R_m} = \argmax_{k \in \mathcal{C}}\ \hat{p}_{mk}, \qquad \hat{p}_{mk} = \frac{1}{n_m}\sum_{i:\,\bx_i \in R_m} I(y_i = k) \tag{6.5}$$

비율의 \(1/n_m\)은 클래스와 상관없는 상수라, 개수가 가장 많은 클래스를 고르는 것과 같다. 슬라이드는 비율을 모자 없이 \(p_{j,k}\)로 적었지만 데이터에서 잰 추정값(estimate)이라 ISL처럼 \(\hat{p}_{mk}\)로 쓴다.

정의 · 분류 트리

feature 공간을 회귀 트리와 같은 방법으로 영역들로 나누고, 영역마다 그 안에서 가장 흔한 훈련 관측값의 클래스(식 (6.5))를 예측하는 트리다.

(보충) \(\hat{p}_{mk}\)는 그 영역에서 사후확률(posterior probability) \(\mathbb{P}(Y = k \mid X = \bx)\)의 추정이다. 그러니 식 (6.5)는 사후확률이 가장 큰 클래스를 고르는 4.9절의 베이즈 분류기, 식 (4.16)을 영역 안의 비율로 근사한 것이다. 1.10절의 KNN이 식 (1.11)–(1.12)에서 이웃 \(K\)개의 비율로 같은 근사를 했던 것과 모양이 같고, 이웃 대신 영역을 쓴다. 잎이 다수결 대신 비율 자체를 내면 확률을 예측하는 트리가 된다. 6.1절에서 말한 슬라이드 s05의 척추 수술 트리가 잎마다 적은 0.58 같은 수(그 잎에서 합병증이 생긴 비율)가 그것이다.

6.8 불순도와 분할 기준 Impurity and the Splitting Criterion

L08 s35–s37, s42 (앞당김) · ISL 8.1.2

1단계, 분할을 고르는 기준이 남았다. 나누는 방법은 회귀와 같은 하향식·탐욕적 재귀적 이진 분할이다. 매 단계 나눌 수 있는 노드 가운데 지금 나눴을 때 이득이 가장 커 보이는 노드를 고르고, 모든 feature와 분할점을 따진다. 바뀌는 것은 분할의 점수다. 최종 목표는 1.10절의 오분류율(misclassification error rate)이 가장 낮은 트리지만, 분할마다 노리는 것은 두 영역이 될 수 있는 한 한 클래스로만 채워지는 것, 곧 순도(purity)가 높은 것이다(슬라이드의 「as unanimous as possible」). 슬라이드는 이 단계를 「오분류율이 가장 낮은 트리」를 고르고 「분류 오차를 최소화」한다고 적었지만, 실제로 최소화하는 것은 아래에서 정의하는 불순도(impurity)다. 오분류율을 바로 쓰지 않는 까닭은 이 절의 끝에서 본다.

영역에 클래스가 섞인 정도를 불순도라 하고 영역 \(R\)의 불순도를 \(Q(R)\)로 적으면, 분할 기준은 두 영역의 불순도를 크기로 가중한 합이다.

$$n_1\,Q\big(R_1(j, s)\big) + n_2\,Q\big(R_2(j, s)\big) \tag{6.6}$$

\(n_1\), \(n_2\)는 노드 안에서 \(R_1(j, s)\), \(R_2(j, s)\)에 드는 훈련 관측값 수다. 노드 하나 안에서는 \(n_1 + n_2\)가 정해져 있으므로, 이것을 최소화하는 것은 두 자식 불순도의 가중 평균을 최소화하는 것과 같다. 회귀의 식 (6.3)이 바로 이 꼴이다. 영역의 RSS는 관측값 수 × 영역 안의 MSE이므로(Hitters의 Years < 4.5 영역은 90 × 0.4706 = 42.35), 식 (6.3)은 \(Q\)를 영역 안의 MSE로 둔 식 (6.6)이다.

주의 · 슬라이드의 분할 기준은 크기로 나눈다

슬라이드 s35와 s42는 \(\frac{1}{n_1}Q(R_1) + \frac{1}{n_2}Q(R_2)\)를 최소화한다고 적고, 「크기로 나누어 더 큰 영역을 고르도록 한다」고 설명했다. 표준(ESL 9.2.3, R의 tree 패키지, scikit-learn)은 식 (6.6)처럼 크기로 곱한다. 크기로 나누면 거꾸로 작은 영역의 불순도가 무겁게 세어지고, 큰 영역의 불순도는 \(1/n\)로 눌려 거의 공짜가 된다. 그래서 큰 쪽을 그대로 둔 채 작고 순수한 무리를 떼어 내는 분할이 뽑힌다. (보충) 클래스별 개수가 (50, 50)인 노드를 (40, 10)과 (10, 40)으로 가르는 분할과 (1, 0)과 (49, 50)으로 가르는 분할을 견주면, 아래에서 정의할 세 불순도 어느 것으로 재도 슬라이드의 기준은 하나만 떼어 내는 뒤쪽을, 식 (6.6)은 고르게 가르는 앞쪽을 고른다. 실제 데이터의 예는 6.9절에 있다.

엔트로피 Entropy

불순도의 첫째 정의는 엔트로피(entropy)다.

$$D_m = -\sum_{k \in \mathcal{C}} \hat{p}_{mk}\log\hat{p}_{mk} \tag{6.7}$$

\(0\log 0 = 0\)으로 둔다. 영역의 관측값이 모두 한 클래스이면 \(D_m = 0\)으로 가장 순수하고, 클래스가 고르게 섞일수록 커져 모든 클래스의 비율이 같으면 최댓값 \(\log\lvert\mathcal{C}\rvert\)에 이른다. 슬라이드의 예는 클래스 다섯이다. 비율이 [1, 0, 0, 0, 0]이면 0, [0.5, 0.5, 0, 0, 0]이면 \(\log 2 \approx 0.693\), [0.2, 0.2, 0.2, 0.2, 0.2]이면 \(\log 5 \approx 1.609\)다. (보충) 정보이론에서 엔트로피는 영역에서 뽑은 관측값의 클래스를 알아맞히는 데 드는 평균 정보량이다. 순수한 영역에서는 놀랄 일이 없어 0이다.

주의 · 「cross-entropy」와 로그의 밑

슬라이드의 그래프 주석은 이 양을 「cross-entropy」라 불렀지만, 식 (6.7)은 분포 하나의 엔트로피다. 4.8절 식 (4.13)의 교차 엔트로피(cross-entropy)는 정답의 분포와 모형의 분포, 두 분포 사이의 양이다. ESL은 식 (6.7)을 「cross-entropy or deviance」라고도 부르므로 그 이름을 따른 것일 수 있다. 또 그 그래프는 두 클래스의 최댓값이 1.0이라 밑이 2인 로그다. 다음 슬라이드의 그래프(최댓값 약 0.69)와 이 책은 자연로그를 쓴다. 밑을 바꾸면 모든 값에 같은 상수가 곱해질 뿐이라 어느 분할이 뽑히는지는 바뀌지 않는다.

지니 지수 The Gini Index

또 하나 널리 쓰는 불순도는 지니 지수(Gini index)다.

$$G_m = \sum_{k \in \mathcal{C}} \hat{p}_{mk}\big(1 - \hat{p}_{mk}\big) = 1 - \sum_{k \in \mathcal{C}} \hat{p}_{mk}^2 \tag{6.8}$$

슬라이드는 합의 첨자를 \(j\)로 적었지만(\(\sum_{j=1}^{K}\)) 더하는 것은 클래스 \(k\)에 대한 항이고, 좌변에도 영역의 첨자가 빠졌다. 같은 예 셋에서 지니 지수는 0, \(2 \times 0.5 \times 0.5 = 0.5\), \(5 \times 0.2 \times 0.8 = 0.8\)이다. 클래스가 \(\lvert\mathcal{C}\rvert\)개이면 최댓값은 \(1 - 1/\lvert\mathcal{C}\rvert\)다(보충). (보충) 지니 지수는 영역에서 관측값 둘을 복원 추출했을 때 두 클래스가 다를 확률로 읽을 수 있다. 그림 6.9가 두 클래스에서 두 지수를 견준다. 크기는 다르지만(최댓값이 엔트로피는 \(\log 2\), 지니 지수는 0.5) 가운데에서 크고 양 끝에서 0인 둥근 모양이 거의 같아, 분할을 고를 때 비슷하게 작동한다(ISL 8.1.2).

0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 ln 2 ≈ 0.693 엔트로피 지니 지수 오분류율(보충) p (한 클래스의 비율) 불순도
그림 6.9한 클래스의 비율 \(\hat{p}\)가 0이나 1이면(순수한 노드) 세 불순도가 모두 0이고 \(\hat{p} = 0.5\)에서 가장 크며, 엔트로피(검정)와 지니 지수(파랑)는 크기만 다를 뿐 모양이 거의 같은 둥근 곡선이지만 오분류율(회색 점선, 보충)은 꺾인 직선이다. 두 클래스, 엔트로피는 자연로그(L08 s36–s37의 그래프를 다시 그림).

(보충) 오분류율로 키우지 않는 까닭 Why Not the Misclassification Rate

영역의 오분류율은 다수결로 틀리는 비율 \(E_m = 1 - \max_k \hat{p}_{mk}\)다(ISL 식 8.5). 최종 목표가 이것인데 왜 지니 지수나 엔트로피로 키우는가? 오분류율은 트리를 키우는 데 충분히 민감하지 않기 때문이다(ISL 8.1.2). 표 6.2는 ESL 9.2.3의 예다. 클래스마다 400개인 노드를 두 가지로 나눠 보자. A는 (300, 100)과 (100, 300)으로, B는 (200, 400)과 (200, 0)으로 나눈다. 두 분할 모두 200개를 틀려 오분류율이 0.25로 같다. 그러나 B는 완전히 순수한 노드 (200, 0)을 만들고, 그 노드는 더 나눌 필요가 없다. 지니 지수와 엔트로피는 B를 더 낮게 본다. 오분류율은 틀린 개수만 세므로 A와 B를 가르지 못하지만, 둥근 곡선인 지니 지수와 엔트로피는 순수한 쪽으로 갈수록 더 크게 줄어 순수한 자식을 만드는 B에 점수를 더 주기 때문이다(그림 6.9). 꺾인 직선인 오분류율은 또 두 자식이 부모와 같은 쪽(다수 클래스가 같은 쪽)에 머물면 가중 평균이 조금도 줄지 않는다. 6.9절에 그런 분할이 나온다.

표 6.2클래스마다 400개인 노드를 두 가지로 나눌 때 자식 불순도의 가중 평균(보충, ESL 9.2.3의 예)
분할왼쪽 자식오른쪽 자식오분류율지니 지수엔트로피
나누기 전(400, 400)—0.5000.5000.693
A(300, 100)(100, 300)0.2500.3750.562
B(200, 400)(200, 0)0.2500.3330.477

가지치기에서는 사정이 다르다. 최종 예측의 정확도가 목표라면 가지를 칠 때는 오분류율을 쓰기도 한다(ISL 8.1.2). 6.9절의 예가 그렇게 했다.

분류 트리 알고리즘의 요약 Summary of the Classification Tree Algorithm

슬라이드는 강의 끝에 분류 트리의 의사코드를 실었는데(s42), 회귀 트리의 요약(6.4절)과 나란히 놓으려고 여기로 옮겼다. 회귀의 요약에서 식 (6.3)이 식 (6.6)으로, 평균이 다수결로 바뀌었을 뿐이다. 슬라이드의 의사코드에서 자식의 예측을 적은 argmax_k(y_i = k)에는 개수를 세는 합이 빠졌고(뜻은 식 (6.5)), err 줄은 불순도를 크기로 나눈다(위의 주의). 노드끼리 견주는 문제는 6.4절의 주의 그대로다. 바로잡아 단계로 옮기면 다음과 같다.

알고리즘 · 분류 트리 키우기 (L08 s42)
  1. 훈련 데이터 전체를 담은 뿌리 노드 하나에서 시작한다.
  2. 나눌 수 있는 노드마다, 모든 feature \(X_j\)와 분할점 \(s\)에 대해 노드를 \(x_j < s\)와 \(x_j \ge s\)로 나누고 식 (6.6)의 값을 계산한다.
  3. 나누기 전 노드의 관측값 수 × 불순도에서 식 (6.6)을 뺀 감소량이 가장 큰 (노드, \(j\), \(s\))를 골라 그 노드를 나눈다.
  4. 정지 규칙을 만족할 때까지 2–3을 되풀이한다. 잎마다 식 (6.5)의 다수결을 예측값으로 둔다.

6.9 Heart 데이터의 분류 트리 A Classification Tree for the Heart Data

L08 s38–s40 · ISL 8.1.2

슬라이드는 분류 트리의 예로 ISL의 Heart 데이터를 쓴다. 가슴 통증으로 병원에 온 환자 303명의 기록으로, 반응 HD는 혈관 조영 검사로 판정한 심장병 여부(Yes, No)다. feature는 13개로, 나이 Age와 콜레스테롤 수치 Chol을 비롯해 성별 Sex, 가슴 통증의 종류 ChestPain, 운동 중 최대 심박수 MaxHR, 주요 혈관 수 Ca, 탈륨 검사 결과 Thal 같은 심장과 폐 기능의 측정값이다. Ca와 Thal에 값이 빠진 여섯 명을 빼면 297명(Yes 137명, No 160명)이 남는다. ChestPain과 Thal은 범주형이다. 원자료의 반응 열 이름은 AHD이지만 슬라이드와 ISL 본문을 따라 HD라 쓴다.

범주형 feature는 가변수(dummy variable) 없이 바로 나눈다. 범주 몇 개를 왼쪽 가지로, 나머지를 오른쪽 가지로 보내는 것이다. 슬라이드의 가지치기 전 트리(ISL 그림 8.6 위)에서 뿌리의 「Thal:a」는 Thal의 첫째 범주(normal)를 왼쪽으로 보낸다는 표시이고, 「ChestPain:bc」는 ChestPain의 둘째와 셋째 범주를 왼쪽으로 보낸다는 표시다(ISL 8.1.2). 2.9절에서는 범주형 feature를 회귀에 넣으려고 가변수를 만들어야 했다. (보충) ChestPain처럼 범주가 넷이면 두 묶음으로 나누는 방법이 \(2^3 - 1 = 7\)가지이고, 범주가 하나 늘 때마다 거의 두 배가 된다. 그러나 반응이 두 클래스이면 범주를 Yes의 비율 순으로 늘어놓고 그 순서의 앞 묶음과 뒤 묶음으로 가르는 방법(범주가 넷이면 세 가지)만 보아도 엔트로피나 지니 지수의 최선 분할을 놓치지 않는다(ESL 9.2.4). 이 책의 계산도 그렇게 했다. 이 정리는 자식의 크기에 제한이 없을 때의 것이라, 자식마다 다섯 명 이상을 요구한 이 책의 계산에서는 드물게 최선 분할을 놓칠 수 있다. 이 장의 그림에서는 결과가 같았다.

슬라이드의 트리에는 두 잎이 같은 클래스인 분할도 있다. 예컨대 RestECG < 1의 두 잎은 모두 Yes다. 예측이 바뀌지 않는데 왜 나눴을까? 분할이 노드의 순도를 높이기 때문이다. ISL의 설명으로 그 오른쪽 잎은 9명 모두 Yes이고 왼쪽 잎은 11명 가운데 7명이 Yes라, 오른쪽 잎에 떨어진 환자의 예측은 더 확신할 수 있다(ISL 8.1.2). 불순도는 이런 분할로 줄지만 오분류율은 줄지 않는다. 6.8절에서 본, 오분류율로 트리를 키우지 않는 둘째 까닭이다.

이 책은 297명을 무작위로 훈련 150명과 시험 147명으로 나눠 다시 계산했다(훈련의 Yes 비율 44.7%). 엔트로피로 키운 \(T_0\)는 잎이 15개, 깊이가 6이고 훈련 관측값 16명(10.7%)을 틀린다. 첫 분할은 슬라이드처럼 Thal이다. Thal이 normal인 85명 가운데 Yes는 17명(20.0%)이고, 나머지 65명 가운데 Yes는 50명(76.9%)이다. 이 \(T_0\)에도 두 자식이 같은 클래스를 예측하는 분할이 셋 있다. (보충) 6.8절의 주의를 이 데이터로 확인할 수 있다. 슬라이드의 기준처럼 불순도를 크기로 나누어 첫 분할을 고르면, 자식마다 다섯 명 이상을 요구해도 MaxHR < 108.5로 여섯 명(모두 Yes)만 떼어 낸다. 297명 전체에서는 식 (6.6)이 Thal이 normal인지로 164명과 133명을 가르지만, 슬라이드의 기준은 자식의 최소 크기를 두지 않으면 Age < 76.5로 한 명만 떼어 낸다.

가지치기는 6.6절의 절차대로 하되, 식 (6.4)의 RSS 자리에 훈련 데이터의 오분류 수를 두었다(6.8절 끝, R의 prune.misclass). 오분류 수로 가지를 치면 두 자식이 같은 클래스인 분할은 접어도 오분류 수가 늘지 않으므로 \(\alpha = 0\)에서 바로 접힌다. 이런 분할이 셋 있고, 셋을 접고 나면 그 위 노드 하나도 두 자식이 같은 클래스가 되어 함께 접힌다. 그래서 수열이 잎 15개가 아니라 11개에서 시작한다. 10-fold 교차검증으로 고른 크기는 잎 8개이고(교차검증 오분류율 22.7%, 표준오차 3.7%), 그 트리의 시험 오분류율은 22.4%(147명 가운데 33명)다(그림 6.10).

(a) 트리 크기에 따른 오분류율 1 2 3 4 5 6 7 8 9 10 11 0% 10% 20% 30% 40% 50% 트리 크기 |T|(잎 수) 오분류율 훈련 교차검증 ± 표준오차 시험 고른 크기 8 (b) 가지 친 트리(잎 8개) Thal = normal MaxHR < 135 Ca < 0.5 Sex < 0.5 No No Yes Chol < 276 Yes ChestPain ∈ {typical, nontypical} Yes No Oldpeak < 0.65 No Yes
그림 6.10잎이 늘수록 훈련 오분류율(검정)은 줄지만 10-fold 교차검증 오분류율(파랑)은 잎 8개에서 가장 작은 22.7%이고(a), 그 크기로 가지 친 트리(b)는 Thal이 normal인지로 먼저 가른다. 잎 이름표는 그 잎의 다수결 예측이다. 가로축에는 가지치기 수열에 있는 크기만 찍혔다. Heart 데이터의 훈련 150명(ISL 그림 8.6을 다시 계산함 — 훈련 데이터가 달라 ISL과 노드가 다르다).

고른 트리는 이렇게 읽힌다. Thal이 normal이고 최대 심박수가 높으면(MaxHR ≥ 135) No다(70명 가운데 Yes 9명). Thal이 normal이 아니고 주요 혈관이 하나 이상 보이면(Ca ≥ 1) Yes다(42명 가운데 40명). 나머지는 성별, 콜레스테롤, 가슴 통증의 종류, Oldpeak로 더 갈린다. 슬라이드의 가지 친 트리(ISL)는 잎이 6개이고, 뿌리의 Thal 아래가 Ca, MaxHR, ChestPain으로 이루어져 이 책의 트리와 노드가 다르다. ISL이 데이터를 어떻게 나눴는지 밝히지 않아 그대로 맞출 수는 없다. (보충) 훈련·시험 분할을 스무 번 바꿔 보면 뿌리의 분할부터 달라지고(Thal이 normal인지 8번, Ca < 0.5가 5번, ChestPain이 asymptomatic인지 3번 등), 고른 크기는 2에서 13까지, 시험 오분류율은 대략 18–30%로 흔들린다. 6.10절에서 말할 트리의 불안정함이다.

6.10 트리와 선형 모형, 그리고 트리의 장단점 Trees versus Linear Models; Pros and Cons of Trees

L08 s41, s43 · ISL 8.1.3–8.1.4

트리와 선형 모형은 어느 쪽이 나은가? 선형회귀와 로지스틱 회귀는 feature의 선형 결합으로, 트리는 영역마다의 상수 \(\hat{f}(\bx) = \sum_m \hat{y}_{R_m} I(\bx \in R_m)\)(6.3절)으로 \(f\)를 놓는다. 답은 문제의 구조에 달렸다. 그림 6.11은 ISL 그림 8.7의 모양을 예시 데이터로 다시 만든 것이다. 두 feature가 \([-2, 2]^2\)에 고르게 퍼진 훈련 관측값 200개이고, 레이블(label)의 5%를 무작위로 뒤집었다.

참 경계가 기운 직선인 Data 1에서는 로지스틱 회귀의 직선이 참 경계와 거의 겹쳐 시험 오분류율이 6.9%이고, 가지 친 트리(잎 4개)는 축에 나란한 계단으로 직선을 흉내 낼 뿐이라 12.0%다. 참 경계가 축에 나란한 상자 꼴인 Data 2에서는 거꾸로 트리(잎 3개)가 경계를 거의 그대로 찾아 8.0%이고, 로지스틱 회귀는 직선으로 꺾인 경계를 따라가지 못해 22.8%다. 레이블을 5% 뒤집었으므로 참 경계를 알아도 피할 수 없는 4.9절의 베이즈 오류율(Bayes error rate)은 두 데이터 모두 5%다. 시험 데이터에서 참 경계로 재면 각각 4.93%, 5.35%다.

Data 1 · 참 경계가 기운 직선 (a) 로지스틱 회귀 −2 0 2 −2 0 2 X1 X2 시험 6.9% (b) 결정 트리(가지 침) −2 0 2 X1 시험 12.0% · 잎 4개 Data 2 · 참 경계가 상자 꼴 (c) 로지스틱 회귀 −2 0 2 −2 0 2 X1 X2 시험 22.8% (d) 결정 트리(가지 침) −2 0 2 X1 시험 8.0% · 잎 3개 모형의 경계 참 경계 양성으로 예측 음성으로 예측
그림 6.11참 경계(회색 점선)가 기운 직선인 Data 1에서는 로지스틱 회귀(a)의 직선이 거의 겹치고 트리(b)는 계단으로 흉내 내는 데 그치지만(시험 오분류율 6.9% 대 12.0%), 참 경계가 축에 나란한 상자인 Data 2에서는 트리(d)가 경계를 거의 그대로 찾고 로지스틱 회귀(c)는 맞추지 못한다(8.0% 대 22.8%). 칠한 면은 모형의 예측으로 주황이 양성, 파랑이 음성이다. 예시 데이터(ISL 그림 8.7을 본뜸).

트리의 결정 경계는 늘 축에 나란한 선분으로 이루어진다. 노드의 조건이 feature 하나만 보기 때문이다. 기운 경계를 따라가려면 분할이 많이 들고, 그만큼 분산이 커진다. 어느 쪽이 나은지는 데이터를 보기 전에는 모르므로 검증 데이터나 교차검증으로 견준다(3.5–3.6절). 5.10절에서 ridge 회귀와 lasso를 견주며 내린 결론과 같다.

트리의 장단점 Pros and Cons of Trees

슬라이드는 트리의 장단점으로 강의를 맺는다(ISL 8.1.4).

(보충) 강건하지 않은 까닭은 분할이 탐욕적이고 위에서 아래로 이어진다는 데 있다. 뿌리 근처의 분할 하나가 바뀌면 그 아래 전체가 바뀐다. 이 장의 계산에서도 그랬다. Heart를 훈련과 시험으로 나누는 방법만 바꿔도 뿌리의 분할이 Thal, Ca, ChestPain 등으로 갈렸고(6.9절), Hitters에서 교차검증이 고르는 트리 크기는 3에서 19까지 흔들렸다(6.6절). 1.9절의 말로 하면 트리는 분산이 큰 추정량(estimator)이다. 6.11절부터는 이 단점에서 출발한다. bagging, random forest, boosting은 트리를 여럿 키워 예측을 하나로 합친다(L08 s06). 6.13–6.14절에서 보듯 여러 트리의 평균은 편향을 거의 그대로 둔 채 분산을 줄이고(그림 6.15의 예에서는 절반쯤), 6.16절의 random forest는 트리끼리 덜 닮게 해 그 효과를 키우려 한다.

6.11 부트스트랩 The Bootstrap

L09 s04–s08 · ISL 5.2

6.10절에서 트리는 데이터가 조금만 바뀌어도 크게 바뀌는, 분산이 큰 추정량이었다. 1.9절의 분해로 보면 분산은 훈련 데이터를 새로 뽑을 때마다 예측이 출렁이는 정도이니, 훈련 데이터를 여러 벌 얻어 트리를 따로 키우고 평균하면 줄어들 것이다. 그러나 손에 있는 훈련 데이터는 하나뿐이다. 이 장의 뒷부분(6.11–6.22절)은 이 틈을 메우는 도구에서 시작한다. 데이터 하나로 여러 데이터를 흉내 내는 부트스트랩이다.

이름은 영어 관용구에서 왔다(s04–s05). bootstrap은 긴 부츠의 뒤쪽 위에 달린 고리로, 부츠를 신을 때 잡아당기는 손잡이다. 「제 부츠 고리를 당겨 스스로를 들어 올린다(pull oneself up by one's bootstraps)」는 말은 불가능한 일을 해낸다는 뜻이었다가, 남의 도움 없이 스스로 처지를 낫게 한다는 뜻이 되었다. 슬라이드는 허풍선이 남작(뮌히하우젠 남작)이 스스로를 끌어 올려 물에서 빠져나왔다는 이야기도 그 어원으로 소개하고, 꺼진 컴퓨터가 스스로 켜지는 부팅도 같은 말에서 나왔다고 덧붙인다.

통계의 부트스트랩이 빌린 것은 「도움 없이 스스로」라는 뜻이다(s06). 기계학습(machine learning)에서는 데이터가 모자랄 때가 많다. 더 모을 수 있으면 좋지만 늘 그럴 수는 없고, 모으는 데 시간과 비용이 든다. 그러니 가진 데이터로 최선을 다해 보자는 것이다(슬라이드의 우리말 풀이로 「도움 받지 말고 스스로 상황을 개선시켜 보자!」). 부트스트랩은 데이터 하나에서 표본(sample)을 다시 뽑는 재표집(resampling)으로 모의 데이터(simulated data)를 여럿 만들고, 그것으로 학습 방법(learning method)에 따르는 불확실성(uncertainty)을 잰다. 예컨대 어떤 계수의 표준오차나 신뢰구간(confidence interval)을 구한다.

무엇의 불확실성인가? 2.6절에서 보았듯 추정량은 데이터의 함수라, 데이터를 새로 뽑을 때마다 다른 값을 내는 확률변수(random variable)다. 그 값들의 분포가 표본분포(sampling distribution)이고, 표본분포의 표준편차(standard deviation)가 표준오차다. 2.7절의 최소제곱 계수는 표준오차를 식 (2.19)의 분산 \(\Var(\bhbeta \mid \bX) = \sigma^2(\bX^\top\bX)^{-1}\)에서 얻었지만, 트리의 예측값이나 6.6절에서 교차검증이 고른 트리 크기처럼 식이 없는 양이 훨씬 많다. 부트스트랩의 힘은 그런 양에도 똑같이 쓸 수 있다는 데 있다(ISL 5.2).

부트스트랩 표본 Bootstrap Samples

참 분포에서 관측값을 더 뽑을 수는 대개 없다(s07). 그 분포는 모르고, 애초에 그것을 추정하는 것이 목표다. 그래서 모집단(population)에서 새 데이터를 거듭 얻는 대신, 원래 데이터에서 관측값을 되돌려 놓으며 거듭 뽑아 서로 다른 데이터를 만든다.

Obs X Y 1 4.3 2.4 2 2.1 1.1 3 5.3 2.8 원래 데이터 Z (n = 3) Obs X Y 3 5.3 2.8 1 4.3 2.4 3 5.3 2.8 Obs 3이 두 번 · Obs 2 없음 θ*1 Obs X Y 2 2.1 1.1 3 5.3 2.8 1 4.3 2.4 셋이 한 번씩 θ*2 Obs X Y 2 2.1 1.1 2 2.1 1.1 1 4.3 2.4 Obs 2가 두 번 · Obs 3 없음 θ*B Z*1 Z*2 Z*B SEB(θ) 추정값 B개의 표준편차
그림 6.12크기 3인 원래 데이터 \(\mathcal{Z}\)에서 복원추출로 같은 크기의 부트스트랩 표본을 \(B\)번 뽑으면 어떤 관측값은 두 번 뽑히고(파랑) 어떤 관측값은 빠지며, 표본마다 낸 추정값 \(\hat\theta^{*b}\)들의 표준편차가 \(\hat\theta\)의 표준오차 \(\SE_B(\hat\theta)\)가 된다. 개념도(ISL 그림 5.11을 다시 그림, L09 s08).
정의 · 부트스트랩 표본

관측값 \(n\)개짜리 원래 데이터 \(\mathcal{Z}\)에서 관측값을 하나 뽑고 되돌려 놓기를 \(n\)번 되풀이하는 것을 복원추출(sampling with replacement)이라 하고, 그렇게 얻은 크기 \(n\)의 데이터 \(\mathcal{Z}^{*b}\)를 부트스트랩 표본(bootstrap sample)이라 한다. 같은 관측값이 여러 번 뽑히기도 하고 한 번도 뽑히지 않기도 한다. 관측값을 뽑으면 그 입력과 반응이 함께 따라온다.

그림 6.12가 슬라이드 s08(ISL 그림 5.11)의 예다. 관측값이 셋뿐인 데이터에서 첫째 부트스트랩 표본 \(\mathcal{Z}^{*1}\)은 3번 관측값을 두 번, 1번을 한 번 뽑았고 2번은 빠졌다. 표본마다 관심 있는 양의 추정값 \(\hat\theta^{*b}\)를 계산하기를 \(B\)번 되풀이하면, 그 \(B\)개 추정값이 흩어진 정도가 원래 데이터로 낸 추정값 \(\hat\theta\)의 표준오차를 어림한다.

$$\SE_B(\hat\theta) = \sqrt{\frac{1}{B-1}\sum_{b=1}^{B}\big(\hat\theta^{*b} - \bar\theta^{*}\big)^2}, \qquad \bar\theta^{*} = \frac{1}{B}\sum_{b=1}^{B}\hat\theta^{*b} \tag{6.9}$$

식 (6.9)는 ISL 식 5.8로, \(B\)개 추정값의 표본표준편차(sample standard deviation)다. 슬라이드와 ISL은 추정할 파라미터를 \(\alpha\), 합의 첨자를 \(r\)로 적었지만, 이 장에서 \(\alpha\)는 6.6절의 비용 복잡도 파라미터이므로 \(\theta\)로, 첨자는 \(b\)로 쓴다. 이 절부터는 부트스트랩 표본, bagging의 트리, boosting의 단계를 모두 \(b = 1, \dots, B\)로 센다.

왜 통하는가 Why It Works

(보충) 관측값 \(n\)개에 \(1/n\)씩 확률을 준 분포를 생각하자. 이 분포에서 크기 \(n\)의 표본을 뽑는 것이 곧 원래 데이터에서의 복원추출이다. 부트스트랩은 모르는 참 분포 자리에 데이터가 만든 이 분포를 놓고, 「모집단에서 데이터를 새로 뽑아 추정하기」를 컴퓨터로 흉내 낸다(ESL 7.11). 데이터가 클수록 이 분포는 참 분포에 가까워진다.

(a) 새 데이터 1,000개 모집단에서 거듭 뽑기 0.3 0.6 0.9 0 50 100 150 200 θ = 0.6 θ 표준편차 0.080 (b) 부트스트랩 표본 1,000개 데이터 하나에서 복원추출 0.3 0.6 0.9 θ = 0.6 θ= 0.579 θ*b SEB(θ) = 0.081 빈도
그림 6.13모집단에서 데이터를 새로 뽑아 얻은 추정값 \(\hat\theta\)의 분포(a, 표준편차 0.080)와 데이터 하나에서 부트스트랩 표본으로 얻은 \(\hat\theta^{*b}\)의 분포(b, 파랑, \(\SE_B(\hat\theta) = 0.081\))는 퍼진 정도가 거의 같지만, (b)는 참값 \(\theta = 0.6\)(검은 점선)이 아니라 그 데이터의 \(\hat\theta = 0.579\)(파란 실선) 둘레에 놓인다. 1,000번씩 뽑았고, (b)의 데이터는 후보 다섯 가운데 \(\SE_B\)가 전형적인 값(같은 설정의 데이터 40개에서 잰 중앙값 0.081)에 가까운 것을 골랐다. 예시 데이터(ISL 그림 5.10을 본뜸, 보충).

그림 6.13은 그 흉내가 얼마나 맞는지를 ISL 5.2의 예로 본 것이다(보충). 두 자산의 수익 \(X\), \(Y\)에 돈을 나눠 넣을 때, \(X\)에 넣을 비율 \(\theta\)를 전체 수익의 분산 \(\Var(\theta X + (1 - \theta)Y)\)가 가장 작게 고른다. 답은 \(\theta = (\sigma_Y^2 - \sigma_{XY})/(\sigma_X^2 + \sigma_Y^2 - 2\sigma_{XY})\)이고(ISL 식 5.6), \(\sigma_{XY}\)는 두 수익의 공분산(covariance)이다. 실제로는 분산과 공분산을 모르므로 데이터에서 잰 표본분산(sample variance)과 표본공분산을 넣은 \(\hat\theta\)를 쓴다(ISL 식 5.7). 예시 데이터는 ISL처럼 \(\sigma_X^2 = 1\), \(\sigma_Y^2 = 1.25\), \(\sigma_{XY} = 0.5\)인 정규분포에서 뽑은 100쌍이라, 참값(true value)은 \(\theta = 0.6\)이다.

(a)는 모집단에서 데이터를 1,000번 새로 뽑아 얻은 \(\hat\theta\) 1,000개로, 표준편차가 0.080이다. 현실에서는 할 수 없는 이상적인 실험이다. (b)는 데이터 하나(\(\hat\theta = 0.579\))에서 부트스트랩 표본을 1,000번 뽑아 얻은 \(\hat\theta^{*b}\)로, 현실에서도 할 수 있다. 그 표준편차, 곧 식 (6.9)의 \(\SE_B(\hat\theta)\)는 0.081로 (a)와 거의 같다(ISL에서는 0.083과 0.087). 눈여겨볼 것은 (b)의 분포가 참값 0.6이 아니라 그 데이터의 \(\hat\theta\) 둘레에 놓인다는 점이다. 부트스트랩이 흉내 내는 것은 표본분포의 위치가 아니라 퍼짐이다. \(\SE_B\) 자체도 데이터에 따라 흔들린다. 같은 설정으로 데이터를 40개 뽑아 저마다 부트스트랩하면 \(\SE_B(\hat\theta)\)의 중앙값은 0.081이고, 열에 여덟은 0.069–0.090 사이에 든다.

(보충) 부트스트랩 분포로 신뢰구간도 어림할 수 있다. 가장 간단하게는 \(\hat\theta^{*b}\)들을 크기순으로 늘어놓고 아래 2.5%와 위 2.5%를 잘라 낸 구간을 95% 신뢰구간으로 쓴다.

6.12 부트스트랩의 한계와 교차검증 Limits of the Bootstrap; Bootstrap versus Cross-Validation

L09 s09–s10 · ISL 5장 연습문제 2 · ESL 7.11

부트스트랩이 기대는 가정이 있다(s09). 복원추출은 관측값을 아무 순서로나 바꿔 끼워도 된다고 보는 일이므로, 관측값들이 서로 독립(independent)이고 같은 분포를 따라야 한다. 곧 독립동일분포(independent and identically distributed, i.i.d.)여야 한다. 시계열(time series)처럼 관측값이 앞뒤로 기대는 데이터를 하나씩 복원추출하면 그 기댐이 깨진다. 이때는 이어진 관측값을 블록으로 묶어 블록을 복원추출하고, 뽑은 블록을 이어 붙여 부트스트랩 표본을 만든다. 블록 안의 순서와 기댐은 그대로 남는다. 이 방법을 블록 부트스트랩(block bootstrap)이라 한다(슬라이드는 이름 없이 방법만 적었다).

슬라이드의 예는 세션 기반 추천(session-based recommendation)이다. 한 사용자가 한 번 접속해 머무는 동안(세션) 차례로 본 아이템들은 서로 이어져 있다. 아이템을 하나씩 뽑아 섞으면 그 맥락이 사라지므로 세션 하나를 블록 하나로 삼아 뽑는다.

부트스트랩으로 예측오차를 잴 수 있나 Can the Bootstrap Estimate Prediction Error?

슬라이드는 묻는다(s10). 부트스트랩 표본을 \(B\)개(슬라이드의 \(k\)개) 만들어 \(B - 1\)개로 모형을 훈련하고 남은 하나로 검증하면, K-fold 교차검증처럼 예측오차(prediction error)를 잴 수 있을까? 답은 「아니다」다. 3.6절의 K-fold 교차검증은 검증 fold가 훈련 fold와 겹치지 않았고, 그것이 교차검증이 통하는 핵심이었다. 부트스트랩 표본들은 같은 원래 데이터에서 복원추출했으므로 서로 크게 겹친다.

얼마나 겹치나? 관측값 하나가 \(n\)번의 뽑기에서 한 번도 뽑히지 않을 확률은 \((1 - 1/n)^n\)이고, \(n\)이 커지면

$$\Big(1 - \frac{1}{n}\Big)^n \to e^{-1} \approx 0.368$$

이다. 그러니 부트스트랩 표본 하나에는 원래 관측값의 \(1 - e^{-1} \approx 0.632\), 대략 3분의 2가 적어도 한 번 들어 있다. 그림 6.14(a)에서 보듯 \(n = 10\)이면 이미 0.651로 극한에 가깝다. 슬라이드는 \(e^{-1} \approx 1/3\)이라 적었는데, 0.368을 「약 3분의 1」로 거칠게 줄인 것이다. 검증할 표본의 관측값 대부분이 훈련 표본에도 들어 있으니 사실상 훈련 데이터로 시험하는 셈이고, 예측오차를 심하게 과소추정한다. (보충) 검증 표본의 관측값 하나가 훈련 표본 \(B - 1\)개 어디에도 없을 확률은 약 \(e^{-(B-1)}\)이라, \(B = 5\)면 약 0.018이다. 검증 관측값의 98%가 훈련에도 쓰인다.

(a) 표본에 들 확률 n개에서 n번 복원추출 1 10 100 1,000 0.6 0.7 0.8 0.9 1 1 0.75 1 − e−1 ≈ 0.632 표본 크기 n 표본에 들 확률 (b) 뽑힌 횟수의 분포 n = 100일 때 한 관측값 0 1 2 3 4 5 0 0.1 0.2 0.3 0.4 0.5 0번(OOB) 0.366 이항분포 포아송(평균 1) 뽑힌 횟수 확률
그림 6.14(a) 크기 \(n\)인 데이터에서 \(n\)번 복원추출할 때 한 관측값이 표본에 들 확률은 \(n\)이 커질수록 빠르게 줄어 \(1 - e^{-1} \approx 0.632\)(파란 점선)에 다가가고, (b) \(n = 100\)이면 한 관측값이 뽑힌 횟수의 정확한 분포(막대)는 평균 1인 포아송 분포(점)와 거의 같아 0번과 1번이 약 0.37씩이다. 0번 막대(파랑)가 그 관측값이 표본에서 빠질 확률이다(L09 s10을 계산으로 그림, (b)는 보충).
보충 · 과소추정이 얼마나 심한가 (ESL 7.11)

두 클래스의 개수가 같고 feature와 레이블이 사실은 서로 무관한 문제에 1-최근접 이웃 분류기(classifier)를 쓴다고 하자. 참 오류율은 0.5다. 부트스트랩 표본마다 분류기를 훈련하고 원래 데이터 전체로 오류를 재면, 관측값 \(i\)가 그 부트스트랩 표본에 들어 있을 때는 자기 자신이 가장 가까운 이웃이라 늘 맞힌다. 틀릴 수 있는 것은 \(i\)가 빠진 약 0.368의 경우뿐이고 그때의 오류율이 0.5이므로, 이 추정값의 기댓값(expected value)은 약 \(0.5 \times 0.368 = 0.184\)다. 참값 0.5에 크게 못 미친다.

(보충) 거꾸로, 부트스트랩 표본에 들지 않은 약 3분의 1은 그 표본으로 훈련한 모형이 보지 못한 데이터다. 이것을 시험 데이터처럼 쓰는 것이 6.16절의 OOB 오차(out-of-bag error)다. 그림 6.14(b)는 \(n = 100\)일 때 한 관측값이 부트스트랩 표본에 뽑힌 횟수의 분포다. 0번과 1번이 약 0.37씩, 2번이 0.18이고, 평균이 1인 포아송 분포(Poisson distribution)와 거의 같다.

6.13 bagging Bagging

L09 s12–s13 · ISL 8.2.1

정의 · bagging

훈련 데이터 하나에서 부트스트랩 표본 \(B\)개를 뽑고, \(b\)번째 표본으로 같은 학습 방법을 훈련한 모형을 \(\hat f^{*b}\)라 하자. 그 예측을 평균한 모형

$$\hat f_{\text{bag}}(\bx) = \frac{1}{B}\sum_{b=1}^{B}\hat f^{*b}(\bx) \tag{6.10}$$

을 쓰는 것을 bagging이라 한다. bootstrap aggregation의 줄임말이다. 분류에서는 평균 대신 \(B\)개 예측의 다수결을 쓴다(ISL 8.2.1).

이제 처음의 생각으로 돌아가자(s13). 서로 독립이고 분산이 \(\sigma^2\)인 확률변수 \(Z_1, \dots, Z_n\)의 평균 \(\bar Z\)는 분산이 \(\sigma^2/n\)이다. 평균하면 분산이 준다. 그러니 모집단에서 훈련 데이터를 \(B\)벌 얻어 저마다 모형을 훈련하고 예측을 평균하면 분산이 작은 모형을 얻을 것이다. 그러나 훈련 데이터는 하나뿐이다. 그래서 부트스트랩 표본 \(B\)개로 그 \(B\)벌을 대신한다(s12).

bagging은 모형의 계수나 트리 구조 같은 중간 산물이 아니라 예측을 평균하므로 어떤 회귀·분류 모형에도 그대로 쓸 수 있다. 슬라이드는 이것을 군중의 지혜(wisdom of crowds)에 빗댄다. 여럿의 판단을 평균하면 저마다의 들쭉날쭉함이 서로 상쇄된다. 2.6절의 식 (2.17) \(\MSE(\hat\theta) = \operatorname{tr}\Var(\hat\theta) + \lVert\Bias(\hat\theta)\rVert^2\)로 보면 bagging은 편향을 그대로 둔 채 분산을 줄여 MSE를 줄인다. 슬라이드의 말로는 「편향의 대가 없이 분산을 줄인다」. 대가는 계산이다. 모형을 하나가 아니라 \(B\)개 훈련해야 한다.

(a) 데이터 하나에서: 트리 하나 대 bagging 0 0.5 1 −1 0 1 2 x y 훈련 데이터(n = 50) 참 함수 f(x) 깊게 키운 트리 하나 · 시험 MSE 0.254 bagging(B = 100) · 시험 MSE 0.197 부트스트랩 트리 다섯 그루 (b) 훈련 데이터를 400번 새로 뽑아 잰 분산 · 편향2 0 0.5 1 0 0.05 0.1 0.15 점선(편향2)은 양 끝을 빼면 0선 가까이 x 분산 · 편향2 분산(실선) 트리 하나 0.111 bagging 0.057 편향2(점선) 트리 하나 0.0009 bagging 0.0017 수는 x에 대한 평균. 편향2은 반복 수에서 오는 치우침(분산/반복 수)을 뺐다
그림 6.15(a) 데이터 하나로 깊게 키운 트리(주황)와 부트스트랩 트리 다섯(회색)은 저마다 들쭉날쭉하지만 그런 트리 100개를 평균한 bagging(파랑)은 참 함수(검은 점선)를 매끄럽게 따라가고(시험 MSE 0.254 대 0.197), (b) 훈련 데이터를 400번 새로 뽑아 재면 bagging은 분산(실선)을 트리 하나의 절반쯤으로 줄이면서 편향의 제곱(점선)은 거의 늘리지 않는다. 데이터는 처음 뽑은 것을 그대로 썼고, 이 데이터의 기대 시험 MSE는 400개 데이터 가운데 평균보다 조금 좋은 쪽이다. 예시 데이터(관측값 50개, L09 s12–s13을 계산으로 그림, (b)는 보충).

그림 6.15는 1차원 예시 데이터로 이것을 본 것이다. \(x\)는 0과 1 사이의 균등분포(uniform distribution)에서, 반응은 \(y = \sin(2\pi x) + x + \epsilon\), \(\epsilon \sim \mathcal{N}(0, 0.4^2)\)에서 50개를 뽑았다. 가지 치지 않고 깊게 키운 트리 하나(잎 17개)는 들쭉날쭉해 시험 MSE가 0.254이고, 부트스트랩 표본으로 키운 트리는 관측값의 3분의 1쯤을 보지 못한 만큼 더 거칠어 하나하나의 시험 MSE가 평균 0.277이다. 그런 트리 100개를 평균한 bagging은 참 함수(true function)를 매끄럽게 따라가 0.197이다. 잡음의 분산 0.16이 어떤 모형도 내려갈 수 없는 바닥이다.

주의 · 슬라이드의 「같은 편향, 줄어든 분산」과 「\(n\)개의 모형」

슬라이드는 「각 모형의 편향은 같고 분산은 줄어든다」고 적었지만, 분산이 주는 것은 모형 하나하나가 아니라 평균한 모형 \(\hat f_{\text{bag}}\)이다. 편향이 같다는 말은 이렇게 읽는다. 부트스트랩 모형들은 모두 같은 분포를 따르므로 그 평균의 기댓값은 부트스트랩 모형 하나의 기댓값과 같고, 그래서 \(\hat f_{\text{bag}}\)의 편향은 부트스트랩 표본 하나로 훈련한 모형의 편향과 같다(ESL 15.2). 견주는 대상은 원래 데이터 전체로 훈련한 모형이 아니다. 또 슬라이드는 대가를 「\(n\)개의 모형을 훈련해야 한다」고 적었는데, 훈련할 모형의 수는 부트스트랩 표본의 수 \(B\)다. \(n\)은 관측값 수다.

(b)는 훈련 데이터를 400번 새로 뽑아 \(x\)마다 예측의 분산과 편향의 제곱을 잰 것이다(보충). \(x\)에 대해 평균하면 트리 하나는 분산 0.111, 편향의 제곱 0.0009이고, bagging은 분산 0.057, 편향의 제곱 0.0017이다. 분산은 절반쯤으로 줄었다. 편향의 제곱은 조금 늘었지만 부트스트랩 트리 하나의 0.0018과 거의 같아 위의 주의에서 말한 그대로다. 늘어난 편향의 제곱(약 0.001)은 줄어든 분산(약 0.054)에 비하면 아주 작으므로, 「편향의 대가 없이」는 근사로 맞는 말이다.

(보충) bagging의 이득은 원래 방법의 분산이 클수록 크다. \(n\)이 \(p\)보다 꽤 큰 선형회귀처럼 분산이 작은 방법은 평균해도 얻을 것이 적고, 분산이 큰 트리에서 효과가 크다(ISL 8.2.1). 6.10절의 단점이 bagging을 트리와 짝짓는 까닭이다.

6.14 bagging의 분석 Analysis of Bagging

L09 s14–s17 · ESL 15.2

평균하면 왜, 얼마나 좋아지는가? 슬라이드는 정리 둘로 답한다. 참 함수를 \(f\), \(b\)번째 모형의 예측을 \(\hat f^{*b}(\bx) = f(\bx) + \delta_b(\bx)\)라 쓰자. \(\delta_b(\bx)\)는 \(b\)번째 모형이 \(\bx\)에서 내는 오차다. 슬라이드는 \(\mathbf{y}_b(\mathbf{x}) = h(\mathbf{x}) + \epsilon_b(\mathbf{x})\)로 적었지만, 이 책에서 굵은 \(\mathbf{y}\)는 반응 벡터이고 \(\epsilon\)은 관측의 오차항(error term)이며 \(h\)는 6.18절의 분류기에 쓰므로 바꿔 쓴다. 이 전개는 Bishop의 Pattern Recognition and Machine Learning(PRML) 14.2절, 식 14.7–14.14와 같은 꼴이다.

기댓값은 입력 \(\bx\)의 분포에 대해서만 잡는다(\(\E_{\bx}\)). 모형 \(B\)개는 이미 훈련해 고정된 것으로 본다. 모형 하나의 기대 제곱오차를 \(B\)개에 걸쳐 평균한 것과 결합한 모형의 기대 제곱오차는 다음과 같다.

$$E_{\text{single}} = \frac{1}{B}\sum_{b=1}^{B}\E_{\bx}\big[\delta_b(\bx)^2\big], \qquad E_{\text{comb}} = \E_{\bx}\Big[\big(\hat f_{\text{bag}}(\bx) - f(\bx)\big)^2\Big]$$

슬라이드는 \(E_{\text{single}}\)을 \(b\)번째 모형 하나의 것으로 정의한 뒤 s15부터 \(B\)개의 평균으로 썼는데, 이 책은 처음부터 평균으로 둔다. (보충) 여기의 오차는 참 함수에 대한 것이라 관측의 잡음, 곧 1.5절의 줄일 수 없는 오차(irreducible error)는 들어 있지 않다.

정리 1 · 결합해서 잃을 것은 없다

\(E_{\text{comb}} \le E_{\text{single}}\)이다. 결합한 모형의 기대 오차는 개별 모형 기대 오차의 평균보다 크지 않다. 등호는 거의 모든 \(\bx\)에서(입력의 분포에 대해 확률 1로) \(\delta_b(\bx)\)가 \(b\)에 상관없이 같을 때, 곧 모형이 사실상 모두 같을 때 성립한다.

  1. \(f(\bx)\)는 \(b\)와 무관하므로 \(\hat f_{\text{bag}}(\bx) - f(\bx) = \frac{1}{B}\sum_b\big(\hat f^{*b}(\bx) - f(\bx)\big)\)이고, 이것은 오차의 평균 \(\frac{1}{B}\sum_b\delta_b(\bx)\)다.
  2. 젠센 부등식(Jensen's inequality)은 볼록(convex) 함수 \(\varphi\)와 확률변수 \(U\)에 대해 \(\E[\varphi(U)] \ge \varphi(\E[U])\)라는 것이다(슬라이드는 Cover·Thomas의 정리 2.6.2를 인용했다). \(\bx\)를 고정하고, \(b\)를 \(1, \dots, B\) 가운데 고르게 뽑을 때의 오차 \(\delta_b(\bx)\)를 \(U\)로, \(\varphi(u) = u^2\)으로 두면 \(\frac{1}{B}\sum_b\delta_b(\bx)^2 \ge \big(\frac{1}{B}\sum_b\delta_b(\bx)\big)^2\)이다. 슬라이드가 건너뛴 점은, 여기서 무작위인 것이 \(\bx\)가 아니라 모형의 첨자 \(b\)라는 것이다.
  3. 양변을 \(\bx\)에 대해 기댓값 내면, 왼쪽은 기댓값의 선형성(linearity of expectation)으로 \(E_{\text{single}}\)이고 오른쪽은 \(E_{\text{comb}}\)이다.

정리 1이 견주는 것은 \(B\)개 모형 오차의 평균이지 가장 좋은 모형 하나가 아니다. 슬라이드의 「단일 모형보다 크지 않다」를 아무 모형 하나보다 낫다는 뜻으로 읽으면 안 된다. 예컨대 \(B = 2\)이고 모든 \(\bx\)에서 \(\delta_1 = 0\), \(\delta_2 = 1\)이면 \(E_{\text{comb}} = 1/4\)이라 첫째 모형 혼자(0)보다 나쁘다. 「결합해서 잃을 것이 없다」는 평균적인 모형 하나보다 나빠지지 않는다는 뜻이다.

정리 2는 결합의 이득이 얼마나 클 수 있는지 본다(s16–s17). 1단계의 제곱을 펼치면 제곱항 \(B\)개와, 서로 다른 두 모형의 오차를 곱한 교차항(cross term)이 나온다.

정리 2 · 결합한 모형의 오차 $$E_{\text{comb}} = \frac{1}{B}E_{\text{single}} + \frac{1}{B^2}\sum_{b \ne b'}\E_{\bx}\big[\delta_b(\bx)\,\delta_{b'}(\bx)\big] \tag{6.11}$$

둘째 항의 합은 \(b \ne b'\)인 순서쌍 \(B(B - 1)\)개에 대한 것이다. 오차의 평균이 0이고 서로 상관(correlation)이 없으면 둘째 항이 0이 되어 \(E_{\text{comb}} = E_{\text{single}}/B\)이고, 모형이 모두 같으면 \(E_{\text{comb}} = E_{\text{single}}\)이다.

첫 항은 제곱항의 합 \(\frac{1}{B^2}\sum_b\E_{\bx}[\delta_b^2]\)를 \(\frac{1}{B}\cdot E_{\text{single}}\)로 다시 쓴 것이다. 같은 모형을 \(B\)개 평균하면 아무것도 얻지 못하고, 오차가 서로 무관하면 오차가 \(1/B\)로 준다. 슬라이드의 결론대로 모형들이 서로 다를수록 결합의 이득이 크다.

주의 · 정리 2의 계수와 가정

슬라이드는 교차항을 \(\frac{2}{B^2}\sum_{\ell \ne k}\)로 적었다. \(\ell \ne k\)가 순서쌍 전체라면 2가 붙지 않는다(2를 붙이려면 \(\ell < k\)로 한 번씩만 센다). 모형이 모두 같은 경우로 검산하면 식 (6.11)은 \(\big(\frac{1}{B} + \frac{B-1}{B}\big)E_{\text{single}} = E_{\text{single}}\)이지만, 슬라이드의 계수로는 \(\frac{2B-1}{B}E_{\text{single}}\)이 되어 슬라이드 스스로의 결론과 어긋난다. 또 슬라이드는 교차항을 「공분산 부분」이라 부르고 「모형들이 완전히 독립이면 0」이라 했는데, 오차의 곱의 기댓값은 오차의 평균이 0일 때만 공분산이다. 독립이어도 모든 모형이 같은 쪽으로 치우쳐 있으면 0이 되지 않는다. \(1/B\)를 얻는 데는 「오차의 평균이 0이고 서로 상관이 없다」는 가정이면 충분하다(꼭 필요한 것은 교차항의 합이 0이라는 것뿐이다). 마지막으로 「\(1/B\)까지 낮아질 수 있다」의 \(1/B\)는 하한이 아니다. 오차가 서로 음의 상관을 가지면 교차항이 음수라 더 작아진다(\(B = 2\)이고 \(\delta_2 = -\delta_1\)이면 0이다). 언제나 성립하는 것은 정리 1뿐이다.

(보충) 상관과 평균의 분산 Correlation and the Variance of an Average

같은 이야기를 한 점 \(\bx\)에서의 분산으로 할 수도 있다(ESL 15.2). 모형 \(B\)개의 예측이 모두 분산 \(\sigma^2\)을 갖고, 두 모형마다 상관이 \(\rho \ge 0\)이라 하자(ESL은 양의 상관을 가정한다). 무작위성은 훈련 데이터와 부트스트랩 표본에서 온다. 평균의 분산은 분산 \(B\)개와 공분산 \(B(B-1)\)개(각각 \(\rho\sigma^2\))의 합을 \(B^2\)으로 나눈 것이므로

$$\Var\Big(\frac{1}{B}\sum_{b=1}^{B}\hat f^{*b}(\bx)\Big) = \rho\sigma^2 + \frac{1 - \rho}{B}\sigma^2 \tag{6.12}$$

이다(ESL 식 15.1). \(\rho = 0\)이면 \(\sigma^2/B\)로 정리 2에서 오차가 서로 무관한 경우이고, \(\rho = 1\)이면 \(\sigma^2\) 그대로다. 그 사이에서는 \(B\)를 아무리 늘려도 둘째 항만 사라지고 첫째 항 \(\rho\sigma^2\)이 남는다. 같은 데이터에서 나온 부트스트랩 트리들은 서로 닮아 \(\rho\)가 0이 아니므로, bagging의 이득을 막는 것은 트리 사이의 상관이다.

1 10 100 500 0 0.25 0.5 0.75 1 ρ = 0 ρ = 0.25 ρ = 0.5 ρ = 1 평균하는 모형 수 B 평균의 분산 ÷ 하나의 분산 bagging ·ρ= 0.19 random forest(mtry= 3) ·ρ= 0.05 점: 상관을 잰 트리와 다른 트리 B그루를 직접 평균해 잰 비율
그림 6.16모형 \(B\)개를 평균한 예측의 분산은 상관 \(\rho\)가 0이면 \(1/B\)로 끝없이 줄지만 \(\rho > 0\)이면 \(\rho\)에서 바닥을 치고(회색, 식 (6.12)), 예시 데이터에서 잰 상관은 bagging의 트리(주황, \(\hat\rho = 0.19\))보다 random forest(6.16절)의 트리(파랑, \(\hat\rho = 0.05\))가 작아 바닥이 낮다. 점은 상관을 잰 것과 다른 트리를 실제로 평균해 잰 비율이고, 비율의 분모는 방법마다 자기 트리 하나의 분산이다. 예시 데이터(feature 10개, 관측값 100개, 훈련 데이터를 200번 새로 뽑아 잼, 보충).

그림 6.16은 식 (6.12)를 모형 하나의 분산에 대한 비율 \(\rho + (1 - \rho)/B\)로 그린 것이다. 점선 둘은 예시 데이터에서 실제로 잰 상관이다. feature 10개가 0과 1 사이에 고르게 퍼져 있고 반응이 그 가운데 셋에만 달린 데이터에서, bagging의 트리끼리는 상관이 0.19이고 6.16절의 random forest(\(m_{\text{try}} = 3\))로 키운 트리끼리는 0.05다. 상관을 잴 때 쓰지 않은 다른 트리를 실제로 2, 5, 10그루 평균해 잰 비율(점)도 곡선 위에 놓인다. 다만 이 비율은 저마다 자기 트리 하나의 분산에 대한 것이다. random forest의 트리 하나는 bagging의 트리보다 분산이 두 배 넘게 크고(0.85 대 0.38) 편향도 커서, 이 예에서는 트리 10그루를 평균한 MSE가 오히려 bagging보다 크다(0.287 대 0.143). 그림이 보이는 것은 「상관이 평균의 이득을 막는다」이지 「random forest가 낫다」가 아니다.

6.15 앙상블의 사례 Ensembles in Practice

L09 s18–s20

슬라이드는 대회 둘로 앙상블의 힘을 보인다. 첫째는 Netflix가 2006–2009년에 연 영화 평점 예측 대회 Netflix Prize다(s18). 사용자가 영화에 줄 평점을 예측해 평균제곱근오차(root-mean-squared error, RMSE)로 겨루는 대회로, Netflix의 기존 시스템보다 RMSE를 10% 낮추는 팀이 상금 100만 달러를 받기로 되어 있었다(대회 기간과 10%라는 기준은 보충). 최종 순위표에서 1위 BellKor's Pragmatic Chaos와 2위 The Ensemble은 시험 RMSE가 0.8567, 개선율이 10.06%로 같았고, 제출이 20분쯤 빨랐던 1위가 2009년 9월에 상금을 받았다. 두 팀 모두 수많은 모형의 예측을 섞은 앙상블이었다.

s19는 2위 팀 The Ensemble 쪽의 결합 방법인 feature-weighted linear stacking(Sill et al., 2009)을 보인다. stacking은 여러 모형의 예측을 입력으로 삼아 그것들을 어떻게 합칠지 자체를 다시 학습하는 앙상블이다. 이 방법은 여러 모형, 가령 SVD(singular value decomposition), KNN, RBM(restricted Boltzmann machine)의 예측을 섞는 가중치(weight)를 상수로 두지 않고, 사용자와 영화에 관한 메타 feature(meta-feature) 25개(그 사용자가 남긴 평점 수의 로그, 그 영화가 받은 평점 수의 로그 등)의 선형 함수로 둔다. 그래서 입력에 따라 어느 모형을 더 믿을지가 달라진다. 예컨대 평점을 많이 남긴 사용자와 적게 남긴 사용자에게 서로 다른 모형을 더 믿을 수 있다. (보충) 모형의 예측과 메타 feature를 곱한 것들을 feature로 삼으면 선형회귀가 되므로, 섞는 계수도 선형회귀로 학습한다.

둘째는 2017년 학회 CVPR(IEEE Conference on Computer Vision and Pattern Recognition)의 워크숍과 함께 열린 YouTube-8M 대회다(s20). 동영상마다 여러 레이블을 붙이는 대규모 분류 대회로, 1위 팀 WILLOW의 그래프는 결합한 모형의 수에 따라 대회의 평가 지표(metric)인 GAP(global average precision)가 어떻게 오르는지 보인다(대회의 성격과 GAP의 풀이는 보충). GAP는 클수록 좋다. 판독값으로 모형 하나일 때 약 83.2, 일곱일 때 약 85.0이고, 25개까지 늘려도 약 85.2로 거의 오르지 않는다. 결합의 이득은 처음 몇 개에서 크고 금방 줄어든다.

두 대회의 상위권은 서로 다른 모형을 결합한 앙상블이었다. 6.14절의 결론, 모형들이 서로 다를수록 결합의 이득이 크다는 것과 맞는다. (보충) 다만 두 사례는 같은 방법을 부트스트랩 표본으로 되풀이한 bagging이 아니라, 종류가 다른 모형을 학습한 가중치로 섞은 것이다.

6.16 bagging한 트리와 random forest Bagged Trees and Random Forests

L09 s22–s24 · ISL 8.2.1–8.2.2

bagging은 어떤 모형에도 쓸 수 있지만 가장 흔한 짝은 결정 트리다(s22). 부트스트랩 표본마다 회귀 트리나 분류 트리를 키우고, 예측을 평균하거나(회귀) 다수결로 합친다(분류). 슬라이드의 그림(데이터에서 트리 여럿, 트리마다의 결과, 다수결이나 평균, 최종 결과로 이어지는 흐름)은 다시 그리지 않는다. (보충) bagging할 트리는 깊게 키우고 가지를 치지 않는다(ISL 8.2.1). 그런 트리는 편향이 작고 분산이 크다. 분산은 평균이 줄여 주므로 편향이 작은 쪽을 고르는 것이다. 6.6절에서는 크게 키운 \(T_0\)의 가지를 쳐서 분산을 다스렸지만, bagging은 가지치기 대신 평균으로 다스린다.

(보충) bagging한 트리에는 6.14절에서 본 걸림돌이 있다. 아주 강한 feature가 하나 있으면 거의 모든 부트스트랩 표본에서 트리의 뿌리가 그 feature로 나뉘고 그 아래도 비슷하게 자라, 트리들이 서로 닮는다. 예측의 상관 \(\rho\)가 커져 식 (6.12)의 바닥 \(\rho\sigma^2\)이 높아진다(ISL 8.2.2). Heart 데이터라면 6.9절에서 첫 분할을 차지한 Thal 같은 feature다.

정의 · random forest

부트스트랩 표본마다 트리를 키우되, 노드를 나눌 때마다 \(p\)개 feature 가운데 \(m_{\text{try}}\)개를 새로 무작위로 뽑아 그 안에서만 분할을 찾는 bagging을 random forest라 한다. \(m_{\text{try}} = p\)이면 bagging과 같다. 흔히 \(m_{\text{try}} \approx \sqrt{p}\)로 둔다.

random forest가 bagging에 더한 이 작은 변형은 트리 사이의 상관을 떨어뜨린다(s23). 슬라이드와 ISL은 후보 수를 \(m\)으로 적었지만, 이 장에서 \(m\)은 영역의 첨자이므로 R의 randomForest 함수의 인자 이름(mtry)을 따라 \(m_{\text{try}}\)로 쓴다. (보충) 후보를 줄이면 분할의 평균 \((p - m_{\text{try}})/p\)이 강한 feature를 아예 보지 못하므로 다른 feature가 기회를 얻는다(ISL 8.2.2). R의 기본값은 분류에서 \(\sqrt{p}\), 회귀에서 \(p/3\)이고, ESL 15.3은 이것도 튜닝 파라미터로 다루라고 권한다. 후보를 줄이면 트리 하나는 오히려 나빠진다. 6.14절의 예처럼 트리 하나의 분산과 편향이 커지므로, 상관이 줄어드는 이득이 그보다 클 때만 random forest가 bagging보다 낫다.

슬라이드의 예(s24)는 ISL 그림 8.10이다. 환자 349명의 유전자 발현으로 정상과 암 14종, 모두 15개 클래스를 가리는 데이터(\(p = 500\))에서, 트리가 늘수록 시험 오분류율이 떨어져 약 100그루 뒤로 평평해지고 \(m_{\text{try}} = \sqrt{p}\)가 bagging(\(m_{\text{try}} = p\))보다 조금 낮다. 이 데이터는 공개되지 않아 다시 계산할 수 없으므로, 이 책은 같은 비교를 6.9절의 Heart 데이터로 했다(6.9절과 같은 분할, 훈련 150명 · 시험 147명, \(p = 13\)).

(a) 시험 오분류율 — 후보 수 mtry에 따라 0 100 200 300 400 500 10% 15% 20% 25% 30% 가지 친 트리 하나 22.4% 트리 수 B 시험 오분류율 mtry = 13 (= p, bagging) mtry = 6 mtry = 4 (≈ √p) 선: 숲 10개 평균 · 오른쪽 막대: B = 500에서 숲 10개의 범위(점 = 평균) (b) 시험 오분류율과 OOB 오차 — 숲 10개 평균 0 100 200 300 400 500 10% 15% 20% 25% 30% 가지 친 트리 하나 22.4% 트리 수 B 시험 · random forest OOB · random forest 시험 · bagging OOB · bagging
그림 6.17(a) 분할마다 고르는 후보 수 \(m_{\text{try}}\)가 작을수록 시험 오분류율이 조금씩 낮고(13 = bagging 주황, 6 검정, 4 파랑, \(B = 500\)에서 20.7%, 19.2%, 18.6%) 셋 다 가지 친 트리 하나(회색 점선, 22.4%)보다 낮으며, (b) 관측값마다 그것을 쓰지 않은 트리로만 잰 OOB 오차(점선)도 \(B\)가 커지면 시험 오분류율(실선)과 비슷한 높이에 자리 잡는다. 곡선은 숲 10개의 평균이고, (a)의 오른쪽 막대는 \(B = 500\)에서 숲 10개의 범위다. Heart 데이터, 훈련 150명 · 시험 147명(ISL 그림 8.8을 다시 계산하고 슬라이드 s24의 ISL 그림 8.10을 Heart로 대신함, (b)는 보충).

그림 6.17(a)에서 \(m_{\text{try}}\)가 13(bagging), 6, 4(\(\sqrt{13} \approx 3.6\)에 가까운 정수)인 숲의 시험 오분류율은 트리가 몇십 그루를 넘으면 평평해지고, 500그루에서 각각 약 20.7%, 19.2%, 18.6%다. 6.9절의 가지 친 트리 하나(22.4%)보다 모두 낮고, \(m_{\text{try}}\)가 작을수록 낮다. 순서는 ISL의 Heart 결과(ISL 그림 8.8)와 같다. 다만 이 곡선은 숲 10개를 평균한 것이다. 시험 관측값이 147명이라 한 명이 0.68%p이고, 숲 하나만 보면 bagging과 \(m_{\text{try}} = 4\)의 차이(평균 2.0%p, 시험 세 명쯤)가 숲끼리의 흔들림과 비슷하다. 숲 10개 가운데 \(m_{\text{try}} = 4\)가 bagging보다 낮은 숲이 일곱, 같은 숲이 셋이었다. 트리를 500그루까지 늘려도 오분류율은 다시 오르지 않는다. (보충) bagging과 random forest는 \(B\)를 키워도 과적합하지 않으므로 오차가 자리 잡을 만큼 넉넉히 키우면 된다(ISL 8.2.1–8.2.2).

(보충) OOB 오차 Out-of-Bag Error Estimation

bagging에는 시험오차를 따로 데이터를 떼지 않고 재는 길이 있다(ISL 8.2.1). 6.12절에서 보았듯 트리 하나는 관측값의 약 3분의 2만 쓰고, 나머지 약 3분의 1은 그 트리가 보지 못한 데이터다. 그래서 관측값 \(i\)마다 \(i\)가 부트스트랩 표본에 들지 않은(out-of-bag) 트리들, 평균 \(B/3\)그루쯤으로만 예측해(회귀는 평균, 분류는 다수결) 오차를 잰다. 이렇게 모든 관측값에서 잰 오차가 OOB 오차다. 각 관측값을 그것을 보지 않은 트리로만 예측하므로 시험오차의 정당한 추정값이고, 따로 떼어 둔 검증 데이터나 교차검증이 필요 없다. \(B\)가 충분히 크면 5.11절의 LOOCV(leave-one-out cross-validation), 곧 관측값을 하나씩 빼고 남은 데이터로 훈련해 뺀 관측값에서 재는 교차검증의 오차와 거의 같다. 데이터가 커서 교차검증이 무거울 때 특히 편하다.

그림 6.17(b)에서 \(B = 500\)의 OOB 오차는 random forest가 17.1%, bagging이 18.7%로, 시험 오분류율(18.6%, 20.7%)과 비슷한 높이에 자리 잡는다. OOB 오차는 훈련 150명으로, 시험 오분류율은 다른 147명으로 잰 값이라 몇 %p의 차이는 두 표본의 차이다.

6.17 boosting Boosting

L09 s26–s27 · ISL 8.2.3

boosting도 bagging처럼 여러 학습 방법에 두루 쓰는 일반적인 방법이다(s26). bagging은 원래 데이터의 부트스트랩 사본마다 모형을 하나씩, 서로 독립으로 훈련한 뒤 합쳤다. boosting은 모형을 차례로 키운다. 모형 하나하나가 앞서 키운 모형들의 정보, 곧 어디서 틀렸는지를 쓴다. 이렇게 차례로 더해 가는 개별 모형을 약한 학습기(weak learner)라 부른다.

정의 · boosting의 흐름 (L09 s27)
  1. 혼자서는 무작위 추측보다 조금 나은 기저 학습기(base learner)를 여럿 쓴다. 이진 분류(binary classification)라면 오분류율이 0.5보다 조금 낮은 정도다.
  2. 지금 모형의 성능에 따라 훈련 관측값마다 가중치를 다시 매긴다. 맞힌 관측값은 가중치를 낮추고 틀린 관측값은 높인다.
  3. 바뀐 가중치로 다음 기저 학습기를 훈련하기를 되풀이한다. 다음 학습기는 앞 학습기들이 틀린 관측값에 집중한다.
  4. 모든 기저 학습기를 성능에 따라 가중해 선형 결합한다. 성능이 좋은 학습기일수록 큰 가중치를 받는다.

슬라이드는 4단계의 가중치가 성능에 「비례한다」고 적었지만, 6.18절의 분류기 가중치는 성능에 비례하지 않는다. 성능이 좋을수록 커지는 함수일 뿐이고, 오분류율이 0에 가까워지면 끝없이 커진다.

(보충) boosting은 부트스트랩 표본을 쓰지 않는다. 모형마다 원래 데이터를 조금 바꾼 판, 곧 관측값의 가중치를 바꾼 데이터(6.18절)나 반응을 바꾼 데이터(6.21절)에 맞춘다(ISL 8.2.3). 그래서 boosting의 모형들은 같은 분포를 따르지 않는다. bagging이 같은 분포를 따르는 모형을 평균해 분산만 줄인다면, boosting은 앞 모형들이 못 맞춘 곳을 차례로 고쳐 가므로 편향도 줄인다(ESL 15.2).

6.18 AdaBoost AdaBoost

L09 s28–s29 · ESL 10.1

이진 분류의 대표적인 boosting은 Freund와 Schapire의 AdaBoost(adaptive boosting)다. 레이블은 4.2절의 로지스틱 회귀처럼 \(y_i \in \{-1, +1\}\)로 부호화한다. 6.7–6.9절의 분류 트리는 클래스를 부호화 없이 이름으로만 썼다. 기저 분류기 \(h_b\)는 입력마다 \(-1\)이나 \(+1\)을 낸다. 그러면 \(y_ih_b(\bx_i) = +1\)은 맞힌 것, \(-1\)은 틀린 것이다.

슬라이드의 기호는 이 장의 앞부분과 겹치지 않게 바꿔 쓴다. 단계의 첨자와 수 \(t\), \(T\)는 \(b\), \(B\)로(\(T\)는 6.6절의 트리다), 관측값의 가중치 \(D_t(i)\)는 \(w_b(i)\)로(\(D_m\)은 6.8절의 엔트로피다), 오류율 \(\epsilon_t\)는 \(\mathrm{err}_b\)로(\(\epsilon\)은 관측의 오차항이다) 쓴다. 분류기 가중치 \(\alpha_b\)는 늘 아래 첨자를 붙여 6.6절의 비용 복잡도 파라미터 \(\alpha\)와 가른다. 둘은 아무 관계가 없다.

알고리즘 · AdaBoost (L09 s28)

입력은 훈련 데이터 \(\{(\bx_i, y_i)\}_{i=1}^{n}\), \(y_i \in \{-1, +1\}\)이다.

  1. 관측값 가중치(observation weight)를 고르게 둔다. \(w_1(i) = 1/n\).
  2. \(b = 1, \dots, B\)에 대해 다음을 되풀이한다.
    1. 가중치 \(w_b\)를 써서 기저 분류기 \(h_b\)를 훈련한다.
    2. 가중 오분류율(weighted error rate)을 잰다. $$\mathrm{err}_b = \frac{\sum_{i=1}^{n} w_b(i)\,I\big(y_i \ne h_b(\bx_i)\big)}{\sum_{i=1}^{n} w_b(i)} \tag{6.13}$$
    3. 분류기 가중치를 정한다. $$\alpha_b = \frac{1}{2}\log\frac{1 - \mathrm{err}_b}{\mathrm{err}_b} \tag{6.14}$$
    4. 가중치를 갱신(update)하고, 합이 1이 되게 \(\sum_{i'}w_{b+1}(i')\)로 나눈다. $$w_{b+1}(i) = w_b(i)\exp\big(-\alpha_b\,y_ih_b(\bx_i)\big) \tag{6.15}$$
  3. 최종 분류기를 낸다. $$H(\bx) = \operatorname{sign}\Big(\sum_{b=1}^{B}\alpha_bh_b(\bx)\Big) = \operatorname{sign}\big(F_B(\bx)\big) \tag{6.16}$$
(a) 분류기 가중치 αb 0 0.25 0.5 0.75 1 −2 −1 0 1 2 3 1 2 3 αb = (1/2) log((1 − errb)/errb) eαb: 틀린 관측값의 배율 장난감 예의 b = 1, 2, 3 가중 오분류율 errb (b) 마진에 따른 손실 −2 −1 0 1 2 0 1 2 3 4 0-1 손실 지수 손실 e−yF 로그 손실 ÷ log 2 마진 y · F(x) 손실
그림 6.18(a) 분류기 가중치 \(\alpha_b\)(파랑)는 가중 오분류율 \(\mathrm{err}_b\)가 0.5보다 작으면 양수, 0.5에서 0, 그보다 크면 음수이고, 틀린 관측값의 가중치에 곱하는 \(e^{\alpha_b}\)(점선)는 \(\mathrm{err}_b = 0.5\)에서 1이다. 점 셋은 6.20절 예의 세 단계다. (b) \(yF(\bx)\)(그림의 「마진」, 6.19절)의 함수로 그린 세 손실은 모두 0에서 1을 지나지만(로그 손실은 \(\log 2\)로 나눴다) 지수 손실(파랑)이 틀린 쪽(왼쪽)에서 가장 가파르다(L09 s28–s29의 식을 계산으로 그림, (b)는 보충).

\(F_b(\bx) = \sum_{b'=1}^{b}\alpha_{b'}h_{b'}(\bx)\)는 \(b\)단계까지 더한 점수이고(\(F_0 = 0\)), 최종 분류는 그 부호다(4.9절의 부호 함수(sign function)). 식 (6.13)은 가중치로 센 오분류율이다. 가중치를 정규화해 두면 분모가 1이라, 가중치를 확률로 삼아 관측값 하나를 뽑을 때 \(h_b\)가 틀릴 확률이 된다(슬라이드의 \(p_{D_t}[\cdot]\)). 식 (6.15)에서 맞힌 관측값은 \(e^{-\alpha_b}\)배, 틀린 관측값은 \(e^{\alpha_b}\)배가 되므로, 틀린 관측값은 맞힌 관측값에 견줘 \(e^{2\alpha_b} = (1 - \mathrm{err}_b)/\mathrm{err}_b\)배 무거워진다.

슬라이드는 \(h_b\)를 「가중치로 뽑은 표본으로 훈련한다」고 적었다. 가중치를 확률로 삼아 훈련 데이터를 다시 뽑는 재표집이다. 가중치를 손실에 직접 넣어 훈련해도 되고(ESL 알고리즘 10.1), 이 장의 그림은 그렇게 계산했다. 슬라이드의 주석은 \(\alpha_t\)를 「log(성공률/오류율)」이라 적었지만 식 (6.14)처럼 \(\tfrac12\)이 붙는다. (보충) \(\tfrac12\)이 없는 꼴은 ESL의 정의로, 틀린 관측값의 가중치만 키운다. 분류기 가중치가 모두 두 배가 되고 공통 인자는 정규화에서 사라지므로 가중치와 최종 분류는 같다(ESL 10.4).

\(\alpha_b\)는 \(h_b\)가 그 단계의 가중치 아래에서 받는 점수다(s29). 그림 6.18(a)에서 보듯 \(\mathrm{err}_b < 0.5\)이면 양수, 0.5이면 0, 0.5보다 크면 음수이고, \(\mathrm{err}_b\)가 0에 다가가면 끝없이 커진다. 그래서 기저 분류기는 가중 오분류율이 0.5보다 낮아야, 곧 무작위 추측보다 나아야 쓸모가 있다. 슬라이드는 「성공률이 적어도 50%」여야 한다고 적었지만, 정확히 50%면 \(\alpha_b = 0\)이라 그 분류기는 더해지지 않고 가중치도 바뀌지 않는다. 50%보다 높아야 한다.

(보충) 슬라이드는 50%보다 못하면 가중치가 의도와 반대로 갱신된다고 덧붙였다. 그 분류기 쪽에서 보면 맞다. 그러나 \(\mathrm{err}_b > 0.5\)인 \(h_b\)를 뒤집은 \(-h_b\)는 오분류율이 \(1 - \mathrm{err}_b < 0.5\)이고 \(\alpha_bh_b = (-\alpha_b)(-h_b)\)이므로, 알고리즘은 뒤집은 분류기를 양의 가중치로 쓴 것과 똑같이 움직인다. 정말 아무것도 하지 못하는 것은 \(\mathrm{err}_b = 0.5\)일 때뿐이다. 관례로는 오분류율이 0.5보다 낮은 분류기를 고른다.

(보충) 갱신한 가중치로 \(h_b\)를 다시 재면 가중 오분류율이 정확히 0.5다. 식 (6.14)를 넣으면 틀린 쪽 가중치의 합 \(\mathrm{err}_be^{\alpha_b}\)와 맞힌 쪽 합 \((1 - \mathrm{err}_b)e^{-\alpha_b}\)가 둘 다 \(\sqrt{\mathrm{err}_b(1 - \mathrm{err}_b)}\)로 같기 때문이다. 다음 분류기에게 \(h_b\)는 동전 던지기와 다를 바 없으니, 바로 같은 분류기가 다시 뽑히지 않는다.

기저 분류기는 무엇이든 되지만 트리, 특히 분할이 하나뿐인 트리인 stump가 널리 쓰인다(s29). 슬라이드는 stump를 「노드가 하나뿐인 결정 트리」라 적었는데, 내부 노드가 하나이고 잎이 둘이다.

주의 · 「boosting은 과적합에 강하다」

슬라이드는 boosting 모형이 과적합에 강한 경향이 있다고 적었다. 경향일 뿐이다. bagging이나 random forest와 달리 boosting은 \(B\)가 너무 크면 (대개 천천히) 과적합할 수 있어서 \(B\)를 교차검증으로 고른다(ISL 8.2.3). ISL 그림 8.13의 Heart 데이터에서도 boosting은 몇백 단계 뒤에 과적합하기 시작한다. (보충) 이 책의 Heart 분할(6.9절, Yes = \(+1\))에 stump로 AdaBoost를 돌리면 훈련 오분류율은 10단계에 12.7%, 100단계에 4.0%로 줄다가 181단계에 0이 되지만, 시험 오분류율은 10단계 무렵 16.3%까지 내려간 뒤 오히려 올라 50, 100, 200, 500, 1,000단계에서 19.7–21.8%다. 가지 친 트리 하나(22.4%)보다는 낫지만 random forest(약 18.6%)만 못하다.

6.19 AdaBoost와 지수 손실 AdaBoost and the Exponential Loss

L09 s30–s32 · ESL 10.2–10.6

AdaBoost의 최종 분류기를 다시 보면 3.4절의 stagewise 선택이 떠오른다(s30). stagewise 선택은 단계마다 앞서 구한 계수를 모두 고정한 채 항 \(\beta x_j\) 하나를 더했다. AdaBoost도 앞에서 더한 분류기와 그 가중치를 고정한 채 새 항 하나를 더한다.

$$F_b(\bx) = F_{b-1}(\bx) + \alpha_bh_b(\bx)$$

슬라이드는 이 식을 \(\sum_{i=1}^{t-1}\alpha_ih_i + \alpha_kh_k\)로 적어 첨자 \(t\)와 \(k\)를 섞었다. 더하는 것(feature 대 분류기)과 줄이는 손실이 다를 뿐 꼴은 같다. 그러면 stagewise 선택과 AdaBoost는 무슨 관계인가?

답은 손실에 있다(s31–s32). 앞 단계에서 더한 항은 고정한 채, 손실을 가장 줄이는 기저 학습기와 그 계수를 한 단계에 하나씩 더해 가는 학습을 stagewise 가법 학습(stagewise additive learning)이라 한다(ESL 알고리즘 10.2). 3.4절의 stagewise 선택은 제곱 손실로 feature 하나를 더하는 그 한 예다. 손실을 5.3절의 지수 손실

$$\sum_{i=1}^{n}\exp\big(-y_iF(\bx_i)\big) \tag{6.17}$$

로 두면 AdaBoost가 나온다. \(y_iF(\bx_i)\)가 양수면 맞힌 것이고 클수록 손실이 작으며, 틀린 쪽으로 갈수록 손실이 지수로 커진다. 단계 \(b\)에서는 \(F_{b-1}\)을 고정하고 새로 더할 항의 분류기 \(h_b\)와 그 가중치 \(\alpha_b\)를 고른다. 슬라이드는 식 (6.17)의 합 안을 첨자 \(i\) 없이 \(e^{-yf(\bx)}\)로 적었다.

  1. \(F = F_{b-1} + \alpha_bh_b\)를 넣고 지수를 둘로 쪼갠다. $$\sum_{i=1}^{n}\exp\big(-y_iF_{b-1}(\bx_i)\big)\exp\big(-\alpha_b\,y_ih_b(\bx_i)\big) = \sum_{i=1}^{n}w_b(i)\,e^{-\alpha_b y_ih_b(\bx_i)}$$ 앞 인수 \(w_b(i) = \exp(-y_iF_{b-1}(\bx_i))\)는 \(\alpha_b\)와 \(h_b\)에 기대지 않으므로 관측값마다의 가중치로 볼 수 있다(슬라이드의 \(D_t(i)\)). 앞 분류기들이 틀린 관측값일수록 크다. 정규화하지 않은 가중치라 \(w_1(i) = 1\)이지만, 알고리즘의 \(1/n\)과 상수배만 달라 최소화의 답과 \(\mathrm{err}_b\)는 같다.
  2. \(y_ih_b(\bx_i) = \pm1\)이므로 맞힌 관측값과 틀린 관측값으로 합을 나누면 지수가 \(e^{-\alpha_b}\)와 \(e^{\alpha_b}\)가 된다. 맞힌 쪽의 합을 「전체에서 틀린 쪽을 뺀 것」으로 바꿔 정리하면 $$e^{-\alpha_b}\sum_{i=1}^{n}w_b(i) + \big(e^{\alpha_b} - e^{-\alpha_b}\big)\sum_{i=1}^{n}w_b(i)\,I\big(y_i \ne h_b(\bx_i)\big)$$ 이다.
  3. \(\alpha_b > 0\)이면 \(e^{\alpha_b} - e^{-\alpha_b} > 0\)이므로, 어떤 \(\alpha_b\)에서든 가장 좋은 \(h_b\)는 가중 오분류 \(\sum_iw_b(i)I(y_i \ne h_b(\bx_i))\)를 가장 작게 하는 분류기다. 알고리즘의 (a), 가중치로 기저 분류기를 훈련하는 단계가 이것이다.
  4. 그 \(h_b\)를 넣고 \(\alpha_b\)로 미분해 0으로 두면 \(-e^{-\alpha_b}\sum_iw_b(i) + (e^{\alpha_b} + e^{-\alpha_b})\sum_iw_b(i)I(y_i \ne h_b(\bx_i)) = 0\)이다. 정리하면 \(e^{-\alpha_b}/(e^{\alpha_b} + e^{-\alpha_b}) = \mathrm{err}_b\), 곧 \(\mathrm{err}_b = 1/(e^{2\alpha_b} + 1)\)이고, \(\alpha_b\)에 대해 풀면 식 (6.14)가 나온다.
  5. 다음 단계의 가중치는 식 (6.15) 그대로다. 알고리즘의 정규화는 모든 가중치에 같은 수를 곱하는 일이라 결과를 바꾸지 않는다. $$\begin{aligned} w_{b+1}(i) &= \exp\big(-y_iF_b(\bx_i)\big) \\ &= w_b(i)\exp\big(-\alpha_b\,y_ih_b(\bx_i)\big) \end{aligned}$$
결과 · AdaBoost는 지수 손실의 stagewise 가법 학습이다

식 (6.17)의 지수 손실을 stagewise 가법 학습으로 최소화하면, 단계마다 기저 분류기는 가중 오분류율을 최소화하고 가중치 \(w_b\), 가중 오분류율 \(\mathrm{err}_b\), 분류기 가중치 \(\alpha_b\)가 모두 식 (6.13)–(6.15)와 같아진다. 곧 AdaBoost다(ESL 10.4).

이로써 앞 장들이 넘긴 두 약속을 받는다. 3.4절은 앞서 맞춘 것을 고정하고 작은 보정을 쌓는 발상을 boosting에서 다시 만난다고 했다. stagewise 선택이 제곱 손실로 feature를 하나씩 쌓았다면, AdaBoost는 지수 손실로 분류기를 하나씩 쌓는다. 5.3절은 순위를 매기는 문제의 대리 손실(surrogate loss)로 나온 지수 손실이 AdaBoost와 이어진다고 했다. 그 손실이 식 (6.17)이다(5.3절의 것은 아이템 쌍의 순서에 쓴 꼴이다).

주의 · 무엇을 최소화하는가, 그리고 미분 한 줄

슬라이드는 이 결과를 「단계마다 오분류율을 최소화하는 AdaBoost와 같다」고 적었다. 단계마다 기저 분류기가 최소화하는 것은 그냥 오분류율이 아니라 가중 오분류율이고(3단계), \(\alpha_b\)는 지수 손실을 줄이도록 정한다(4단계). AdaBoost 전체가 단계적으로 줄이는 것은 지수 손실이다. ESL 10.4의 예에서는 훈련 오분류율이 0이 된 뒤에도 지수 손실이 계속 줄고 시험 오류도 계속 나아진다. 또 슬라이드의 미분 줄은 각 항에 \(\alpha_t\)를 곱해 \(-\alpha_te^{-\alpha_t}\sum\cdots + (\alpha_te^{\alpha_t} + \alpha_te^{-\alpha_t})\sum\cdots = 0\)으로 적었는데, \(e^{-\alpha_t}\)를 \(\alpha_t\)로 미분하면 \(-e^{-\alpha_t}\)다. 다음 줄에서 \(\alpha_t\)로 나눠 사라지므로 결과는 맞다.

(보충) 그림 6.18(b)는 세 손실을 \(yF(\bx)\)의 함수로 견준다. ESL은 이 양을 마진(margin)이라 부른다. 부호가 맞으면 양수이고 클수록 확실하게 맞힌 것이다(ESL 10.6). 그림 4.6에서 본 0-1 손실은 \(yF \le 0\)이면 1, 아니면 0인 계단이다. 4.4절의 로그 손실 \(\log(1 + e^{-yF})\)(식 (4.8)의 점수 \(\bbeta^\top\bx\)를 \(F\)로 바꾼 것)과 지수 손실 \(e^{-yF}\)은 그 계단을 위에서 감싸는 매끄러운 대리 손실이다. 둘 다 마진이 클수록 작지만, 크게 틀린 쪽으로 가면 로그 손실은 거의 직선으로, 지수 손실은 지수로 커진다. 지수 손실은 크게 틀린 관측값에 훨씬 큰 무게를 싣고, 그래서 레이블이 잘못 붙은 관측값이 섞인 데이터에는 덜 강건하다(ESL 10.6).

(보충) 지수 손실을 고를 근거가 하나 더 있다. 입력 \(\bx\)마다 지수 손실의 기댓값을 가장 작게 하는 \(F\)는

$$F^*(\bx) = \frac{1}{2}\log\frac{\mathbb{P}(Y = +1 \mid X = \bx)}{\mathbb{P}(Y = -1 \mid X = \bx)}$$

로, 4.2절 로그 오즈의 절반이다(ESL 식 10.16). 그러니 \(F\)의 부호를 보는 것은 사후확률이 큰 클래스를 고르는 4.9절의 베이즈 분류기를 흉내 내는 일이다. 로그 손실을 최소화하는 점은 로그 오즈 그 자체라, 두 손실은 척도만 다를 뿐 모집단에서는 같은 분류를 주고 유한한 데이터에서 틀린 관측값을 다루는 방식이 다르다.

6.20 AdaBoost의 작동 예 AdaBoost at Work

L09 s33–s36

슬라이드는 양성 다섯, 음성 다섯인 점 열 개에 stump로 AdaBoost를 세 단계 돌려 보인다(s33–s36). stump는 축 하나를 골라 선 하나로 나누고 한쪽을 \(+1\), 다른 쪽을 \(-1\)로 예측한다. 그림 6.19가 세 단계와 최종 분류기를, 표 6.3이 점마다의 가중치를 보인다. 점은 자리에 따라 다섯 무리로 나뉜다. 왼쪽의 양성 둘, 위쪽의 양성 셋, 가운데의 음성 셋, 오른쪽 위 구석과 오른쪽 아래의 음성 하나씩이다. 첫 두 단계에는 가중 오분류율이 같은 stump가 여럿 있어(첫 단계 넷, 둘째 단계 둘) 슬라이드가 고른 것을 따랐다.

\(b = 1\). 가중치는 모두 0.1이다. stump는 왼쪽 띠(\(x_1 < 0.23\))만 양성으로 예측해 위쪽 양성 셋을 틀린다. \(\mathrm{err}_1 = 3 \times 0.1 = 0.30\)이고 \(\alpha_1 = \frac12\log(0.7/0.3) \approx 0.42\)다. 갱신하면 틀린 셋은 \(e^{\alpha_1} \approx 1.53\)배, 맞힌 일곱은 \(e^{-\alpha_1} \approx 0.65\)배가 되고, 정규화하면 정확히 \(1/6 \approx 0.167\)과 \(1/14 \approx 0.071\)이다. 틀린 셋의 합이 \(1/2\)이 된다(6.18절).

\(b = 2\). 이번 stump는 오른쪽 좁은 띠(\(x_1 \ge 0.84\))만 음성으로 예측한다. 무거워진 위쪽 양성 셋은 맞히고 가운데의 가벼운 음성 셋(각 \(1/14\))을 틀린다. 틀린 개수는 첫 단계와 같은 셋인데 \(\mathrm{err}_2 = 3/14 \approx 0.21\)로 작다. 슬라이드의 말대로 무거운 셋을 맞히고 가벼운 셋을 틀렸기 때문이다. \(\alpha_2 = \frac12\log(11/3) \approx 0.65\)다.

\(b = 3\). 갱신한 가중치는 둘째 단계에서 틀린 음성 셋이 \(1/6\), 위쪽 양성 셋이 \(7/66 \approx 0.106\), 나머지 넷이 \(1/22 \approx 0.045\)다. 이번 stump는 위쪽 띠(\(x_2 \ge 0.71\))만 양성으로 예측해, 가장 가벼운 넷(각 \(1/22\)) 가운데 왼쪽의 양성 둘과 오른쪽 위의 음성 하나, 셋을 틀린다. \(\mathrm{err}_3 = 3/22 \approx 0.14\), \(\alpha_3 = \frac12\log(19/3) \approx 0.92\)다.

표 6.3그림 6.19의 열 점에서 단계마다 정규화한 관측값 가중치 \(w_b(i)\)(점 하나의 값). 굵은 글씨는 그 단계의 stump가 틀린 무리이고, \(F_3\)은 그림과 같이 반올림한 \(\alpha_b\)로 더한 최종 점수
무리점\(b = 1\)\(b = 2\)\(b = 3\)\(F_3\)
왼쪽 양성20.1000.0710.045+0.15
위쪽 양성30.1000.1670.106+1.15
가운데 음성30.1000.0710.167−0.69
오른쪽 위 음성10.1000.0710.045−0.15
오른쪽 아래 음성10.1000.0710.045−1.99
\(\mathrm{err}_b\)0.3000.2140.136
\(\alpha_b\)0.4240.6500.923

최종 분류기는 세 stump의 가중 다수결이다(s36).

$$H(\bx) = \operatorname{sign}\big(0.42\,h_1(\bx) + 0.65\,h_2(\bx) + 0.92\,h_3(\bx)\big)$$

세 경계선이 평면을 여섯 칸으로 나누고 칸마다 점수 \(F_3\)이 정해진다(그림 6.19의 오른쪽). 왼쪽 띠의 아래 칸은 \(0.42 + 0.65 - 0.92 = +0.15\)라 양성, 가운데 아래 칸은 \(-0.42 + 0.65 - 0.92 = -0.69\)라 음성이다. 열 점이 모두 맞는다. stump 하나하나는 고른 가중치로 재면 열 개 가운데 셋을 틀리는데, 가중 다수결은 하나도 틀리지 않는다. stump 하나로는 그릴 수 없는 계단 모양 경계다. 약한 학습기를 모아 강한 분류기를 만든다는 boosting의 요지가 이것이다. 경계에 붙은 두 칸(\(+0.15\)와 \(-0.15\))은 \(\alpha_1 + \alpha_2\)와 \(\alpha_3\)의 근소한 차이로 정해지지만, 반올림하지 않은 값으로 더해도 부호는 같다.

슬라이드의 발표자 노트에 적힌 가중치(0.0717, 0.1661 등)는 \(\alpha_1\), \(\alpha_2\)를 0.42, 0.65로 반올림해 계산한 값이라 위의 분수와 넷째 자리에서 조금 다르다. 또 s35는 위쪽 양성 셋을 가운데 음성 셋보다 크게 그렸는데, 가중치는 가운데 음성 셋이 \(1/6\)로 위쪽 양성 셋의 \(7/66\)보다 크다. (보충) 이 예에서 \(\mathrm{err}_b\)가 0.30, 0.21, 0.14로 줄어든 것은 이 데이터의 성질일 뿐 일반 법칙이 아니다. 같은 규칙으로 더 돌리면 넷째 단계부터 0.18–0.19로 올라 그 언저리에 머문다.

b = 1 0 0 1 1 X1 X2 h1: x1 < 0.23이면 +1 err1 = 0.30 · α1 = 0.42 b = 2 h2: x1 < 0.84이면 +1 err2 = 0.21 · α2 = 0.65 b = 3 h3: x2 ≥ 0.71이면 +1 err3 = 0.14 · α3 = 0.92 양성(+1) 음성(−1) 그 단계의 stump가 틀린 점 점 크기(넓이) ∝ 가중치 wb(i) +1로 예측 −1로 예측 +1.99 +0.15 +1.15 −0.69 −0.15 −1.99 최종 H(x) = sign(F3(x)) F3 = 0.42h1 + 0.65h2 + 0.92h3 칸의 수는 이 식으로 더한 F3 · 훈련 오류 0
그림 6.19단계마다 stump(칠한 면은 주황이 \(+1\), 파랑이 \(-1\)로 예측하는 쪽)가 틀린 점(검은 고리)은 다음 단계에서 커지고, 세 stump의 가중 다수결 \(\operatorname{sign}(F_3)\)(오른쪽)은 여섯 칸의 점수로 열 점을 모두 맞힌다. 점의 넓이는 그 단계의 가중치에 비례한다. 분할점은 이웃한 두 점 좌표의 가운데로 정해 슬라이드의 선과 조금 다르지만 나눔은 같다(L09 s33–s36을 다시 그림).

6.21 회귀의 boosting Boosting for Regression

L09 s37–s38 · ISL 8.2.3

회귀의 boosting은 더 단순하다(s37). 단계마다 지금 모형의 잔차(residual), 곧 정답에서 예측을 뺀 값에 새 기저 학습기를 맞추고, 그것을 모형에 더해 잔차를 갱신한다. 잔차가 큰 관측값, 곧 지금 모형이 못 맞히는 관측값일수록 새 학습기가 맞출 몫이 크다. 분류에서 틀린 관측값의 가중치 \(w_b(i)\)가 하던 일을 회귀에서는 잔차가 한다. 슬라이드는 잔차를 \(r_t(i)\)로 적었지만 이 책에서 \(r\)은 상관계수의 글자라 \(e_i\)로 쓴다.

슬라이드는 단계를 \(t\), 기저 모형을 \(f_t\)로 적었다. 이 책은 ISL처럼 \(b\)와 \(\hat f^{b}\)로 쓰고, 6.13절 bagging의 \(\hat f^{*b}\)와는 별표로 가른다. 기저 학습기로는 회귀에서도 트리나 stump가 널리 쓰인다.

알고리즘 · 회귀의 boosting (L09 s38, ISL 알고리즘 8.2)
  1. \(\hat f(\bx) = 0\)으로, 모든 \(i\)에 대해 \(e_i = y_i\)로 둔다.
  2. \(b = 1, \dots, B\)에 대해 다음을 되풀이한다.
    1. 잔차를 반응으로 삼은 데이터 \(\{(\bx_i, e_i)\}\)에 분할 \(d\)개(잎 \(d + 1\)개)짜리 트리 \(\hat f^{b}\)를 맞춘다.
    2. \(\hat f(\bx) \leftarrow \hat f(\bx) + \lambda\hat f^{b}(\bx)\)로 모형을 고친다.
    3. \(e_i \leftarrow e_i - \lambda\hat f^{b}(\bx_i)\)로 잔차를 고친다.
  3. boosting한 모형을 낸다. $$\hat f(\bx) = \sum_{b=1}^{B}\lambda\hat f^{b}(\bx) \tag{6.18}$$

\(\lambda\)는 새 트리를 그대로 더하지 않고 줄여서 더하게 하는 축소 파라미터(shrinkage parameter)다. 학습을 일부러 느리게 해, 더 많은, 모양이 서로 다른 트리가 잔차를 나눠 맡게 한다. 제5장의 규제 강도 \(\lambda\)와는 다른 것이다. 슬라이드는 범위를 \(0 \le \lambda \le 1\)로 적었지만 \(\lambda = 0\)이면 아무것도 배우지 않는다. ISL은 0.01이나 0.001 같은 작은 양수를 쓴다. (보충) ISL은 대개 느리게 배우는 방법이 잘 된다고 덧붙인다.

(a) stump(d = 1), λ = 0.1로 b단계까지 더한 모형 f(b단계까지) 참 함수 f 훈련 데이터 −1 0 1 2 b = 1 · 시험 MSE 0.423 b = 5 · 시험 MSE 0.354 0 0.5 1 −1 0 1 2 b = 25 · 시험 MSE 0.272 0 0.5 1 b = 200 · 시험 MSE 0.194 x y (b) 단계 b에 따른 훈련 · 시험 MSE 1 10 100 1,000 5,000 0 0.1 0.2 0.3 0.4 0.5 λ = 1 λ = 0.1 λ = 0.01 실선 시험 · 점선 훈련 잡음 분산 0.16 단계 b(stump 수) MSE
그림 6.20(a) 축소 파라미터 \(\lambda = 0.1\)로 stump를 하나씩 더하면 모형(파랑 계단)이 평균 둘레의 평평한 선에서 시작해 200단계에서는 참 함수(검은 점선)를 따라가고, (b) \(\lambda\)가 작을수록 시험 MSE(실선)가 가장 낮아지는 데 단계가 많이 들지만 오래 돌려도 덜 나빠진다(\(\lambda = 1\)은 13단계에서 가장 낮고 곧 오른다). (b)의 점선은 훈련 MSE, 회색 점선은 잡음의 분산 0.16이다. 반응의 평균을 빼고 시작했다(ISL처럼 0에서 시작해도 50단계 무렵부터 같다). 예시 데이터(그림 6.15와 같은 관측값 50개, L09 s37–s38을 ISL 알고리즘 8.2로 계산해 그림).

그림 6.20은 6.13절과 같은 1차원 예시 데이터에 stump로 회귀 boosting을 한 것이다. (a)는 \(\lambda = 0.1\)로 \(b\)단계까지 더한 모형이다. 1단계에서는 거의 평평하다가 5, 25단계를 지나며 계단이 쌓여 200단계에서는 참 함수를 따라간다(시험 MSE 0.423, 0.354, 0.272, 0.194). (b)는 단계에 따른 MSE다. \(\lambda = 1\)은 13단계 만에 시험 MSE가 가장 낮은 0.191에 이르렀다가 곧 다시 올라 5,000단계에서 0.316이고, 그사이 훈련 MSE는 0이 된다. \(\lambda = 0.1\)은 239단계(0.193), \(\lambda = 0.01\)은 2,315단계(0.193)에서 가장 낮고, 5,000단계에서 각각 0.246과 0.198이다. 가장 낮은 값은 셋이 비슷하지만 \(\lambda\)가 작을수록 거기까지 단계가 많이 들고 과적합은 늦게, 천천히 온다. 셋의 가장 낮은 값은 모두 그림 6.15의 깊은 트리 하나(0.254)보다 낮다.

(보충) 세 튜닝 파라미터 Three Tuning Parameters

ISL은 회귀의 boosting에 손잡이가 셋 있다고 정리한다(ISL 8.2.3). 첫째는 트리 수 \(B\)다. bagging이나 random forest와 달리 \(B\)가 너무 크면 과적합할 수 있으므로(그림 6.20(b)의 \(\lambda = 1\)) 교차검증으로 고른다. 둘째는 \(\lambda\)로, 흔히 0.01이나 0.001이고, 아주 작으면 \(B\)가 아주 커야 한다. 셋째는 트리 하나의 분할 수 \(d\)다. 분할 \(d\)개짜리 트리는 feature를 많아야 \(d\)개 엮으므로, \(d\)는 모형이 담을 수 있는 feature 사이의 상호작용(interaction), 곧 2.10절에서 본 곱의 항이 몇 겹까지 가능한지를 정한다. 그래서 \(d\)를 상호작용 깊이(interaction depth)라 한다. \(d = 1\)이면 트리가 stump이고, 항마다 feature 하나만 쓰므로 boosting한 모형은 가법 모형(additive model)이 된다. 흔히 \(d = 1\)로도 잘 된다.

(보충) 회귀의 boosting도 6.19절의 틀로 볼 수 있다. 제곱 손실로 stagewise 가법 학습을 하면, 지금까지 더한 모형을 \(\hat f\), 그 잔차를 \(e_i = y_i - \hat f(\bx_i)\)라 할 때 단계마다 최소화할 것은 \(\sum_i\big(y_i - \hat f(\bx_i) - \beta g(\bx_i)\big)^2 = \sum_i\big(e_i - \beta g(\bx_i)\big)^2\)이다(ESL 식 10.7, \(g\)는 새 기저 학습기). 지금의 잔차에 새 학습기를 맞추는 것, 곧 \(\lambda = 1\)일 때의 위 알고리즘이고, \(\lambda < 1\)은 그 걸음을 줄인 것이다(ESL 10.12.1). 3.4절의 stagewise 선택도 식 (3.3) \(\hat\beta_j = \sum_ix_{ij}e_i/\sum_ix_{ij}^2\)으로 잔차에 feature 하나를 맞췄다. 손실이 제곱이 아니면 잔차 자리에 손실의 음의 gradient를 두고 맞추는데, 이것이 gradient boosting이다(ESL 10.10).

6.22 앙상블의 정확도와 해석력 Accuracy and Interpretability of Ensembles

L09 s39 · ISL 8.2

슬라이드는 강의를 이렇게 맺는다(s39). 결정 트리는 단순하고 해석하기 쉬운 회귀·분류 모형이지만, 예측 정확도에서는 대개 다른 방법과 겨루지 못한다(6.10절). bagging, random forest, boosting은 트리를 여럿 키워 그 예측을 합침으로써 트리의 예측 정확도를 높인다. random forest와 boosting은 지도학습(supervised learning)에서 가장 앞선 방법에 들지만, 그 결과는 해석하기 어렵다. 트리 수백 그루의 합은 그림 6.2(a)처럼 한 장의 그림으로 그릴 수 없다. 슬라이드는 딥러닝(deep learning) 모형이 성능은 더 높고 해석은 더 어렵다고 덧붙인다(딥러닝은 제2부에서 다룬다). 1.8절의 그림 1.6에서 bagging과 boosting이 트리보다 오른쪽 아래에, 딥러닝이 그보다 더 아래에 놓인 것과 같은 이야기다. 다만 딥러닝이 늘 더 낫지는 않다. ISL은 Hitters 데이터에서 작은 신경망(neural network)이 선형회귀나 lasso보다 낫지 않았던 예를 들며, 새 방법의 이점은 데이터가 아주 클 때 두드러진다고 말한다(ISL 10.6).

(보충) 그림 6.21은 6.6절의 Hitters 분할(훈련 132명 · 시험 131명, feature 아홉)에서 세 앙상블을 트리 하나와 견준 것이다. 트리 500그루에서 시험 MSE는 bagging(\(m_{\text{try}} = 9\)) 0.241, random forest(\(m_{\text{try}} = 3\)) 0.288, boosting(stump, \(\lambda = 0.01\)) 0.261로, 셋 다 6.6절의 가지 친 트리(0.342)와 가지 치기 전 트리 \(T_0\)(0.367)보다 낮다. 다만 천천히 배우는 boosting은 215그루가 지나서야 가지 친 트리보다 낮아지고, 813그루에서 가장 낮은 0.245(시험 데이터로 고른 값이라 낙관적이다)를 지나 5,000그루에서 0.289로 오른다.

bagging mtry = 9 · random forest mtry = 3 · boosting d = 1, λ = 0.01 1 10 100 1,000 5,000 0.2 0.3 0.4 0.5 0.6 0.7 0.8 최소 0.245 시험 MSE(B = 500에서) bagging 0.241 random forest 0.288 boosting 0.261 가지 친 트리 0.342 T0 0.367 트리 수 B 시험 MSE
그림 6.21Hitters 데이터에서 bagging(주황 실선), random forest(주황 파선), boosting(검정)의 시험 MSE는 트리 수 \(B\)가 늘면 셋 다 가지 친 트리 하나(회색 파선, 0.342)와 \(T_0\)(회색 점선, 0.367)보다 낮아지며, 천천히 배우는 boosting은 수백 그루가 지나서야 그 아래로 내려간다. 범례의 수는 \(B = 500\)(세로 회색 선)에서의 값이고, 방법 사이의 순서는 데이터와 분할에 따라 바뀐다. Hitters 데이터, 6.6절과 같은 훈련 132명 · 시험 131명(보충, L09 s39).

방법 사이의 순서는 데이터와 분할, 튜닝 파라미터에 따라 바뀐다. 이 분할에서는 bagging이 random forest보다 낮았고, 숲의 시드를 열 번 바꿔도 마찬가지였다(bagging 0.237–0.242, random forest 0.281–0.295). \(m_{\text{try}} = 3\)이면 분할마다 Years가 후보에 들지 못할 확률이 \(6/9\)이라, 강한 feature가 몇 개뿐인 데이터에서는 후보를 줄이는 것이 손해일 수 있다(까닭은 추측이다). 「boosting이 가장 낫다」나 「random forest가 늘 bagging보다 낫다」로 넓혀 읽지 않는다.

(보충) 해석력을 일부 되찾는 요약으로 변수 중요도(variable importance)가 있다(ISL 8.2.1). feature마다 그 feature로 나눈 분할이 줄인 RSS(회귀)나 지니 지수(분류)를 모든 트리에 걸쳐 더해 트리 수로 나눈 값이다. 그림 6.22는 Heart의 random forest에서 잰 것으로, 가장 큰 값을 100으로 맞추면 Thal 100, Ca 97, MaxHR 77, Oldpeak 67, ChestPain 57의 순이고 Fbs가 3으로 가장 작다. 위의 둘은 ISL 그림 8.9와 같고 숲 10개에서도 늘 위의 둘이었지만, 셋째부터는 데이터 분할과 구현에 따라 조금 다르다. 또 지니 지수의 감소로 잰 중요도는 분할점 후보가 많은 feature를 부풀리는 경향이 있다고 알려져 있으므로, 순위를 그대로 믿기보다 대략의 무게로 읽는다.

Thal 100 Ca 97 MaxHR 77 Oldpeak 67 ChestPain 57 Chol 54 RestBP 53 Age 51 Slope 31 Sex 28 ExAng 12 RestECG 11 Fbs 3 0 20 40 60 80 100 상대 중요도(지니 감소, 최댓값 = 100)
그림 6.22Heart 데이터의 random forest에서 feature마다 그 feature의 분할이 줄인 지니 지수를 트리 수로 나누고 가장 큰 값을 100으로 맞추면 Thal(파랑)과 Ca가 크게 앞서고 Fbs는 거의 쓰이지 않는다. \(m_{\text{try}} = 4\), 500그루짜리 숲 10개의 평균. Heart 데이터, 6.9절과 같은 훈련 150명(ISL 그림 8.9를 다시 계산함, 보충).

제7장 서포트 벡터 머신

Support Vector Machines

확률을 구하지 않고 두 클래스(class)를 가르는 결정 경계(decision boundary)를 곧바로 고른다면 어느 경계가 가장 좋은가? 서포트 벡터 머신(support vector machine, SVM)은 가장 가까운 관측값(observation)까지의 거리, 곧 마진(margin)이 가장 큰 경계를 최적화(optimization) 문제로 세워 풀고(7.1–7.7절), 겹치는 데이터에서는 위반을 허용하며(7.8–7.11절), 그것이 힌지 손실(hinge loss)에 \(\ell_2\) 벌점을 더한 것과 같음을 보이고(7.12–7.14절), 내적(inner product)을 다른 함수로 바꿔 휜 경계를 얻는다(7.15–7.17절). 4.2·4.9절의 \(\pm1\) 부호화와 부호 함수(sign function), 4.2절의 점수(score), 4.4절의 로그 손실(log-loss)·선형 분리 가능(linearly separable), 4.10절의 판별 분류기(discriminative classifier)와 생성 분류기(generative classifier), 5.3절의 힌지 손실, 5.5절의 \(\ell_2\) 벌점, 6.19절의 \(yF(\bx)\)와 지수 손실(exponential loss)을 가져온다. 슬라이드의 자리는 옮기지 않았다.

이 장의 구성

  1. 7.1확률 없이 경계를 고른다140
  2. 7.2초평면과 최대 마진 분류기140
  3. 7.3부호로 분류하기와 경계까지의 거리141
  4. 7.4마진 최대화의 원문제143
  5. 7.5라그랑주 승수와 KKT 조건145
  6. 7.6쌍대문제146
  7. 7.7서포트 벡터147
  8. 7.8잡음과 선형 분리 불가능148
  9. 7.9슬랙 변수와 소프트 마진149
  10. 7.10소프트 마진의 쌍대문제150
  11. 7.11비용 파라미터 C151
  12. 7.12마진 기반 손실152
  13. 7.13로그 손실과 지수 손실153
  14. 7.14힌지 손실154
  15. 7.15고차원으로 보내 분리하기155
  16. 7.16내적과 커널156
  17. 7.17방사 커널157
  18. 7.18셋 이상의 클래스159
  19. 7.19SVM과 로지스틱 회귀159

원천 Lecture 10 (2026-10-19) 슬라이드 5–8, 10–21, 23–29, 31–41, 43–50 · 읽기 ISL 9.1–9.5

7.1 확률 없이 경계를 고른다 Choosing a Boundary without Probabilities

L10 s05–s06 · ISL 9.1.2–9.1.3

(a) 데이터를 가르는 직선 셋 1 2 3 −2 0 2 −2 0 2 X1 X2 (b) 법선 벡터와 두 반평면 β βTx > 0 βTx < 0 −2 0 2 −2 0 2 X1 X2
그림 7.1(a) 원점을 지나는 세 직선은 모두 두 클래스를 완벽하게 가르지만, 가장 가까운 점까지의 거리가 각각 0.22, 0.44, 0.13으로 다르다. (b) 2번 직선의 법선 벡터 \(\bbeta\)(파랑)가 가리키는 쪽(주황 면)은 \(\bbeta^\top\bx > 0\), 반대쪽(파란 면)은 \(\bbeta^\top\bx < 0\)이다. 이 장의 그림은 양성(\(+\))을 주황, 음성(○)을 파랑으로 그리고, 파랑은 그림의 주인공(여기서는 \(\bbeta\))도 겸한다. 원점에 대해 점대칭인 예시 데이터(ISL 그림 9.2를 본뜸, L10 s06–s07).

지금까지 본 분류기(classifier)는 모두 \(p(y \mid \bx)\)를 추정했다(s05). 4.1–4.4절의 로지스틱 회귀(logistic regression)는 이 사후확률(posterior probability)을 곧바로 모형(model)으로 세워 조건부 가능도(conditional likelihood)로 맞추는 확률적 판별 분류기이고, 4.10–4.13절의 판별분석(discriminant analysis)은 클래스별 입력(input) 분포와 사전확률(prior probability)을 추정한 뒤 베이즈 정리(Bayes' theorem)로 뒤집는 확률적 생성 분류기였다. SVM은 확률을 전혀 쓰지 않는다. 분류(classification) 성능이 좋아지도록 결정 경계 자체를 맞출 뿐이다. 그래서 SVM이 내는 값은 확률이 아니고, 이 차이가 7.14절과 7.19절의 비교로 이어진다.

그러면 무엇을 기준으로 경계를 고를까(s06)? 그림 7.1(a)의 두 클래스는 직선 하나로 완전히 갈린다. 가르는 직선은 무수히 많고, 그림의 셋은 모두 훈련 데이터(training data)를 하나도 틀리지 않는다. 훈련 데이터의 오분류율(misclassification error rate)만으로는 셋 가운데 하나를 고를 수 없다. 앞의 모형들에서는 가정이 경계를 정했다. 판별분석은 클래스마다 입력이 정규분포(normal distribution)를 따른다고 가정했고, 로지스틱 회귀는 로그 오즈(log odds)가 입력에 선형이라고 가정했다. 그런 분포 가정도, \(p(y \mid \bx)\)의 추정도 없이 경계를 고른다면 무엇이 가장 그럴듯한가?

그림을 보면 답이 짐작된다. 1번과 3번 직선은 어느 한 클래스의 점을 스치듯 지나가고, 2번 직선은 두 무리 사이를 넉넉하게 지난다. (보충) 훈련 데이터에서 두 클래스와 넉넉히 떨어진 경계라면, 훈련 데이터 근처에 떨어질 새 관측값도 맞은 쪽에 둘 가능성이 크다(ISL 9.1.3). 「가장 가까운 점까지의 거리가 가장 큰 경계」를 고르는 것이 7.2절의 출발점이고, 이 장의 나머지는 그 경계를 계산하는 법(7.3–7.7절)과 그것을 겹치는 데이터와 휜 경계로 넓히는 법이다.

SVM은 1.8절의 그림 1.6에서 bagging·boosting과 딥러닝(deep learning) 사이, 유연성(flexibility)이 높지만 해석력(interpretability)이 낮은 오른쪽 아래에 있었다. 왜 그 자리인지는 7.15–7.17절의 비선형 확장과 로지스틱 회귀와의 비교(7.19절)에서 드러난다.

7.2 초평면과 최대 마진 분류기 Hyperplanes and the Maximal Margin Classifier

L10 s07–s08 · ISL 9.1.1–9.1.4

먼저 경계의 모양을 정하자(s07). 4.2절에서 로지스틱 회귀의 결정 경계는 초평면(hyperplane)이었다. 정확히 말하면 \(p\)차원(dimension) 공간의 초평면은 \(p - 1\)차원의 평평한 아핀 부분공간(affine subspace)이다(ISL 9.1.1). 「아핀」은 원점을 지나지 않아도 된다는 뜻이다. 식으로 쓰면 다음과 같다.

$$\beta_0 + \beta_1x_1 + \beta_2x_2 + \cdots + \beta_px_p = 0 \tag{7.1}$$

\(p = 2\)이면 직선, \(p = 3\)이면 평면이다. 이 장의 \(\bx = (x_1, \dots, x_p)^\top\)는 feature \(p\)개만 담은 벡터다. 4.2절처럼 1을 붙여 절편(intercept)을 흡수하지 않고, 절편 \(\beta_0\)을 따로 두며 \(\bbeta = (\beta_1, \dots, \beta_p)^\top\)는 절편을 뺀 계수(coefficient)다(4.10절의 판별분석, 5.5절의 ridge 회귀와 같은 약속). 그러면 식 (7.1)은 \(\beta_0 + \bbeta^\top\bx = 0\)이다. 슬라이드는 feature의 값 \(x_j\)까지 굵게 적었지만 이 책은 스칼라를 보통체로 쓴다.

\(\bbeta\)를 초평면의 법선 벡터(normal vector)라 한다. 초평면에 수직인 방향을 가리키기 때문이다. (보충) 초평면 위의 두 점 \(\bx\), \(\bx'\)에서는 \(\beta_0 + \bbeta^\top\bx = \beta_0 + \bbeta^\top\bx' = 0\)이므로 \(\bbeta^\top(\bx - \bx') = 0\)이다. 초평면 안의 어느 방향과도 \(\bbeta\)의 내적이 0이니 \(\bbeta\)는 초평면에 수직이다. 초평면은 공간을 \(\beta_0 + \bbeta^\top\bx > 0\)인 쪽과 \(\beta_0 + \bbeta^\top\bx < 0\)인 쪽으로 가르고, \(\bbeta\)가 가리키는 쪽이 양수 쪽이다(ISL 식 9.3–9.4, 그림 7.1(b)). 점이 어느 쪽에 있는지는 식의 부호 하나로 정해진다.

정의 · 분리 초평면과 최대 마진 분류기

레이블(label)을 4.2절처럼 \(y_i \in \{-1, +1\}\)로 두자. 모든 훈련 관측값을 맞은 쪽에 두는 초평면, 곧 모든 \(i\)에서 \(y_i(\beta_0 + \bbeta^\top\bx_i) > 0\)인 초평면을 분리 초평면(separating hyperplane)이라 한다(ISL 9.1.2). 분리 초평면이 하나라도 있는 데이터가 4.4절의 선형 분리 가능한 데이터다. 하나가 있으면 조금 밀거나 돌려도 여전히 가르므로 무수히 많다.

훈련 관측값에서 초평면까지의 수직 거리 가운데 가장 작은 것을 마진이라 하고, 분리 초평면 가운데 마진이 가장 큰 것으로 분류하는 방법을 최대 마진 분류기(maximal margin classifier)라 한다(ISL 9.1.3). 새 관측값 \(\bx^*\)는 \(\beta_0 + \bbeta^\top\bx^*\)의 부호로 분류한다.

슬라이드는 두 클래스 사이의 틈, 곧 마진이 가장 큰 경계를 이렇게 제약 최적화(constrained optimization) 문제로 쓴다(s08, ISL 식 9.9–9.11).

$$\begin{aligned} &\underset{\beta_0, \beta_1, \dots, \beta_p, M}{\text{maximize}}\ \ M \\ &\text{subject to}\ \ \sum_{j=1}^{p}\beta_j^2 = 1, \\ &\phantom{\text{subject to}}\ \ y_i(\beta_0 + \beta_1x_{i1} + \cdots + \beta_px_{ip}) \ge M, \ \ i = 1, \dots, n \end{aligned} \tag{7.2}$$

슬라이드는 최대화하는 변수 아래에 \(M\)을 빠뜨렸지만 \(M\)도 함께 고르는 변수다. (보충) 두 제약은 이렇게 읽는다(ISL 9.1.4). 첫째 제약은 초평면을 바꾸지 않는다. 식 (7.1)의 양변에 0이 아닌 수를 곱해도 같은 초평면이기 때문이다. 대신 척도(scale)를 \(\lVert\bbeta\rVert = 1\)로 못 박으면 \(y_i(\beta_0 + \bbeta^\top\bx_i)\)가 관측값 \(i\)에서 초평면까지의 부호 있는 거리가 된다(7.3절). 맞은 쪽이면 양수다. 그러면 둘째 제약은 「모든 관측값이 맞은 쪽에서 \(M\) 이상 떨어져 있다」는 뜻이고, \(M\)을 최대화하는 것이 곧 마진을 최대화하는 것이다. ISL은 이 문제를 푸는 법을 다루지 않는다. 슬라이드는 다음 절부터 절편을 없앤 꼴로 문제를 다시 세워 끝까지 푼다. 최대 마진 분류기의 그림은 7.4절의 그림 7.3이다.

7.3 부호로 분류하기와 경계까지의 거리 Classifying by Sign; Distance to the Boundary

L10 s10–s11 · ESL 4.5

이제 슬라이드의 설정으로 옮긴다(s10). 이진 분류(binary classification)에서 레이블은 \(y \in \{-1, +1\}\)이다. 4.2절의 부호화이고, 슬라이드는 판별분석 강의(L06, 4.9절)의 부호화와 같다고 적었다. 훈련 데이터 \(\{(\bx_i, y_i)\}_{i=1}^{n}\)은 결합분포(joint distribution) \(p(\bx, y)\)에서 독립동일분포(independent and identically distributed, i.i.d.)로 뽑혔다고 본다(4.9절). 분류기는 점수의 부호를 낸다.

$$\hat{y} = \operatorname{sign}(\bbeta^\top\bx) = \operatorname{sign}\Big(\sum_{j=1}^{p}\beta_jx_j\Big) \tag{7.3}$$

\(\operatorname{sign}\)은 4.9절의 부호 함수다. 이처럼 점수의 부호로 분류하는 분류기를 마진 기반 분류기(margin-based classifier)라 한다. 레이블을 \(\pm1\)로 두면 \(y\bbeta^\top\bx > 0\)이 곧 맞힌 것이기 때문이다(7.12절). 부호는 각도로도 읽을 수 있다. \(\theta\)를 두 벡터 사이의 각이라 하면 \(\bbeta^\top\bx = \lVert\bbeta\rVert\lVert\bx\rVert\cos\theta\)이므로(\(\lVert\cdot\rVert\)는 유클리드 노름(norm)), \(\bbeta\)와 \(\bx\)의 각이 90°보다 작으면 점수가 양수라 \(\hat{y} = +1\), 90°보다 크면 \(-1\)이고, 정확히 90°면 점수가 0이라 정할 수 없다. 점수가 0인 점들이 결정 경계다.

주의 · 여기부터 절편이 없다

식 (7.3)에는 \(\beta_0\)이 없고 \(\bbeta \in \R^p\)다. 결정 경계 \(\bbeta^\top\bx = 0\)은 원점을 지나는 초평면이다. 2.4절처럼 \(\bx\)에 1을 붙여 절편을 흡수한 꼴이 아니라, 정말로 절편이 없다. 슬라이드는 s10부터 끝까지 이 꼴로 문제를 풀고(s11의 그림도 경계가 원점을 지난다), 이 장도 그것을 따른다. 절편을 둔 표준형(ISL 9.1–9.2, ESL 12.2)에서 무엇이 달라지는지는 7.6절의 보충에서 본다.

보충 · 점대칭 예시 데이터

그림 7.1, 7.3, 7.4, 7.6, 7.7의 예시 데이터는 원점에 대해 점대칭이다. 관측값 \((\bx_i, y_i)\)마다 거울점 \((-\bx_i, -y_i)\)가 있다. 이런 데이터에서는 절편을 둔 표준형을 풀어도 \(\hat\beta_0 = 0\)이고 \(\bhbeta\)가 절편 없는 꼴의 해와 같다. \((\bbeta, \beta_0)\)이 해이면, 거울점의 제약이 원래 점의 제약과 \(\beta_0\)의 부호만 다르므로 \((\bbeta, -\beta_0)\)도 같은 값의 해이고(위반을 허용하는 7.9절의 꼴이면 \(\xi\)도 거울점끼리 맞바꾼다), 문제가 볼록(convex)하므로 둘의 평균(mean) \((\bbeta, 0)\)도 해이기 때문이다(\(\bbeta\) 부분은 하나로 정해진다). 그래서 이 그림들은 슬라이드의 식과 교재의 식을 함께 보여 준다.

점이 경계에서 얼마나 떨어져 있는지도 점수로 잴 수 있다(s11). 점 \(\bx\)에서 결정 경계까지의 거리를 \(r\)이라 하자(그림 7.2).

  1. \(\bx\)를 두 성분으로 나눈다. \(\bx = \bx_\perp + \bx_\parallel\)에서 \(\bx_\perp\)는 결정 경계에 수직인 성분, 곧 \(\bbeta\)와 나란한 성분이고, \(\bx_\parallel\)은 경계와 나란한, 경계 위의 성분이다. 기호의 ⊥·∥는 경계에 대한 것이라 \(\bbeta\)에 대해서는 거꾸로다.
  2. \(\bx_\parallel\)이 경계 위에 있으므로 \(\bbeta^\top\bx_\parallel = 0\)이고, \(\bbeta^\top\bx = \bbeta^\top\bx_\perp\)다.
  3. \(\bx_\perp\)는 \(\bbeta\) 방향이고 길이가 \(r\)이므로 단위 법선 벡터의 \(r\)배, \(\bx_\perp = r\,\bbeta/\lVert\bbeta\rVert\)다. 슬라이드가 말로 하지 않은 단계다.
  4. 대입하면 \(\bbeta^\top\bx = r\,\bbeta^\top\bbeta/\lVert\bbeta\rVert = r\lVert\bbeta\rVert\)다(슬라이드는 \(\bbeta^\top\bbeta\)를 \(\lVert\bbeta\rVert\lVert\bbeta\rVert\cos 0\)으로 적었다). 따라서 $$r = \frac{\bbeta^\top\bx}{\lVert\bbeta\rVert} \tag{7.4}$$
X1 X2 r x x⊥ x∥ β 결정 경계 βTx = 0 법선 방향 x = x⊥ + x∥ βTx∥ = 0 βTx = βTx⊥ = r ∥β∥ r = βTx / ∥β∥
그림 7.2점 \(\bx\)를 결정 경계 위의 성분 \(\bx_\parallel\)과 법선 방향의 성분 \(\bx_\perp\)로 나누면, \(\bx_\parallel\)에서 \(\bx\)까지의 선분(파랑)은 \(\bbeta\)와 나란하고 그 길이가 경계까지의 거리 \(r = \bbeta^\top\bx/\lVert\bbeta\rVert\)다. 개념도(L10 s11을 다시 그림).

\(r\)은 부호 있는 거리다. \(\bx\)가 \(\bbeta\) 쪽에 있으면 양수, 반대쪽이면 음수이고, 거리 자체는 \(\lvert r\rvert\)다. (보충) 절편이 있으면 초평면 \(\beta_0 + \bbeta^\top\bx = 0\)까지의 부호 있는 거리는 \((\beta_0 + \bbeta^\top\bx)/\lVert\bbeta\rVert\)다(ESL 식 4.40). 식 (7.2)가 \(\lVert\bbeta\rVert = 1\)로 묶은 까닭이 이것이다. 그러면 점수가 곧 거리다.

7.4 마진 최대화의 원문제 The Primal Problem of Margin Maximization

L10 s12–s14 · ESL 4.5.2, 12.2

(a) 최대 마진 분류기 3 6 13 16 1/∥β∥ = 0.54 −2 −1 0 1 2 −2 −1 0 1 2 X1 X2 결정 경계 βTx = 0 마진 βTx = ±1 (b) 관측값마다의 라그랑주 승수 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1 1.097 3 0.600 6 10 11 1.097 13 0.600 16 20 양성(관측값 1–10) 음성(11–20, −xi) λi
그림 7.3(a) 마진이 가장 큰 경계(파란 실선, 원점을 지난다)에서 마진 줄 \(\bbeta^\top\bx = \pm1\)(점선)까지의 거리가 마진 \(1/\lVert\hat\bbeta\rVert = 0.54\)이고, 마진 줄 위의 네 점(고리, 관측값 3, 6, 13, 16)이 서포트 벡터다. (b) 대칭해의 라그랑주 승수 \(\hat\lambda_i\)는 그 넷에서만 0이 아니다. 거울 쌍 (3, 13)과 (6, 16)은 같은 제약을 주어 쌍대문제가 쌍의 합만 정하므로, 막대는 그 합을 반씩 나눈 대칭해다(7.7절). 그림 7.1과 같은 점대칭 예시 데이터(ISL 그림 9.3을 본뜸, L10 s08·s19–s20).

식 (7.4)로 마진을 식으로 쓸 수 있다(s12). 마진은 데이터 점과 결정 경계 사이의 가장 짧은 거리다. 거리 \(\bbeta^\top\bx_i/\lVert\bbeta\rVert\)는 경계의 뒤쪽(\(\bbeta\)의 반대쪽)에서 음수이므로 레이블 \(y_i\)를 곱한다. 음성이어야 할 뒤쪽 점에 \(-1\)이 곱해져, 모든 점이 맞은 쪽에 있으면 \(y_i\bbeta^\top\bx_i/\lVert\bbeta\rVert\)가 모두 양수가 된다. 틀린 쪽의 점은 음수지만, 선형 분리 가능하면 가장 좋은 \(\bbeta\)는 모든 점을 맞히므로 문제가 없다. 목표는 마진을 가장 크게 하는 \(\bbeta\)다.

$$\min_{i = 1, \dots, n}\ \frac{y_i\bbeta^\top\bx_i}{\lVert\bbeta\rVert}, \qquad \argmax_{\bbeta}\ \Big(\min_{i = 1, \dots, n}\ \frac{1}{\lVert\bbeta\rVert}\,y_i\bbeta^\top\bx_i\Big)$$

슬라이드는 이것을 「maximum likelihood estimator」를 찾는 일이라 적었는데, 이 문제에는 확률 모형도 가능도(likelihood)도 없다(7.1절). 최대로 만드는 인자(argmax)를 찾는다는 뜻이다. 그대로 풀기는 어렵다. (보충) 까닭이 둘이다. 안쪽의 최솟값 때문에 목적함수(objective function)가 매끄럽지 않고(가장 가까운 점이 바뀌는 곳에서 꺾인다), \(\bbeta\)의 크기에 무관해서 해가 하나로 정해지지 않는다. 슬라이드는 둘째 성질을 거꾸로 이용한다.

양의 상수 \(c\)를 \(\bbeta\)에 곱해도 점수의 부호는 그대로다(s13). \(c > 0\)이면 \(\operatorname{sign}(\bbeta^\top\bx) = \operatorname{sign}\big((c\bbeta)^\top\bx\big)\)이고 마진도 그대로다. 그러니 \(\bbeta\)의 척도를 마음대로 정해도 되고, 가장 가까운 점에서 \(y_i\bbeta^\top\bx_i\)가 정확히 1이 되게 정한다. 슬라이드는 이 상수를 \(\alpha\)로 적어 입력 \(\bx\)에 곱했는데, 내적이라 어느 쪽에 곱해도 같고 실제로 척도를 바꾸는 것은 \(\bbeta\)다. 이 책은 \(\alpha\)를 학습률(learning rate)과 AdaBoost의 가중치(weight)에 이미 썼으므로 \(c\)로 적는다.

  1. 척도를 \(\min_iy_i\bbeta^\top\bx_i = 1\)로 정하면 목적함수에서 최솟값 부분이 1이 되어 \(1/\lVert\bbeta\rVert\)만 남는다. 제약 「최솟값이 1」은 「모든 \(i\)에서 \(y_i\bbeta^\top\bx_i \ge 1\)」로 느슨하게 해도 해가 같다. 최솟값이 1보다 크면 \(\bbeta\)를 줄여 \(1/\lVert\bbeta\rVert\)를 더 키울 수 있으므로, 최적에서는 최솟값이 저절로 1이 되기 때문이다(보충).
  2. \(1/\lVert\bbeta\rVert\)를 최대화하는 것은 \(\lVert\bbeta\rVert\)를 최소화하는 것이다.
  3. \(\lVert\bbeta\rVert\) 대신 \(\tfrac12\lVert\bbeta\rVert^2\)을 최소화해도 해가 같다. 양수에서 단조증가(monotonically increasing)하는 변환(transformation)이기 때문이다. 제곱은 어디서나 미분할 수 있고 gradient가 \(\bbeta\) 자체라 미분이 쉽다(슬라이드의 「easier differentiation」, 7.6절).
정의 · 원문제 $$\bhbeta = \argmin_{\bbeta}\ \frac12\lVert\bbeta\rVert^2 \quad \text{subject to}\ \ y_i\bbeta^\top\bx_i \ge 1, \ \ i = 1, \dots, n \tag{7.5}$$

처음 세운 최적화 문제라 이것을 원문제(primal problem)라 한다. 슬라이드는 제약에 「모든 \(i\)에 대해」를 적지 않았다.

(보충) 식 (7.5)는 식 (7.2)와 같은 문제를 절편 없이 쓴 것이다. 해 \(\bhbeta\)에서 가장 가까운 점의 점수가 1이므로 그 거리, 곧 마진은 \(M = 1/\lVert\bhbeta\rVert\)이고, 두 마진 줄 \(\bbeta^\top\bx = \pm1\) 사이의 폭은 \(2/\lVert\bhbeta\rVert\)다(ESL 그림 12.1). \(\bhbeta/\lVert\bhbeta\rVert\)가 식 (7.2)의 단위 계수 벡터다. 마진을 키우는 것이 \(\lVert\bbeta\rVert\)를 줄이는 것이라, 이 꼴에서 벌써 5.5절의 \(\ell_2\) 벌점이 비친다(7.14절).

그림 7.3(a)가 예시 데이터의 해다. \(\bhbeta = (-1.307, 1.298)^\top\), \(\lVert\bhbeta\rVert = 1.842\)이므로 마진은 0.543으로 그림 7.1(a)의 세 직선(0.22, 0.44, 0.13)보다 크다. 경계는 원점을 지나는 \(x_2 = 1.007x_1\)이고, 고리를 두른 네 점이 마진 줄 위에 놓인다.

−3 −2 −1 0 1 0 1 2 3 β1 β2 β ∥β∥ = 1.84 실행 가능 영역 활성 제약 (서포트 벡터) 비활성 제약 제약 하나: yixiTβ ≥ 1 점대칭 쌍은 같은 직선
그림 7.4\(\bbeta\) 공간에서 관측값마다의 제약 \(y_i\bx_i^\top\bbeta \ge 1\)은 직선 하나로 갈린 반평면이고(거울 쌍은 같은 직선이라 직선은 10개), 모든 제약을 만족하는 영역(옅은 파랑)에서 원점에 가장 가까운 점 \(\hat\bbeta = (-1.31, 1.30)\)은 활성 제약 두 직선(파란 실선)의 교점이다. 회색 점선은 비활성 제약, 점선 원호는 반지름이 \(\lVert\hat\bbeta\rVert = 1.84\)인 원이다. 그림 7.3과 같은 예시 데이터(L10 s14를 다시 그림, 원호는 보충).

원문제는 \(\bbeta\)의 공간에서 그림으로 볼 수 있다(s14, 그림 7.4). 관측값 하나의 제약 \(y_i\bx_i^\top\bbeta \ge 1\)은 \(\bbeta\)에 대한 일차 부등식이라, \(\bbeta\) 공간을 직선 \(y_i\bx_i^\top\bbeta = 1\)로 갈랐을 때의 한쪽 반평면(half-plane)이다. 이 직선은 원점에서 \(1/\lVert\bx_i\rVert\)만큼 떨어져 있고, 원점 \(\bbeta = \mathbf{0}\)은 \(0 \ge 1\)이 거짓이라 늘 제약을 어긴다(보충). 모든 제약을 만족하는 \(\bbeta\)의 집합, 곧 실행 가능 영역(feasible region)은 이 반평면들의 교집합이다. 목적함수 \(\tfrac12\lVert\bbeta\rVert^2\)은 원점에서 \(\bbeta\)까지 거리의 제곱의 절반이므로, 원문제의 해는 실행 가능 영역에서 원점에 가장 가까운 점이다. (보충) 원점을 중심으로 한 원(목적함수의 등고선(contour))을 키워 가다가 실행 가능 영역에 처음 닿는 점이라 해도 같다(그림 7.4의 원호). 5.5절에서 ridge 회귀의 해를 잔차제곱합(residual sum of squares, RSS)의 등고선이 제약 영역(constraint region)에 처음 닿는 점으로 읽은 것과 닮은 기하다.

해에서 등호로 성립하는 제약을 활성 제약조건(active constraint)이라 한다. 해가 그 직선 위에 놓인다는 뜻이다. 나머지 비활성 제약은 지워도 해가 그대로다. 그림 7.4의 예시 데이터는 관측값이 20개지만, 거울 쌍은 \(y_i\bx_i\)가 같아 같은 직선을 주므로 직선은 10개이고 \(\hat\bbeta\)는 활성 제약 두 직선의 교점이다. 원점에서 가장 가까운 직선에 내린 수선의 발은 다른 제약을 어겨서 답이 아니다. 슬라이드는 「많아야 모든 제약이, 적어도 하나의 제약이 활성」이라 적었다. 원점이 실행 가능하지 않으므로 가장 가까운 점은 영역의 경계에 있고, 그러면 제약 하나 이상이 등호다. 절편이 없는 이 꼴에서 맞는 말이다. (보충) 절편이 있으면 7.6절의 등식 \(\sum_i\lambda_iy_i = 0\) 때문에 클래스마다 하나 이상이 활성이다. 활성 제약에 해당하는 관측값이 경계를 정하는 점들이고, 7.7절에서 이름을 얻는다.

(보충) 목적함수가 볼록 이차식이고 제약이 모두 일차식이라 식 (7.5)는 볼록 이차 계획법(quadratic programming) 문제다(ESL 12.2). \(\tfrac12\lVert\bbeta\rVert^2\)은 바닥이 한 점뿐인 그릇 모양이고 실행 가능 영역은 볼록하므로 해 \(\bhbeta\)는 하나뿐이다. 그러면 이 제약 있는 문제를 실제로 어떻게 푸는가? 슬라이드는 이 물음으로 다음 도구로 넘어간다.

7.5 라그랑주 승수와 KKT 조건 Lagrange Multipliers and the KKT Conditions

L10 s15 · ESL 12.2

제약이 있는 최적화의 일반 도구는 라그랑주 승수(Lagrange multiplier)다(s15). 이 절만은 일반 문제의 기호를 쓴다. \(f\)는 최소화할 목적함수, \(\bx\)는 최적화 변수로, 1.3–1.4절의 참 함수(true function) \(f\)나 데이터의 \(\bx\)가 아니다(7.6절에서 \(\bx\)가 \(\bbeta\)로 바뀐다). 등식 제약 \(\mathbf{g}(\bx) = \mathbf{0}\)(\(g_1, \dots, g_m\))과 부등식 제약 \(\mathbf{h}(\bx) \le \mathbf{0}\)(\(h_1, \dots, h_\ell\)) 아래에서 \(f(\bx)\)를 최소화하는 문제를 보자. 앞의 것을 등식 제약조건(equality constraint), 뒤의 것을 부등식 제약조건(inequality constraint)이라 한다. 슬라이드의 문장은 「부등식 제약 \(g_i(\bx) = 0\), 등식 제약 \(h_i(\bx) \le 0\)」으로 두 낱말을 바꿔 적었다. 식과 다음 슬라이드(s16)의 쓰임대로 \(\mathbf{g}\)가 등식, \(\mathbf{h}\)가 부등식이다.

제약마다 승수를 하나씩 두고 제약과 승수의 곱을 목적함수에 더한 함수를 라그랑주 함수(Lagrangian)라 한다.

$$L(\bx, \boldsymbol\mu, \boldsymbol\lambda) = f(\bx) + \boldsymbol\mu^\top\mathbf{g}(\bx) + \boldsymbol\lambda^\top\mathbf{h}(\bx), \qquad \boldsymbol\lambda \ge \mathbf{0} \tag{7.6}$$

\(\boldsymbol\mu = (\mu_1, \dots, \mu_m)^\top\)는 등식 제약의 승수, \(\boldsymbol\lambda = (\lambda_1, \dots, \lambda_\ell)^\top\)는 부등식 제약의 승수다. 0 이상이어야 하는 것은 부등식 제약의 승수 \(\boldsymbol\lambda\)뿐이고 \(\boldsymbol\mu\)는 부호 제한이 없다. 슬라이드는 「\(\mu, \lambda \ge 0\)」으로 둘을 함께 묶었다(SVM에는 등식 제약이 없어 결과에는 영향이 없다). 또 라그랑주 함수를 필기체 \(\mathcal{L}\)로 적었는데, 이 장에서 \(\mathcal{L}\)은 7.12절의 손실이므로 \(L\)로 쓴다.

슬라이드는 \(L\)의 정류점(stationary point)을 \(\bx\)와 승수의 함수로 찾으면 된다고 말한다(2.3절의 정류점). 그러나 부등식 제약이 있으면 정류점 하나로는 부족하고 조건 셋이 더 있어야 해가 정해진다. 넷을 합쳐 KKT 조건(Karush–Kuhn–Tucker conditions)이라 한다(보충). 첨자와 개수(\(m\)개, \(\ell\)개)는 슬라이드의 꼴 그대로 둔다.

정의 · KKT 조건(보충)

\(\bx^*\)가 극소점이면(제약이 지나치게 퇴화한 경우를 빼고) 다음을 만족하는 승수 \(\boldsymbol\mu^*\), \(\boldsymbol\lambda^*\)가 있다.

  1. 정류 조건(stationarity): \(\nabla f(\bx^*) + \sum_{l=1}^{m}\mu_l^*\nabla g_l(\bx^*) + \sum_{j=1}^{\ell}\lambda_j^*\nabla h_j(\bx^*) = \mathbf{0}\). 라그랑주 함수의 \(\bx\)에 대한 gradient가 0이다.
  2. 원 실행 가능성(primal feasibility): \(\mathbf{g}(\bx^*) = \mathbf{0}\), \(\mathbf{h}(\bx^*) \le \mathbf{0}\).
  3. 쌍대 실행 가능성(dual feasibility): \(\boldsymbol\lambda^* \ge \mathbf{0}\).
  4. 상보 여유 조건(complementary slackness): 모든 \(j\)에서 \(\lambda_j^*h_j(\bx^*) = 0\).

상보 여유 조건은 「승수가 0이거나, 제약이 등호로 성립한다」는 뜻이다. 7.4절의 비활성 제약은 승수가 0이고, 승수가 0이 아닌 제약은 활성이다. 7.7절에서 이것이 경계를 정하는 점들을 정확히 가려낸다. KKT 조건은 극값(local optimum, 여기서는 극소)의 필요조건이지만(슬라이드의 「local optimum」), 식 (7.5)처럼 목적함수가 볼록이고 제약이 일차식인 문제에서는 KKT 조건을 만족하는 점이 곧 전역 최적(global optimum)이다(보충). (보충) 이때 해는 라그랑주 함수를 원래 변수에 대해서는 최소로, 승수에 대해서는 최대로 만드는 안장점(saddle point)이다. 7.6절에서 승수 쪽이 최대화로 바뀌는 까닭이 이것이다.

7.6 쌍대문제 The Dual Problem

L10 s16–s18 · ESL 4.5.2, 12.2

식 (7.5)의 원문제를 일반형에 맞추자(s16). 목적함수는 \(f(\bbeta) = \tfrac12\lVert\bbeta\rVert^2\)이고, 관측값마다의 제약을 「\(\le 0\)」 꼴로 옮기면 \(h_i(\bbeta) = 1 - y_i\bbeta^\top\bx_i \le 0\)(\(i = 1, \dots, n\))이다. 등식 제약이 없으므로 \(\boldsymbol\mu\) 항이 없고, 라그랑주 함수는 다음과 같다.

$$L_{\mathrm{P}}(\bbeta, \boldsymbol\lambda) = \frac12\lVert\bbeta\rVert^2 - \sum_{i=1}^{n}\lambda_i\big(y_i\bbeta^\top\bx_i - 1\big), \qquad \lambda_i \ge 0 \tag{7.7}$$

\(\lambda_i \ge 0\)은 라그랑주 함수의 제약이 아니라 부등식 제약의 승수가 가질 수 있는 범위(쌍대 실행 가능성)다. 슬라이드는 이것을 \(\mathcal{L}(\bbeta, \boldsymbol\lambda)\)로 적었고, 이 책은 ESL 12.2를 따라 원문제의 라그랑주 함수를 \(L_{\mathrm{P}}\)로 쓴다.

먼저 \(\bbeta\)에 대한 정류 조건을 세운다(s17). \(\tfrac12\lVert\bbeta\rVert^2\)을 \(\beta_j\)로 편미분(partial derivative)하면 \(\beta_j\)이고, \(\lambda_iy_i\bbeta^\top\bx_i\)를 편미분하면 \(\lambda_iy_ix_{ij}\)이므로 \(\partial L_{\mathrm{P}}/\partial\beta_j = \beta_j - \sum_i\lambda_iy_ix_{ij} = 0\)이다(\(x_{ij}\)는 관측값 \(i\)의 \(j\)번째 feature 값, 슬라이드의 \(\mathbf{x}_{i,j}\)). 모든 \(j\)를 모아 벡터로 쓰면 다음과 같다.

$$\bbeta = \sum_{i=1}^{n}\lambda_iy_i\bx_i \tag{7.8}$$

해는 훈련 관측값의 선형 결합(linear combination)이고, 계수가 \(\lambda_iy_i\)다. \(\lambda_i = 0\)인 관측값은 해에서 빠진다(7.7절). 이것을 식 (7.7)에 다시 넣으면 \(\bbeta\)가 사라진다.

  1. 첫 항은 \(\tfrac12\lVert\bbeta\rVert^2 = \tfrac12\big(\sum_i\lambda_iy_i\bx_i\big)^\top\big(\sum_k\lambda_ky_k\bx_k\big) = \tfrac12\sum_i\sum_k\lambda_i\lambda_ky_iy_k\bx_i^\top\bx_k\)다. 두 합의 첨자를 \(i\)와 \(k\)로 갈라야 펼칠 수 있다. 슬라이드는 두 합에 모두 \(i\)를 썼다.
  2. 둘째 항에서 \(\sum_i\lambda_iy_i\bbeta^\top\bx_i = \bbeta^\top\sum_i\lambda_iy_i\bx_i = \bbeta^\top\bbeta = \lVert\bbeta\rVert^2\)이다(슬라이드가 색으로 짚은 것). 따라서 \(L_{\mathrm{P}} = \tfrac12\lVert\bbeta\rVert^2 - \lVert\bbeta\rVert^2 + \sum_i\lambda_i\)다.
  3. 정리하면 \(\boldsymbol\lambda\)만의 함수가 남는다. 이것을 쌍대 목적함수 \(L_{\mathrm{D}}\)라 한다. $$L_{\mathrm{D}}(\boldsymbol\lambda) = \sum_{i=1}^{n}\lambda_i - \frac12\sum_{i=1}^{n}\sum_{k=1}^{n}\lambda_i\lambda_ky_iy_k\bx_i^\top\bx_k$$
결과 · 쌍대문제와 분류기

식 (7.5)의 원문제에 대한 쌍대문제(dual problem)는 \(L_{\mathrm{D}}\)를 \(\lambda_i \ge 0\) 안에서 최대화하는 것이다(s18).

$$\hat{\boldsymbol\lambda} = \argmax_{\boldsymbol\lambda}\ L_{\mathrm{D}}(\boldsymbol\lambda) \quad \text{subject to}\ \ \lambda_i \ge 0, \ \ i = 1, \dots, n \tag{7.9}$$

그 해를 식 (7.8)에 넣은 \(\bhbeta = \sum_i\hat\lambda_iy_i\bx_i\)로 분류한다.

$$\hat{y} = \operatorname{sign}\big(\bhbeta^\top\bx\big) = \operatorname{sign}\Big(\sum_{i=1}^{n}\hat\lambda_iy_i\bx_i^\top\bx\Big) \tag{7.10}$$

(보충) 왜 \(\boldsymbol\lambda\)에 대해서는 최대화인가? 슬라이드는 「\(\bbeta\)와 \(\boldsymbol\lambda\)에 대한 정류점」을 찾는다고 적었지만, \(\boldsymbol\lambda\) 쪽은 gradient를 0으로 두지 않고 최대화한다. \(\lambda_i \ge 0\)이고 \(\bbeta\)가 모든 제약을 만족하면 식 (7.7)에서 빼는 항이 0 이상이므로 \(L_{\mathrm{P}}(\bbeta, \boldsymbol\lambda) \le \tfrac12\lVert\bbeta\rVert^2\)이다. 그러니 \(\bbeta\)에 대해 최소화한 \(L_{\mathrm{D}}(\boldsymbol\lambda)\)는 원문제의 최솟값을 넘지 못하는 하한이고(약한 쌍대성(weak duality)), 쌍대문제는 그 하한을 가장 높이는 문제다. 원문제가 실행 가능한 볼록 이차 계획이면 두 값이 같아진다(강한 쌍대성(strong duality), ESL 12.2). 그림 7.3의 예에서 두 값은 1.696623으로 같다. 원문제와 쌍대문제가 이렇게 짝을 이루는 관계를 쌍대성(duality)이라 한다. \(\lambda_i \ge 0\)의 경계에 걸려 0이 되는 \(\hat\lambda_i\)가 많은 것(7.7절)도 gradient를 0으로 두지 않는 까닭이다.

보충 · 절편을 둔 표준형

ISL 9.1–9.2와 ESL 12.2처럼 제약을 \(y_i(\beta_0 + \bbeta^\top\bx_i) \ge 1\)로 두면 \(L_{\mathrm{P}}\)에 \(-\beta_0\sum_i\lambda_iy_i\)가 더해진다. 이것을 \(\beta_0\)으로 미분해 0으로 두면 \(\sum_i\lambda_iy_i = 0\)이 나오고, 이 등식이 쌍대문제의 제약에 더해진다(ESL 식 12.11). 쌍대 목적함수는 같다. \(\hat\beta_0\)은 마진 위의 점에서 \(y_i(\hat\beta_0 + \bhbeta^\top\bx_i) = 1\)을 풀어 얻는다(ESL 4.5.2). 슬라이드의 꼴에는 \(\beta_0\)이 없으므로 이 등식 제약도 없고, 점대칭 예시 데이터(7.3절)에서는 두 꼴의 해가 같다.

(보충) 학습(식 (7.9))에도 분류(식 (7.10))에도 데이터는 내적 \(\bx_i^\top\bx_k\), \(\bx_i^\top\bx\)로만 들어간다. 7.16절이 이 사실에서 출발한다. 또 \(L_{\mathrm{D}}\)는 \(\boldsymbol\lambda\)의 오목(concave) 이차식이라 쌍대문제도 이차 계획 문제이고, 제약이 \(\lambda_i \ge 0\)뿐이라 원문제보다 단순하다(ESL 12.2).

7.7 서포트 벡터 Support Vectors

L10 s19–s21 · ISL 9.1.3, 9.2.2

쌍대문제를 거쳐 얻은 경계는 결국 두 클래스 사이의 마진이 가장 큰 선형 경계다(s19). 그림 7.3(a)로 돌아가면 경계는 마진 줄 위의 네 점으로 정해져 있다. 이 점들이 쌍대의 해에서 어떻게 드러나는가?

슬라이드는 쌍대 목적함수의 두 인수로 설명한다(s20). \(y_iy_k\)는 두 관측값이 같은 클래스면 \(+1\), 다르면 \(-1\)이고, \(\bx_i^\top\bx_k = \lVert\bx_i\rVert\lVert\bx_k\rVert\cos\theta\)는 두 점이 비슷한 방향(90° 안)이면 양수다. 두 부호가 맞으면 그 항이 \(-\tfrac12\) 때문에 목적함수를 깎으므로 그런 \(\lambda_i\)는 0으로 두는 것이 최대화에 낫고, 어긋나면(다른 클래스인데 비슷한 방향이면) \(\lambda_i > 0\)이 된다. 그래서 \(\lambda_i\)는 관측값을 「분류하기 어려운 정도」를 나타낸다는 것이다.

이것은 직관이고 정확하지는 않다. 목적함수는 모든 쌍의 합이고 \(+\sum_i\lambda_i\) 항도 있어, 한 쌍의 부호로 \(\lambda_i\)가 정해지지 않는다. (보충) \(k = i\)인 항 \(\lambda_i^2\lVert\bx_i\rVert^2\)은 늘 「부호가 맞는」 항이니, 그 논리대로면 모든 \(\lambda_i\)가 0이 되어야 한다. 정확한 답은 7.5절의 상보 여유 조건이다.

결과 · 서포트 벡터와 상보 여유 조건(보충) $$\hat\lambda_i\big(y_i\bhbeta^\top\bx_i - 1\big) = 0, \qquad i = 1, \dots, n$$

마진 밖의 점(\(y_i\bhbeta^\top\bx_i > 1\))은 \(\hat\lambda_i = 0\)이고, \(\hat\lambda_i > 0\)인 점은 마진 위(\(y_i\bhbeta^\top\bx_i = 1\))에 있다. \(\hat\lambda_i > 0\)인 훈련 관측값을 서포트 벡터(support vector)라 한다(ESL 4.5.2).

슬라이드의 마지막 줄 「마진 위의 점은 \(\lambda_i\)가 0이 아니다」는 방향이 거꾸로다. \(\hat\lambda_i > 0\)이면 마진 위에 있지만, 마진 위에 있으면서 \(\hat\lambda_i = 0\)일 수도 있다. 이름의 뜻은 ISL 9.1.3이 설명한다. 이 점들이 조금만 움직여도 최대 마진 초평면이 따라 움직인다는 뜻에서 초평면을 「떠받친다」(support).

그림 7.3(b)가 예시 데이터의 \(\hat\lambda_i\)다. 마진 줄 위의 네 점(관측값 3, 6, 13, 16)만 0이 아니고(1.097, 0.600, 1.097, 0.600), 나머지 열여섯 점은 0이며 \(y_i\bhbeta^\top\bx_i\)가 모두 1보다 크다(가장 작은 값 1.384). 다만 이 데이터에서는 \(\hat\lambda_i\)가 하나로 정해지지 않는다. 거울 쌍 \((\bx, y)\)와 \((-\bx, -y)\)는 같은 제약 \(y\bx^\top\bbeta \ge 1\)을 주므로 쌍대가 정하는 것은 쌍의 합(2.193, 1.200)뿐이고, 그림의 막대는 그 합을 반씩 나눈 대칭해다. 다른 풀이 프로그램은 다르게 나눈다. 그래서 이 그림의 서포트 벡터는 「마진 위에 있는 점」으로 세는 편이 안전하다. 경계 \(\bhbeta\)는 하나다. (보충) 상보 여유 조건을 \(i\)에 대해 더하면 \(\bhbeta^\top\sum_i\hat\lambda_iy_i\bx_i = \sum_i\hat\lambda_i\), 곧 \(\sum_i\hat\lambda_i = \lVert\bhbeta\rVert^2\)이다. 예에서 \(\sum_i\hat\lambda_i = 3.393 = 1.842^2\)이니, 마진 \(1/\lVert\bhbeta\rVert\)은 \(\hat\lambda_i\)의 합만으로도 잴 수 있다.

\(\hat\lambda_i = 0\)인 항은 분류기 식 (7.10)에서 사라지므로 서포트 벡터만 남는다(s21). 서포트 벡터의 첨자 집합을 \(\mathcal{S}\), 그 가운데 양성과 음성의 것을 \(\mathcal{S}_+\), \(\mathcal{S}_-\)라 하면(슬라이드의 \(S^+\), \(S^-\)) \(y_i = \pm1\)이 부호로 나와

$$\hat{y} = \operatorname{sign}\Big(\sum_{i \in \mathcal{S}_+}\hat\lambda_i\bx_i^\top\bx - \sum_{i \in \mathcal{S}_-}\hat\lambda_i\bx_i^\top\bx\Big)$$

이다. 새 점 \(\bx\)를 두고 양성 서포트 벡터와 음성 서포트 벡터가 겨룬다. 저마다 새 점과 얼마나 닮았는지(내적)에 가중치 \(\hat\lambda_i\)를 곱해 내놓고, 큰 쪽이 이긴다.

(보충) 서포트 벡터가 아닌 점은 마진 밖에 머무는 한 옮기거나 지워도 경계가 바뀌지 않는다. 클래스마다 모든 관측값의 평균과 공통 공분산행렬(covariance matrix)로 경계를 정하는 4.11절의 선형판별분석(linear discriminant analysis, LDA)과 대조된다. 경계에서 먼 관측값에 휘둘리지 않는다는 장점이 있는 대신(ISL 9.2.2), 마진 근처의 몇 점에 크게 기댄다는 약점이 7.8절에서 드러난다.

7.8 잡음과 선형 분리 불가능 Noisy and Non-separable Data

L10 s23–s24 · ISL 9.1.5, 9.2.1

(a) 최대 마진 분류기 마진 0.54 −2 0 2 −2 0 2 X1 X2 (b) 양성 점 하나를 더하면 새 점 마진 0.08 −2 0 2 −2 0 2 X1 X2
그림 7.5(a) 최대 마진 분류기(파란 실선, 점선은 마진)의 마진은 0.54이지만, (b) 음성 쪽에 양성 점 하나(고리)를 더하면 데이터가 여전히 분리 가능한데도 경계가 약 28° 돌고 마진이 0.08로 줄어든다. (a)의 고리는 마진 위의 점이고, 회색 점선은 (a)의 경계다. 그림 7.3과 같은 예시 데이터에 절편을 둔 최대 마진 분류기를 맞췄다(ISL 그림 9.5를 본뜸, L10 s23).

분리 가능한 데이터라도 잡음(noise)이 섞이면 최대 마진 분류기는 나쁜 답을 낼 수 있다(s23). 그림 7.5(a)는 그림 7.3의 데이터에 절편을 둔 최대 마진 분류기를 맞춘 것으로, 점대칭이라 경계와 마진(0.54)이 그림 7.3과 같다. (b)는 음성 무리 곁에 양성 점 하나를 더한 것이다. 데이터는 여전히 분리 가능하지만 경계가 27.6° 돌고 마진이 0.076으로, 원래의 14%로 줄었다. 새 점과 음성 점들 사이를 억지로 지나가야 하기 때문이다. 슬라이드의 그림(ISL 그림 9.5)에서는 경계가 완만해지고 여기서는 가팔라지지만 이야기는 같다. (b)의 새 경계도 원점을 지나는데(\(\hat\beta_0 \approx 0\)), 이것은 이 데이터의 우연이다.

관측값 하나에 경계가 이렇게 크게 흔들린다는 것은 분류기의 분산(variance)이 크다는 뜻이고, 훈련 데이터에 과적합(overfitting)했을 수 있다는 신호다(1.7절, ISL 9.2.1). 7.7절에서 본 대로 경계는 마진 근처의 몇 점에만 기대므로, 그 몇 점에 잡음이 끼면 그대로 경계가 휜다. 새 경계는 훈련 데이터를 모두 맞히지만 두 무리 사이의 틈을 거의 잃었다. 원래 경계로는 새 점 하나만 틀린다. 몇 점을 틀리더라도 나머지를 넉넉하게 가르는 경계가 처음 보는 데이터(unseen data)에서는 더 나을 수 있다.

아예 선형으로 가를 수 없는 데이터도 있다(s24). 두 클래스가 겹치면 어떤 직선으로도 완전히 가를 수 없고, 식 (7.5)의 제약을 모두 만족하는 \(\bbeta\)가 없다. 7.4절의 그림으로 말하면 반평면들의 교집합, 곧 실행 가능 영역이 비어 원문제의 해가 없다(보충, ISL 9.1.5). 슬라이드의 그림은 두 클래스가 넓게 겹친 산점도(scatterplot)다(출처 미상이라 다시 그리지 않았다. 겹친 데이터의 예는 7.9절의 그림 7.6).

두 문제에 답이 둘 있다. 제약을 어기는 것을 벌점과 함께 허용하는 방법(7.9–7.11절)과, 입력을 다른 공간으로 보내 선형으로 가를 수 있게 하는 방법(7.15–7.17절)이다. 앞의 것부터 본다.

7.9 슬랙 변수와 소프트 마진 Slack Variables and the Soft Margin

L10 s25–s26 · ISL 9.2, ESL 12.2

겹치는 데이터에서도 다른 분류기처럼 될 수 있는 대로 정확한 경계를 원한다(s25). 마진을 최대화하는 틀은 그대로 두되, 마진을 키우는 일과 오분류를 줄이는 일을 함께 한다. 그러려고 관측값마다 슬랙 변수(slack variable) \(\xi_i \ge 0\)을 두어 제약 \(y_i\bbeta^\top\bx_i \ge 1\)을 얼마나 어겼는지 잰다. 제약은 \(y_i\bbeta^\top\bx_i \ge 1 - \xi_i\)로 느슨해진다.

관측값 \(i\)의 \(\xi_i\)는 그 점의 자리에 따라 다음과 같다(그림 7.6).

합치면 \(\xi_i = \max(0, 1 - y_i\bbeta^\top\bx_i)\)다. 마진을 엄격하게 지키지 않으므로 이것을 소프트 마진(soft margin)이라 하고, 모든 점이 마진 밖에 있어야 하는 7.4절의 마진은 하드 마진(hard margin)이다(보충).

슬라이드는 넷째 경우를 「\(\xi_i \ge 1\)이면 경계 너머」라 적었지만 \(\xi_i = 1\)은 경계 바로 위의 점이다. \(\xi_i\)가 \(\max(0, \cdot)\)이 되는 까닭은 이렇다(보충). 주어진 \(\bbeta\)에서 \(\xi_i \ge 0\)과 \(\xi_i \ge 1 - y_i\bbeta^\top\bx_i\)를 함께 만족하는 가장 작은 값이 그것이고, 아래 목적함수가 \(\xi_i\)에 대해 증가하므로 최적에서는 늘 가장 작은 값을 고른다. 이 식이 7.14절에서 힌지 손실이 된다. 원문제는 다음과 같다(s26).

$$\begin{aligned} &\argmin_{\bbeta, \boldsymbol\xi}\ \ \frac12\lVert\bbeta\rVert^2 + C\sum_{i=1}^{n}\xi_i \\ &\text{subject to}\ \ y_i\bbeta^\top\bx_i \ge 1 - \xi_i, \ \ \xi_i \ge 0, \ \ i = 1, \dots, n \end{aligned} \tag{7.11}$$

분리 가능한 경우의 원문제, 곧 식 (7.5)에 두 가지를 더했다. 제약을 \(1 - \xi_i\)로 느슨하게 하고, 느슨하게 한 양의 합 \(\sum_i\xi_i\)에 \(C > 0\)을 곱해 목적함수에 벌점으로 더한다(ESL 식 12.8). 슬라이드는 제약 \(\xi_i \ge 0\)과 최적화 변수 \(\boldsymbol\xi\)를 적지 않았다. \(\xi_i \ge 0\)이 없으면 마진 밖의 점이 음수 \(\xi_i\)로 벌점을 깎을 수 있어 SVM이 아닌 다른 문제가 되므로(보충) 빼면 안 된다. 7.10절의 라그랑주 함수와 7.14절의 힌지 꼴이 모두 이 제약을 쓴다.

\(C\)는 마진을 넓히는 일(첫 항)과 위반을 줄이는 일(둘째 항) 사이의 상대적 중요도를 정한다. \(C\)가 크면 위반이 비싸 오분류를 줄이는 쪽을, 작으면 마진을 넓히는 쪽을 더 중시한다. 이 \(C\)를 ESL과 소프트웨어(scikit-learn 등)를 따라 비용 파라미터(cost parameter)라 부른다(슬라이드는 「hyperparameter C」). (보충) 분리 가능한 경우의 식 (7.5)는 \(C = \infty\)에 해당한다(ESL 12.2). (보충) \(\xi_i > 1\)이면 잘못 분류된 것이므로 \(\sum_i\xi_i\)는 훈련 오분류 개수의 상한이다(ESL 12.2). 슬라이드가 둘째 항을 「오분류율을 줄인다」고 말한 것은 이런 뜻이다.

주의 · ISL의 C와 반대

읽기 자료 ISL 9.2에도 \(C\)가 나오지만 뜻이 반대다. ISL은 소프트 마진 SVM을 서포트 벡터 분류기(support vector classifier)라 부르고(SVM이라는 이름은 7.16절의 방법까지 쓴 것에 쓴다), 그 \(C\)는 위반 총량의 예산이다. 제약이 \(\sum_i\epsilon_i \le C\)(ISL 식 9.15)라서 \(C\)가 클수록 위반을 많이 허용해 마진이 넓다(ISL 그림 9.7). 슬라이드와 이 책의 \(C\)는 위반의 단가라서 \(C\)가 클수록 마진이 좁다. ISL도 R 실습에서는 비용 인자 cost를 쓰며 그 값이 작으면 마진이 넓다고 짚는다(ISL 9.6.1). 교재와 슬라이드를 함께 읽을 때 가장 헷갈리는 곳이다.

−2 0 2 −2 0 2 X1 X2 ξ = 0.45 ξ = 1.24 C = 1 마진 밖 ξ = 0 λi = 0 18점 마진 위 ξ = 0 0 < λi < C 2점 마진 안 · 너머 ξ > 0 λi = C 10점
그림 7.6\(C = 1\)인 소프트 마진 SVM(파란 실선, 점선은 마진)에서 마진 밖의 18점은 \(\xi_i = 0\)·\(\hat\lambda_i = 0\)이고, 마진 위의 2점(고리)은 \(0 < \hat\lambda_i < C\), 마진 안이나 경계 너머의 10점(고리와 점선 꼬리)은 \(\hat\lambda_i = C\)이다(2점·10점은 대칭해 기준이고 서포트 벡터 12개는 어느 해에서나 같다). 꼬리의 길이는 그 점이 자기 쪽 마진 줄을 넘은 거리 \(\xi_i/\lVert\hat\bbeta\rVert\)다. 원점에 대해 점대칭으로 겹치는 예시 데이터 30점, 절편 없음(L10 s25를 다시 그림).

그림 7.6은 겹치는 예시 데이터 30점에 \(C = 1\)로 맞춘 결과다. 마진 밖에 18점이 있고, 마진 위에 2점, 마진 안의 올바른 쪽에 6점(\(0 < \xi_i < 1\)), 경계 너머에 4점(\(\xi_i > 1\))이 있다. 훈련 오분류는 4개이고, \(\sum_i\xi_i = 7.82\)는 그보다 크다.

7.10 소프트 마진의 쌍대문제 The Dual of the Soft-Margin Problem

L10 s27–s28 · ESL 12.2

식 (7.11)에도 라그랑주 승수를 붙인다(s27). 제약 \(y_i\bbeta^\top\bx_i \ge 1 - \xi_i\)마다 \(\lambda_i\), 제약 \(\xi_i \ge 0\)마다 \(\mu_i\)를 둔다. 둘 다 부등식 제약이라 승수가 0 이상이다.

$$\begin{aligned} L_{\mathrm{P}}(\bbeta, \boldsymbol\xi, \boldsymbol\lambda, \boldsymbol\mu) &= \frac12\lVert\bbeta\rVert^2 + C\sum_{i=1}^{n}\xi_i \\ &\quad - \sum_{i=1}^{n}\lambda_i\big(y_i\bbeta^\top\bx_i - 1 + \xi_i\big) - \sum_{i=1}^{n}\mu_i\xi_i, \qquad \lambda_i, \mu_i \ge 0 \end{aligned} \tag{7.12}$$

식 (7.7)에 더해진 것은 \(C\sum_i\xi_i\)와 \(\xi_i\), 새 승수 \(\mu_i\)의 항이다(ESL 식 12.9. 슬라이드는 셋째 항의 \(\sum_{i=1}^{n}\)을 빠뜨렸고 \(\bbeta^\top\)를 \(\beta_i^\top\)로 적었다). 이 항들에는 \(\bbeta\)가 없어 \(\bbeta\)로 미분한 결과는 식 (7.8)과 같다.

  1. \(\xi_i\)로 미분해 0으로 둔다. \(\partial L_{\mathrm{P}}/\partial\xi_i = C - \lambda_i - \mu_i = 0\), 곧 \(\mu_i = C - \lambda_i\)다(ESL 식 12.12). 슬라이드가 건너뛴 단계다.
  2. 식 (7.8)을 넣으면 7.6절과 같은 계산으로 \(\boldsymbol\xi\)를 뺀 부분이 \(L_{\mathrm{D}}(\boldsymbol\lambda)\)가 되고, \(\boldsymbol\xi\)의 항은 \(C\sum_i\xi_i - \sum_i\lambda_i\xi_i - \sum_i\mu_i\xi_i = \sum_i\xi_i(C - \lambda_i - \mu_i)\)로 남는다. 슬라이드 s28의 첫 식이 이 중간 꼴이다.
  3. 1단계에 따라 괄호가 0이므로 \(\boldsymbol\xi\)의 항이 모두 사라진다. 쌍대 목적함수는 분리 가능한 경우의 \(L_{\mathrm{D}}\)와 똑같다.
  4. \(\mu_i = C - \lambda_i \ge 0\)이므로 \(\lambda_i \le C\)다. 승수의 범위가 \(0 \le \lambda_i \le C\)로 좁아진다.
결과 · 소프트 마진의 쌍대문제 $$\hat{\boldsymbol\lambda} = \argmax_{\boldsymbol\lambda}\ L_{\mathrm{D}}(\boldsymbol\lambda) \quad \text{subject to}\ \ 0 \le \lambda_i \le C, \ \ i = 1, \dots, n \tag{7.13}$$

목적함수는 식 (7.9)와 같고 승수에 위 끝 \(C\)만 생긴다(ESL 12.2). 분류기는 식 (7.10) 그대로다.

슬라이드 s28의 「Constraints」 상자에 든 \(\xi_i \ge 0\)은 원문제의 제약이다. (보충) KKT 조건으로 보면 관측값이 세 무리로 나뉜다. 상보 여유 조건이 이제 둘, 곧 \(\lambda_i(y_i\bbeta^\top\bx_i - 1 + \xi_i) = 0\)과 \(\mu_i\xi_i = 0\)이고(ESL 식 12.14–12.15), \(\mu_i = C - \lambda_i\)가 둘을 잇는다(표 7.1).

표 7.1KKT 조건으로 본 소프트 마진의 세 무리(보충, 수는 그림 7.6의 대칭해 기준 — 서포트 벡터 12개는 어느 해에서나 같다)
승수따라 나오는 것점의 자리수
\(\hat\lambda_i = 0\)\(\hat\mu_i = C > 0\)이라 \(\xi_i = 0\), \(y_i\bhbeta^\top\bx_i \ge 1\)마진 밖(또는 위)18
\(0 < \hat\lambda_i < C\)\(\hat\mu_i > 0\)이라 \(\xi_i = 0\), \(y_i\bhbeta^\top\bx_i = 1\)마진 위2
\(\hat\lambda_i = C\)\(\hat\mu_i = 0\), \(\xi_i \ge 0\), \(y_i\bhbeta^\top\bx_i \le 1\)마진 위·안·잘못된 쪽10

이제 \(\hat\lambda_i > 0\)인 점은 마진 위·안·잘못된 쪽에 있고, 마진 안과 잘못된 쪽의 점은 모두 \(\hat\lambda_i = C\)인 서포트 벡터다(ISL 9.2.2는 마진 위의 점까지 서포트 벡터라 부른다). 그림 7.6에서는 12개다. 마진 위의 두 점은 거울 쌍이라 \(\hat\lambda_i\)의 나눔이 정해지지 않지만, 쌍의 합(1.785)이 \(C = 1\)보다 커서 둘 다 0일 수 없으므로 12개는 어느 해에서나 같다. (보충) \(\hat\lambda_i \le C\)는 관측값 하나가 \(\hat\bbeta\)에 보태는 몫에 상한을 두므로, 7.8절의 잡음 점 하나가 경계를 마음대로 끌고 가지 못한다.

7.11 비용 파라미터 C The Cost Parameter C

L10 s29 · ISL 9.2.2

그림 7.7은 같은 데이터에 \(C\)만 바꿔 맞춘 것이다(s29). \(C\)가 작으면 마진의 잘못된 쪽에 놓이는 관측값에 너그러워 마진이 넓고, 크면 덜 너그러워 마진이 좁아진다. \(C = 0.1\)에서 마진 1.09·서포트 벡터 22개, \(C = 1\)에서 0.50·12개, \(C = 100\)에서 0.22·8개이고, 훈련 오분류는 4개, 4개, 2개다. 마진이 넓을수록 마진 안에 드는 점이 많아 서포트 벡터도 많다. 슬라이드의 두 설명은 ISL 그림 9.7의 캡션을 \(C\)의 방향만 뒤집어 옮긴 것이다(7.9절의 주의).

(a) C = 0.1 −2 0 2 −2 0 2 X1 X2 마진 1/∥β∥ = 1.09 서포트 벡터 22개 · 훈련 오분류 4개 (b) C = 1 −2 0 2 −2 0 2 X1 X2 마진 1/∥β∥ = 0.50 서포트 벡터 12개 · 훈련 오분류 4개 (c) C = 100 −2 0 2 −2 0 2 X1 X2 마진 1/∥β∥ = 0.22 서포트 벡터 8개 · 훈련 오분류 2개
그림 7.7같은 데이터에 \(C\)만 바꾸면, \(C\)가 작을수록 마진 침범에 너그러워 마진이 넓고 서포트 벡터(고리)가 많다. \(C = 0.1\)에서 마진 1.09·서포트 벡터 22개, \(C = 1\)에서 0.50·12개, \(C = 100\)에서 0.22·8개다. 파란 실선이 결정 경계, 점선이 마진이다. 그림 7.6과 같은 예시 데이터, 절편 없음(L10 s29를 본뜸).

(보충) \(C\)는 1.9절의 편향-분산 트레이드오프(bias-variance trade-off)를 정한다(ISL 9.2.2). \(C\)가 작으면 많은 관측값이 서포트 벡터로서 경계를 함께 정하므로 경계가 잘 흔들리지 않는다. 분산이 작은 대신 편향(bias)이 클 수 있다. \(C\)가 크면 소수의 점이 경계를 정해 편향은 작고 분산은 크다. 7.8절에서 잡음 점 하나에 휘둘린 경계가 \(C = \infty\)의 극단이다. ISL은 같은 이야기를 반대 방향의 \(C\)로 한다. 알맞은 \(C\)는 3.6절의 교차검증(cross-validation)으로 고르는 하이퍼파라미터(hyperparameter)이고, 5.11절에서 규제(regularization) 강도를 고른 방법 그대로다.

7.12 마진 기반 손실 Margin-Based Losses

L10 s31–s34 · ESL 10.6

이제 SVM을 제4장 이래의 「손실을 줄이는 모형」으로 다시 보자. 손실함수(loss function) \(\mathcal{L}(\hat{y}, y)\)는 예측(prediction)이 정답과 얼마나 다른지를 0 이상의 수로 매겨 모형에 벌을 준다(4.5절의 일반형, s31). 같으면 (거의) 0, 가까우면 미세 조정을 위해 조금, 크게 다르면 크게 벌한다. 맞혀도 조금 벌하면 점수를 더 밀어 준다.

−2 −1 0 1 2 3 0 1 2 3 ys = 1 0-1 손실 로그 손실 log2(1 + e−ys) 지수 손실 e−ys 힌지 손실 max(0, 1 − ys) 마진 ys (점수 s = βTx) 틀린 쪽 (ys < 0) 맞은 쪽 (ys > 0) 손실
그림 7.8마진 \(ys\)의 함수로 그린 0-1 손실(검은 계단), 로그 손실(회색, \(\log_2(1 + e^{-ys})\) — 밑을 2로 해 원점에서 1을 지나게 맞췄다), 지수 손실 \(e^{-ys}\)(주황), 힌지 손실 \(\max(0, 1 - ys)\)(파랑)은 모두 \(ys = 0\)에서 1이지만, 대리 손실 가운데 힌지 손실만 \(ys \ge 1\)에서 정확히 0이고 틀린 쪽(왼쪽)에서는 지수 손실이 가장 가파르다(L10 s34–s40의 식을 계산으로 그림).

이진 분류에서 정답은 \(y \in \{-1, +1\}\)이고, 모형은 실수 점수 하나 \(s\)를 낸다(s32). 선형 모형(linear model)이면 \(s = \bbeta^\top\bx\)로, 4.2절의 점수다. \(s > 0\)이면 양성, 아니면 음성으로 분류한다. 슬라이드는 점수를 \(\hat{y} \in \R\)로 적었지만 앞부분(s10, s18)의 \(\hat{y}\)는 예측 레이블이었으므로 점수는 \(s\)로 쓴다. 또 슬라이드는 점수가 0인 경계 위의 점을 음성으로 보낸다(7.3절에서는 정할 수 없다고 했다).

정의 · 마진 기반 손실

정답과 점수의 곱 \(ys\)만의 함수인 손실을 마진 기반 손실(margin-based loss)이라 한다. \(ys > 0\)이면 맞힌 것(클수록 확신 있게), \(ys < 0\)이면 틀린 것이고, 손실은 맞힌 쪽에서 작거나 0이며 틀린 쪽에서 크다(s33).

가장 단순한 것이 4.6절의 0-1 손실(0-1 loss)이다(s34). \(ys \le 0\)이면 1, 아니면 0이라 얼마나 틀렸는지도, 얼마나 확실히 맞혔는지도 보지 않고, 훈련 데이터에서 평균하면 훈련 오분류율이다. 0에서 끊기고 나머지에서는 기울기(slope)가 0이라 gradient로 줄일 수 없다(4.6절, 그림 7.8의 검은 계단). 다음 두 절의 손실들은 이 계단을 대신하는 연속 함수다.

(보충) 「마진」이 이 장에서 두 뜻으로 쓰였다. 7.2–7.4절의 마진은 경계에서 가장 가까운 점까지의 거리이고, 여기의 마진은 곱 \(ys\)다. 관측값 하나의 부호 있는 거리 \(y_i\bbeta^\top\bx_i/\lVert\bbeta\rVert\)는 곱 \(y_is_i\)를 \(\lVert\bbeta\rVert\)로 나눈 것이고(식 (7.4)), 식 (7.5)의 제약은 곱으로 본 마진이 모든 점에서 1 이상이라는 말이다. 6.19절에서 AdaBoost의 점수 \(F(\bx)\)로 쓴 \(yF(\bx)\)가 같은 곱이다(ESL 10.6). 이 장은 두 뜻을 가르려고 곱에는 늘 「마진 \(ys\)」처럼 기호를 붙인다.

7.13 로그 손실과 지수 손실 The Log Loss and the Exponential Loss

L10 s35–s38 · ESL 10.5–10.6

4.4절에서 로지스틱 회귀의 최대가능도(maximum likelihood) 추정은 로그 손실 \(\sum_i\log(1 + e^{-y_i\bbeta^\top\bx_i})\)의 최소화와 같았다(식 (4.8). s35는 그 슬라이드를 다시 띄운다). 지수 안의 \(y_i\bbeta^\top\bx_i\)가 바로 마진 \(ys\)이므로 로그 손실은 마진 기반 손실 \(\log(1 + e^{-ys})\)다(s36). 맞힐수록 작아지지만 0이 되지는 않고, 틀린 쪽으로 가면 거의 직선으로 커진다(\(ys \to -\infty\)이면 \(\log(1 + e^{-ys}) \approx -ys\)). 어디서나 미분할 수 있어(도함수(derivative) \(-1/(1 + e^{ys})\)) 4.6절의 경사하강법(gradient descent)으로 줄일 수 있다. 슬라이드는 「연속 함수이므로 미분 가능하다」고 적었는데, 연속이라고 미분 가능하지는 않다. 7.14절의 힌지 손실이 연속이지만 한 점에서 미분할 수 없는 반례다. 로그 손실은 매끄러운 함수들의 합성이라 미분 가능하다.

6.19절에서 AdaBoost는 지수 손실 \(\sum_i\exp(-y_iF(\bx_i))\)(식 (6.17))을 stagewise로 최소화하는 것과 같았다(s37은 L09의 그 슬라이드를 다시 띄운다). 이것도 마진 기반 손실 \(e^{-ys}\)다(s38). 로그 손실과 닮았지만 틀린 쪽을 훨씬 세게 벌한다. 로그 손실은 직선으로, 지수 손실은 지수로 커지기 때문이다. \(ys = -2\)에서 지수 손실은 7.39이고 밑 2의 로그 손실은 3.07이다. 어디서나 미분할 수 있는 것은 같다.

(보충) 0-1 손실 대신 줄이는 매끄러운 함수를 4.6절에서 대리 손실(surrogate loss)이라 했다. 로그 손실과 지수 손실은 둘 다 0-1 손실을 위에서 감싸는(밑 2로 맞추면) 볼록한 대리 손실이고(5.3절, 6.19절), 다음 절의 힌지 손실도 그렇다. 볼록하므로 최소점을 찾는 일이 어렵지 않다. 6.19절에서 보았듯 모집단(population)에서 지수 손실을 최소화하는 점수는 로그 오즈의 절반이고 로그 손실의 것은 로그 오즈 자체라, 두 손실은 확률로 되돌릴 수 있는 점수를 낸다.

주의 · 손실을 견줄 때의 척도

슬라이드의 그래프는 로그 손실이 \(ys = 0\)에서 1을 지나게 그렸다. 자연로그면 \(\log 2 \approx 0.693\)이다(그림 4.6). 밑을 2로 한 \(\log_2(1 + e^{-ys})\), 곧 로그 손실을 \(\log 2\)로 나눈 꼴로, 0-1 손실과 한 점에서 맞대려는 약속이다(ESL 그림 10.4). 그림 7.8도 그림 6.18(b)처럼 이 꼴로 그렸다. 슬라이드가 지수 손실은 맞은 쪽을 「덜 벌한다」고 한 것도 이렇게 맞췄을 때의 비교다(\(ys = 1\)에서 0.368 대 0.452). 자연로그 그대로면 \(u > 0\)에서 \(\log(1 + u) < u\)이므로 모든 \(ys\)에서 지수 손실이 더 크다(\(ys = 1\)에서 0.368 대 0.313).

7.14 힌지 손실 The Hinge Loss

L10 s39–s41 · ISL 9.5, ESL 12.3.2

이제 SVM을 같은 틀에 넣는다(s39). 식 (7.11)에서 \(\bbeta\)를 고정하면, 제약 \(\xi_i \ge 0\)과 \(\xi_i \ge 1 - y_i\bbeta^\top\bx_i\)를 만족하는 가장 작은 \(\xi_i\)는 \(\max(0, 1 - y_i\bbeta^\top\bx_i)\)다(7.9절). 목적함수가 \(\xi_i\)에 대해 증가하므로 최적에서는 늘 이 값이다. 이것을 넣으면 제약이 사라지고 \(\bbeta\)만의 최소화가 남는다.

결과 · SVM은 힌지 손실에 ℓ₂ 벌점을 더한 것을 최소화한다 $$\argmin_{\bbeta}\ \ \frac12\lVert\bbeta\rVert^2 + C\sum_{i=1}^{n}\max\big(0,\ 1 - y_i\bbeta^\top\bx_i\big) \tag{7.14}$$

\(\max(0, 1 - ys)\)가 힌지 손실이고, \(\tfrac12\lVert\bbeta\rVert^2\)은 5.5절의 \(\ell_2\) 규제다. 식 (7.11)과 해가 같다.

슬라이드의 첫 식에도 \(\xi_i \ge 0\)이 빠져 있는데, 이 등가는 그 제약을 전제로 한다. (보충) 식 (7.14)를 \(C\)로 나누면 해는 그대로이고 \(\sum_i\max(0, 1 - y_i\bbeta^\top\bx_i) + \tfrac{1}{2C}\lVert\bbeta\rVert^2\)을 최소화하는 것이 된다. 5.5절처럼 손실에 \(\lVert\bbeta\rVert^2\)의 상수배를 더한 꼴이고, 벌점의 계수가 \(1/(2C)\)다. 그러니 \(C\)가 클수록 규제가 약하다. 7.11절에서 \(C\)가 클수록 마진이 좁고 훈련 데이터에 바짝 맞던 것과 같은 말이다. ESL 식 12.25는 벌점 계수를 \(1/(2C)\)에 해당하는 꼴로 두고, ISL 식 9.25도 손실에 \(\sum_j\beta_j^2\)의 상수배를 더한 꼴로 쓰고 그 벌점이 ridge 회귀의 벌점이라고 짚는다(ISL 9.5).

힌지 손실의 모양을 그림 7.8의 파란 꺾은선에서 보자(s40). 틀린 쪽으로는 틀린 정도에 비례해 직선으로 벌한다. 맞혔지만 마진 안(\(0 < ys < 1\))이면 \(1 - ys\)만큼 조금 벌한다. 7.9절의 \(0 < \xi_i < 1\)이다. \(ys \ge 1\)이면 정확히 0이다. 마진 밖의 점은 손실에 아무것도 보태지 않으므로 해에 영향을 주지 않는다. 서포트 벡터만 분류기를 정한다는 7.7절·7.10절의 사실을 손실의 눈으로 본 것이다(ISL 9.5). 로그 손실은 어디서도 0이 아니라 모든 점이 조금씩 해를 당긴다. 또 힌지 손실은 \(ys = 1\)에서 꺾여 미분할 수 없으므로, SVM은 경사하강법보다 쌍대의 이차 계획(7.6절, 7.10절)으로 흔히 푼다(보충).

슬라이드는 세 손실을 이렇게 견준다(s41). 지수 손실은 크게 틀린 점, 곧 이상치(outlier)에 아주 큰 손실을 주어 그런 점에 심하게 끌려가므로 잡음이 많은 데이터에 덜 맞는다. 교재도 같은 말을 한다. 로그 손실은 그런 점에 상대적으로 덜 무게를 주어 레이블이 잘못 붙은 데이터에서 훨씬 강건(robust)하고, AdaBoost의 성능은 그런 데이터에서 크게 떨어진다고 관찰되었다(ESL 10.6). 널리 쓰이는 것은 힌지 손실과 로그 손실이다. 슬라이드는 힌지 손실(SVM)이 계산이 더 효율적이라 하는데, 교재에서 찾은 근거는 예측의 효율이다. 힌지 손실이 구간마다 직선이라 서포트 벡터가 아닌 점의 \(\hat\lambda_i\)가 0이고, 서포트 벡터가 적으면 새 점을 더 빨리 분류한다(ESL 12.3.3). 훈련이 더 빠르다는 일반적인 주장은 슬라이드의 것으로 둔다. 로그 손실(로지스틱 회귀)은 출력(output)을 \(p(y \mid \bx)\)로 읽을 수 있어 해석하기 쉽다(4.2절). 표 7.2가 넷을 모은다.

표 7.2네 마진 기반 손실(로그 손실은 밑 2로 맞춘 꼴, 마지막 열은 ESL 표 12.1과 식 10.16)
손실\(ys \ge 1\)에서틀린 쪽으로모집단에서 최소화하는 점수
0-1 손실01로 일정베이즈 분류기(Bayes classifier, 4.9절)
로그 손실(로지스틱 회귀)0에 가까워질 뿐직선으로로그 오즈
지수 손실(AdaBoost)0에 가까워질 뿐지수로로그 오즈의 절반
힌지 손실(SVM)정확히 0직선으로\(\operatorname{sign}\big(\mathbb{P}(Y = +1 \mid X = \bx) - \tfrac12\big)\)

마지막 열(보충)이 해석력의 차이를 말해 준다. 힌지 손실을 모집단에서 최소화하는 함수는 사후확률의 변환이 아니라 분류 규칙 그 자체다(ESL 12.3.2). 그래서 SVM의 점수에서는 확률을 되찾을 수 없다. 이 절로 5.3절이 순위 학습의 대리 손실로 처음 보이며 「제7장 SVM의 손실」이라 예고한 힌지 손실을 받는다. 5.3절의 것은 아이템 쌍의 점수 차에 쓴 꼴이고 여기서는 정답과 점수의 곱에 쓴다. 6.19절이 남긴 \(yF(\bx)\)도 7.12절의 마진 \(ys\)로 받았다.

7.15 고차원으로 보내 분리하기 Separating in a Higher-Dimensional Space

L10 s43–s44 · ISL 9.3.1, ESL 12.3

더 어려운 경우가 있다(s43). 오분류를 허용해도, \(C\)를 어떻게 두어도 선형 경계로는 쓸모가 없는 데이터다. 경계 자체가 휘어 있기 때문이다. 그림 7.10(a)(7.17절)가 그런 예다. ISL 9.6.2 실습의 생성 규칙을 따른 예시 데이터로, 양성 무리가 가운데에, 음성 무리 둘이 그 양쪽(왼쪽 아래와 오른쪽 위)에 있다. 선형 SVM은 가운데 무리를 잘라 낼 직선을 찾지 못한다. 어느 쪽으로 기울여도 힌지 손실의 합이 늘어서, 이 데이터에서는 \(C\)가 0.01이든 100이든 해가 \(\bhbeta = \mathbf{0}\), \(\hat\beta_0 = -1\)이다. 점대칭이 아닌 데이터라 이 절과 7.17절의 그림은 절편을 둔 표준형으로 풀었다(7.6절의 보충). 경계가 없고 모든 점을 다수인 음성으로 분류하므로 훈련·시험 오분류율이 모두 양성의 비율인 25%다. 슬라이드의 그림(ISL 그림 9.8)에는 직선이 그어져 있지만 데이터가 다르다. 어느 쪽이든 선형 경계는 쓸모가 없다(ISL 9.3.1).

착상은 입력을 (흔히 더 높은 차원의) 다른 공간으로 보내 거기서 선형으로 가르는 것이다(s44). 이런 사상 \(\boldsymbol\phi\)를 입력 변환(input transformation)이라 한다. 그림 7.9가 가장 작은 예다. 1차원에서 양성이 가운데 구간에, 음성이 양쪽 바깥에 있으면 임곗값(threshold) 하나로는 가를 수 없다. 그러나 \(\boldsymbol\phi(x) = (x, x^2)\)로 보내면 점들이 포물선 위에 놓이고, 가운데 점들은 \(x^2\)이 작아 아래에, 바깥 점들은 위에 모여 직선 하나로 갈린다. 그 공간에서 마진이 가장 큰 직선은 \(0.0163x - 0.6191x^2 + 1.4387 = 0\)이고, 원래 공간으로 되돌리면 이 이차식의 두 근 \(x = -1.51\), \(1.54\)가 경계이며 그 사이가 양성이다. 고차원의 평평한 경계가 원래 공간에서는 휜 경계가 된다.

(a) 원래 공간: 임곗값 하나로는 가를 수 없다 −3 −2 −1 0 1 2 3 x (b) φ(x) = (x, x2)로 보낸 공간: 직선 하나로 갈린다 −3 −2 −1 0 1 2 3 0 3 6 9 x x2
그림 7.9(a) 양성(\(+\))이 가운데 구간에, 음성(○)이 양쪽 바깥에 있으면 임곗값 하나로는 가를 수 없지만, (b) \(\boldsymbol\phi(x) = (x, x^2)\)로 보내면 직선 하나(파랑, 최대 마진 — 점선이 마진)가 가르고, 그 직선은 원래 공간의 두 임곗값 \(x = -1.51\), \(1.54\)((a)의 점선)가 된다. 절편 있는 하드 마진 SVM, 1차원 예시 데이터(L10 s44의 착상을 1차원으로 그림, 보충).

2.10절에서 \(x\)에 \(x^2, x^3, \dots\)을 feature로 더해 선형 모형으로 곡선을 맞춘 다항회귀(polynomial regression)와 같은 생각이다. ISL 9.3.1도 feature를 그 제곱으로 늘린 공간(enlarged feature space)에서 서포트 벡터 분류기를 맞추는 것으로 시작한다. 슬라이드의 그림은 2차원 평면의 가운데 무리를 종 모양 곡면으로 들어 올려 수평면 하나로 가르는 모습이다. 슬라이드는 s44에서 변환 자체를 「kernels」라 불렀는데, 정확한 뜻은 7.16절에서 본다.

슬라이드는 이론적으로 훈련 관측값이 \(n\)개면 거의 \(n\)차원으로 보내 어떤 데이터든 선형 분리 가능하게 만들 수 있다고 덧붙인다(슬라이드는 \(N\)으로 적었다). (보충) 서로 다른 점 \(n\)개는 일반적인 위치에 있으면 \(n - 1\)차원에서 어떤 레이블을 붙이든 초평면 하나로 가를 수 있다. 그러나 그렇게 늘린 공간에서 훈련 데이터를 완벽하게 가르면 1.7절의 과적합이 기다린다. ESL 12.3은 기저 함수를 충분히 늘리면 데이터가 분리 가능해져 과적합이 일어날 것처럼 보인다고 쓴 뒤, SVM의 \(\lVert\bbeta\rVert^2\) 벌점과 \(C\)가 그것을 다스린다고 설명한다. 남는 걱정은 계산이다. feature를 제곱과 곱으로 늘리기만 해도 차원이 빠르게 커져 계산을 감당할 수 없게 된다(ISL 9.3.1).

7.16 내적과 커널 Inner Products and Kernels

L10 s45–s46 · ISL 9.3.2, ESL 12.3.1

고차원의 계산을 피하는 열쇠는 내적이다(s45). 7.6절에서 보았듯 학습(식 (7.9), (7.13))도 예측(식 (7.10))도 데이터를 내적으로만 쓴다. 새 점의 분류는 서포트 벡터들과의 내적에 \(\hat\lambda_i\)를 곱해 겨룬 결과다(7.7절). 슬라이드는 여기서 「\(\lambda_i\)가 0이 아닌 관측값은 몇 개인가」를 묻는다(ISL 그림 9.6). 답은 7.10절의 세 무리에서 나온다. \(\hat\lambda_i > 0\)인 점은 마진 위·안·잘못된 쪽에 있고(마진 안과 잘못된 쪽의 점은 모두 그렇다), 그림 7.6에서는 12개, ISL 그림 9.6의 왼쪽에서는 4개(관측값 1, 2, 8, 9 — ISL은 마진 위의 점까지 센다)다.

내적을 일반화한 함수 \(K(\bx, \bx')\)를 커널(kernel)이라 한다(ISL 9.3.2). 두 관측값이 얼마나 닮았는지를 재는 함수로, 보통의 내적 \(\bx^\top\bx'\)도 커널이다. 다항식 커널(polynomial kernel)은 다음과 같다(ISL 식 9.22).

$$K(\bx, \bx') = \Big(1 + \sum_{j=1}^{p}x_jx'_j\Big)^d = \big(1 + \bx^\top\bx'\big)^d \tag{7.15}$$

\(d\)는 양의 정수로 다항식의 차수(degree)다(2.10절의 차수와 같은 뜻). 슬라이드는 다항식 커널이 「\(d\)차원 다항식」에 필요한 내적을 계산한다고 적었지만 \(d\)는 차원이 아니라 차수다. \(d = 1\)이면 선형 경계로 돌아간다. SVM에 커널을 쓰는 순서는 이렇다(s46). 먼저 입력을 \(\boldsymbol\phi(\bx)\)로 보내 그 공간에서 선형 SVM을 하면, 7.7절의 분류기에서 내적 \(\bx_i^\top\bx\)가 \(\boldsymbol\phi(\bx_i)^\top\boldsymbol\phi(\bx)\)로 바뀐다(슬라이드의 「Input transformation」). 쌍대문제의 \(\bx_i^\top\bx_k\)도 마찬가지다. 그런데 \(\boldsymbol\phi\)를 거치지 않고 그 내적을 곧바로 계산하는 함수 \(K(\bx_i, \bx) = \boldsymbol\phi(\bx_i)^\top\boldsymbol\phi(\bx)\)가 있다면, 변환된 공간을 한 번도 만들지 않고 그 공간의 선형 분류기(linear classifier)를 얻는다.

결과 · 커널 SVM의 분류기 $$\hat{y} = \operatorname{sign}\Big(\sum_{i \in \mathcal{S}}\hat\lambda_iy_iK(\bx_i, \bx)\Big) \tag{7.16}$$

\(\hat\lambda_i\)는 \(\bx_i^\top\bx_k\)를 \(K(\bx_i, \bx_k)\)로 바꾼 식 (7.13)의 쌍대문제의 해이고, \(\mathcal{S}\)는 서포트 벡터의 첨자 집합이다. 이렇게 내적을 커널로 바꾸는 요령을 커널 트릭(kernel trick)이라 한다(보충). 절편을 둔 표준형이면 \(\hat\beta_0\)이 더해진다(ISL 식 9.23의 \(\alpha_i\)가 \(\hat\lambda_iy_i\)다).

슬라이드는 이 등가의 증명을 수업 범위 밖으로 남겼다. 작은 경우는 손으로 확인할 수 있다(보충, ESL 식 12.23). \(p = 2\), \(d = 2\)이면 다음과 같다.

  1. \(K(\bx, \bx') = (1 + x_1x'_1 + x_2x'_2)^2\)을 펼치면 \(1 + 2x_1x'_1 + 2x_2x'_2 + (x_1x'_1)^2 + (x_2x'_2)^2 + 2x_1x'_1x_2x'_2\)다.
  2. 여섯 항이 저마다 두 벡터의 같은 성분끼리의 곱이 되도록 \(\boldsymbol\phi(\bx) = (1, \sqrt2x_1, \sqrt2x_2, x_1^2, x_2^2, \sqrt2x_1x_2)^\top\)로 두면, \(\boldsymbol\phi(\bx)^\top\boldsymbol\phi(\bx')\)가 정확히 위 식이다.
  3. 곧 2차원 내적 하나에 1을 더해 제곱하는 계산이 6차원 변환의 내적과 같다. \(p\)와 \(d\)가 커지면 \(\boldsymbol\phi\)의 차원은 빠르게 늘지만 \(K(\bx, \bx')\)의 계산은 내적 하나 그대로다.

(보충) 아무 함수나 커널이 되지는 않는다. 어떤 \(\boldsymbol\phi\)의 내적으로 쓸 수 있으려면 대칭이고 양의 준정부호여야 한다(ESL 12.3.1). 커널을 쓰면 늘린 공간을 다루지 않고 서로 다른 훈련 관측값 쌍마다 \(K(\bx_i, \bx_{i'})\)를 한 번씩, 모두 \(\binom{n}{2}\)번 계산하면 된다(ISL 9.3.2).

7.17 방사 커널 The Radial Kernel

L10 s47–s48 · ISL 9.3.2

널리 쓰이는 또 하나가 방사 커널(radial kernel)이다(s47, ISL 식 9.24).

$$K(\bx, \bx') = \exp\Big(-\gamma\sum_{j=1}^{p}(x_j - x'_j)^2\Big) = \exp\big(-\gamma\lVert\bx - \bx'\rVert^2\big) \tag{7.17}$$

\(\gamma > 0\)은 하이퍼파라미터다. 두 점이 같으면 1이고 멀어질수록 0에 다가간다. \(\bx'\)을 평균으로 하는 정규분포 밀도의 \(\exp\big(-\lVert\bx - \bx'\rVert^2/(2\sigma^2)\big)\) 꼴과 닮아 방사 기저 함수(radial basis function, RBF) 커널, 가우스 커널이라고도 하며, 견주면 \(\gamma = 1/(2\sigma^2)\)다. 슬라이드는 \(\gamma\)를 분산의 「reverse」라 했는데, 분산에 반비례한다는 뜻이다(역수의 절반).

식 (7.16)에 넣어 보면 방사 커널의 성질이 보인다. 시험 관측값 \(\bx\)가 훈련 관측값 \(\bx_i\)에서 멀면 \(K(\bx_i, \bx)\)가 아주 작아 \(\bx_i\)는 \(\bx\)의 분류에 거의 아무 구실도 하지 않는다. \(\gamma = 1\)에서 거리가 3이면 \(e^{-9} \approx 1.2 \times 10^{-4}\)이다. 가까운 훈련 관측값만 시험 관측값의 레이블에 영향을 주는, 아주 국소적인 분류기다(ISL 9.3.2). 1.10절의 K-최근접 이웃(K-nearest neighbors, KNN)이 가까운 관측값의 레이블로 분류한 것과 닮았다. (보충) 방사 커널에 대응하는 \(\boldsymbol\phi\)는 무한 차원이라 직접 계산할 수 없고, 커널 트릭으로만 쓸 수 있다(ISL 9.3.2).

\(\gamma\)는 「가까움」의 범위를 정한다. \(\gamma\)가 작으면 먼 점까지 영향을 주어 경계가 매끄럽고, 크면 바로 곁의 점만 영향을 주어 경계가 구불구불해진다(s47). (보충) 그림 7.10과 같은 데이터에서 \(C = 1\)로 두고 \(\gamma\)만 바꾸면, \(\gamma = 0.1\)일 때 훈련 오분류 6%·시험 10%·서포트 벡터 40개, \(\gamma = 1\)일 때 6%·11%·47개, \(\gamma = 10\)일 때 0%·15%·93개다. \(\gamma = 10\)에서는 결정값이 양성 점 둘레에서만 양수인 작은 섬들이 생겨 훈련 데이터를 모두 맞히지만 시험 오분류가 늘었다. 1.10절의 KNN 그림에서 점 하나를 둘러싼 작은 섬이 생기던 것(6.5절에서 과적합으로 읽었다)과 같은 이야기이고, \(\gamma\)도 \(C\)와 함께 교차검증으로 고른다.

(a) 선형 SVM · C = 1 해가 β = 0이라 경계가 없다 모든 점을 음성으로 분류한다 −4 −2 0 2 4 −4 −2 0 2 4 X1 X2 훈련 오분류 25% · 시험 25% 모든 점이 같은 결정값(−1)을 받는다 (b) 다항식 커널 d = 3 · C = 1 −4 −2 0 2 4 −4 −2 0 2 4 X1 X2 훈련 오분류 4% · 시험 14% 서포트 벡터 16개(훈련 100개 중) (c) 방사 커널 γ = 1 · C = 1 −4 −2 0 2 4 −4 −2 0 2 4 X1 X2 훈련 오분류 6% · 시험 11% 서포트 벡터 47개(훈련 100개 중)
그림 7.10가운데 무리가 양성(\(+\)), 양쪽 두 무리가 음성(○)인 데이터에서 (a) 선형 SVM은 가운데 무리를 잘라 낼 직선이 없어 해가 \(\hat\bbeta = \mathbf{0}\)(경계 없음)이 되어 모든 점을 음성으로 분류하지만(훈련·시험 오분류 25%), (b) 다항식 커널(\(d = 3\))은 가운데 무리를 지나는 띠를, (c) 방사 커널(\(\gamma = 1\))은 가운데 무리를 둘러싼 닫힌 곡선을 경계로 만든다(시험 오분류 14%, 11%). 칠한 면은 예측한 클래스, 검은 실선이 결정 경계, 회색 점선이 결정값 \(\pm1\)의 마진, (b)(c)의 고리가 서포트 벡터이고, 모두 \(C = 1\)인 절편 있는 SVM이다. ISL 9.6.2 실습의 생성 규칙을 따른 예시 데이터, 훈련 100점(ISL 그림 9.8–9.9를 본뜸, L10 s43·s48).

그림 7.10이 세 SVM을 견준다(s48). (a)의 선형 SVM은 7.15절에서 본 대로 경계가 없고, 모든 점이 같은 결정값 \(-1\)을 받는다. (b) 다항식 커널(\(d = 3\))과 (c) 방사 커널(\(\gamma = 1\))은 모두 가운데 무리를 감싸는 휜 경계를 만들고(ISL 9.3.2), 시험 오분류는 각각 14%와 11%다. 다항식 커널의 경계는 3차 곡선이 가운데 무리를 지나는 띠를 이루고, 방사 커널의 경계는 가운데 무리를 둘러싼 닫힌 곡선이다.

7.18 셋 이상의 클래스 SVMs with More than Two Classes

L10 s49 · ISL 9.4

SVM은 본래 이진 분류용이다(s49). 초평면의 양쪽이라는 발상이 클래스가 셋 이상인 경우로 자연스럽게 넓어지지 않는다(ISL 9.4). 클래스가 \(\lvert\mathcal{C}\rvert > 2\)개이면(슬라이드의 \(K\). 이 장의 \(K(\cdot, \cdot)\)는 커널이다) 이진 SVM 여럿을 엮는 두 방법이 있다.

정의 · 일대다와 일대일
  • 일대다(one-versus-all): 클래스마다 「그 클래스(\(+1\)) 대 나머지(\(-1\))」 SVM을 하나씩, 모두 \(\lvert\mathcal{C}\rvert\)개 맞춘다(예: 「사과」 대 「사과 아님」). 새 점은 점수가 가장 큰 클래스로 분류한다(ISL 9.4.2).
  • 일대일(one-versus-one): 클래스 쌍마다 SVM을 하나씩, 모두 \(\binom{\lvert\mathcal{C}\rvert}{2}\)개 맞춘다(예: 「사과」 대 「오렌지」). 새 점을 모두에 넣어 클래스마다 이긴 횟수를 세고, 가장 많이 이긴 클래스로 분류한다(ISL 9.4.1).

클래스 수가 너무 크지 않으면 일대일을 선호한다는 것은 슬라이드의 권고다(ISL 9.4는 두 방법을 소개만 한다). (보충) 일대일은 분류기가 클래스 수의 제곱으로 늘지만 하나하나는 두 클래스만 쓰는 작고 고른 문제이고, 일대다는 분류기가 적은 대신 한 클래스 대 나머지라 두 쪽의 크기가 크게 기운다.

(보충) 4.8절의 다항 로지스틱 회귀(multinomial logistic regression)는 softmax로 모든 클래스를 한 모형에서 다뤘다. 일대다에서 점수가 가장 큰 클래스를 고르는 것(점수가 클수록 그 클래스라는 확신이 크다)은 softmax가 클래스별 점수 \(s_k\)가 가장 큰 클래스를 고르는 것과 같은 모양이다.

7.19 SVM과 로지스틱 회귀 SVMs versus Logistic Regression

L10 s50 · ISL 9.5

강의는 두 방법을 견주며 끝난다(s50, ISL 9.5). 클래스가 잘 갈리면 SVM이 로지스틱 회귀보다 대체로 낫다. 슬라이드는 이어서 「반대의 경우, 곧 클래스가 겹치지 않을 때 로지스틱 회귀는 극도로 불안정하다」고 적었는데, 겹치지 않는 경우는 앞 문장의 잘 갈리는 경우와 같다. 「(SVM과 반대로) 그 경우에 로지스틱 회귀는 불안정하다」로 읽는다. 4.4절의 주의 상자에서 보았듯 선형 분리 가능한 데이터에서는 계수를 키울수록 로그가능도(log-likelihood)가 끝없이 올라 최대점이 없고, 5.5절에서는 \(\ell_2\) 벌점이 그것을 막았다. SVM은 같은 데이터에서 마진이 가장 큰 경계 하나를 낸다.

참고 · SVM과 로지스틱 회귀 (L10 s50)
  • 클래스가 잘 갈리면 SVM이 대체로 낫다. 로지스틱 회귀는 그런 데이터에서 불안정하다.
  • 클래스가 많이 겹치면 로지스틱 회귀를 흔히 선호하지만 SVM도 비슷한 성능을 낸다.
  • 확률을 추정하고 싶으면 로지스틱 회귀다.
  • 휜 경계에는 커널 SVM이 널리 쓰인다. 커널은 로지스틱 회귀에도 쓸 수 있지만 계산이 더 비싸다.

확률은 로지스틱 회귀만 준다. SVM의 점수는 확률이 아니고(7.1절), 힌지 손실을 모집단에서 최소화하는 함수는 분류 규칙 자체다(표 7.2). 커널에 대해서 ISL은 SVM에서 더 널리 쓰이는 까닭을 「역사적」이라 하고, 교재가 뒷받침하는 계산의 차이는 해의 희소(sparse)함, 곧 서포트 벡터가 아닌 점의 \(\hat\lambda_i\)가 0이라는 성질이다(7.14절). (보충) 로그 손실은 어디서도 0이 아니라 커널 로지스틱 회귀에서는 모든 훈련 관측값이 계수를 가져 예측에 훈련 데이터 전체가 든다.

(보충) 7.14절의 눈으로 보면 두 방법의 차이는 생각보다 작다. ridge 벌점(\(\ell_2\))을 붙인 로지스틱 회귀(5.5절)와 견주면 둘 다 손실에 \(\ell_2\) 벌점을 더한 것을 최소화하고(SVM은 식 (7.14)) 손실이 힌지냐 로그냐만 다르다. 두 손실은 틀린 쪽에서 모두 거의 직선이고(그림 7.8, ISL 그림 9.12) 다른 것은 맞은 쪽이다(7.14절의 희소성). ISL은 이 닮음 때문에 두 방법의 결과가 비슷한 경우가 많다고 한다.

1.8절의 그림 1.6이 SVM을 유연하지만 해석하기 어려운 자리에 둔 것도 이로써 설명된다. 커널을 쓰면 어떤 휜 경계도 그릴 만큼 유연하지만, 분류가 서포트 벡터들과의 커널 값의 가중합으로 이루어져(식 (7.16)) feature마다의 계수처럼 읽을 수 있는 것이 남지 않고, 점수를 확률로 읽을 수도 없다.

제8장 비지도학습

Unsupervised Learning

정답 \(y\) 없이 입력(input) \(\bx\)만 있으면 무엇을 배울 수 있는가? 비지도학습(unsupervised learning)은 데이터에 숨은 구조를 찾는다. 이 장은 그 두 갈래, 곧 비슷한 관측값(observation)끼리 묶는 군집화(clustering, 8.2–8.8절)와 정보를 될 수 있는 대로 지키며 좌표의 수를 줄이는 차원 축소(dimensionality reduction, 8.9–8.15절)를 다룬다. 군집화는 묶음을 차례로 쌓아 올리는 방법과 한 번에 \(K\)개로 나누는 K-평균으로, 차원 축소는 쌍마다의 거리를 지키는 방법과 분산(variance)을 가장 많이 남기는 선형 방법으로 본다. 1.1절이 예고한 비지도학습을 1.10절이 정하지 않고 넘긴 유사도(similarity)의 잣대에서 시작해, 4.11–4.12절의 공분산행렬(covariance matrix)과 그 타원, 5.6절의 표준화(standardization), 7.5절의 라그랑주 승수(Lagrange multiplier)로 분산이 가장 큰 방향을 끌어내는 데까지 슬라이드의 순서 그대로 가며, 제1부를 마치는 장이다.

이 장의 구성

  1. 8.1정답 없이 배우기162
  2. 8.2군집화 문제162
  3. 8.3유사도와 거리163
  4. 8.4계층적 군집화164
  5. 8.5K-평균 알고리즘167
  6. 8.6K-평균의 목적함수168
  7. 8.7수렴과 극값169
  8. 8.8계산량과 군집 수 K171
  9. 8.9데이터 다양체와 차원 축소172
  10. 8.10다차원척도법172
  11. 8.11분산을 가장 많이 남기는 방향174
  12. 8.12중심화와 공분산행렬175
  13. 8.13고윳값 분해와 주성분177
  14. 8.14PCA의 예와 해석178
  15. 8.15주성분의 개수180

원천 Lecture 11 (2026-10-21) 슬라이드 3–4, 6–24, 26–40 · 읽기 ISL 12.1–12.2, 12.4

8.1 정답 없이 배우기 Learning without Labels

L11 s03–s04 · ISL 12.1

앞의 일곱 장은 모두 지도학습(supervised learning)이었다(s03). 데이터는 입력과 정답의 쌍 \((\bx_i, y_i)\)이고, 목표는 \(\bx\)를 \(y\)로 보내는 함수를 근사하는 것이었다(1.2절). \(y\)가 수이면 회귀(regression), 클래스(class)이면 분류(classification)다. 비지도학습의 데이터에는 레이블(label)이 없다. 주어지는 것은 입력 \(\bx_1, \dots, \bx_n\)뿐이고, 목표는 그 안에 숨은 구조를 배우는 것이다. 1.1절에서 강의가 비지도학습의 예로 든 것이 동물 그림을 새, 물고기, 고양이와 개의 무리로 묶는 군집화였다.

정의 · 지도학습과 비지도학습

지도학습의 데이터는 \((\bx, y)\)이고 목표는 \(\bx \to y\)인 함수의 근사다. 예는 분류와 회귀다. 비지도학습의 데이터는 \(\bx\)뿐이고 목표는 데이터에 숨은 구조를 배우는 것이다. 예는 군집화, 차원 축소, 그리고 데이터가 나온 분포를 알아내는 밀도 추정(density estimation)이다.

이 장은 앞의 둘만 다룬다. 슬라이드도 밀도 추정은 이름만 든다. (보충) 이 책에서 밀도 추정이 처음은 아니다. 4.10–4.12절에서 클래스마다 입력의 분포를 정규분포(normal distribution)로 두고 추정한 것이 레이블별로 한 밀도 추정이었다.

왜 비지도학습을 하는가(s04)? 첫째, 측정한 값들에 대해 흥미로운 것을 찾고 싶다. 변수들 사이에서나 관측값들 사이에서 부분 집단을 찾을 수 있는가, 데이터를 알기 쉽게 시각화(visualization)할 길이 있는가(ISL 12장 첫머리의 두 물음이다). 관측값을 묶을 수도 있고 변수를 묶을 수도 있다(8.2절의 유전자 예). 둘째, 레이블 없는 데이터가 레이블 있는 데이터보다 훨씬 얻기 쉽다. 레이블에는 흔히 사람의 노동이 든다. 슬라이드는 1.1절의 CIFAR-10처럼 클래스 이름이 붙은 이미지와, 이름표 없는 이미지 수백 장의 모자이크를 나란히 놓았다.

셋째, 비지도학습은 지도학습보다 주관적이다. 반응변수(response)를 예측(prediction)한다는 것 같은 간단한 분석 목표가 없기 때문이다(ISL 12.1). (보충) 그래서 결과를 확인하기도 어렵다. 지도학습에서는 떼어 둔 데이터의 정답과 견주는 교차검증(cross-validation, 3.6절)으로 모형(model)을 평가(evaluation)하고 골랐지만, 비지도학습에는 견줄 정답이 없다. ISL 12.1은 참 답을 모르므로 교차검증이나 따로 모은 데이터로 결과를 검증하는, 널리 받아들여진 방법이 없다고 한다. 이 사정이 8.8절에서 군집 수를, 8.15절에서 남길 차원(dimension)의 수를 고르는 자리에서 다시 나온다.

8.2 군집화 문제 The Clustering Problem

L11 s06–s10 · ISL 12.1, 12.4 · PRML 9.1.1

군집화는 대상들 사이의 자연스러운 묶음을 찾는 일이다(s06). 데이터를 군집(cluster)으로 나누되, 같은 군집의 관측값끼리는 서로 비슷하고 다른 군집의 관측값과는 다르게 나눈다.

정의 · 군집화의 목표

군집 내 유사도(intra-cluster similarity)는 크고 군집 간 유사도(inter-cluster similarity)는 작게 데이터를 군집으로 나눈다. 무엇을 유사도로 볼지는 8.3절에서 정한다.

슬라이드의 그림은 점 27개를 먼저 색 없이 보이고, 다음에 세 가지 색을 입힌다. 이 색은 처음부터 주어진 레이블이 아니라 군집화가 내놓은 결과다. ISL 그림 12.7의 캡션도 같은 점을 짚는다. 군집의 이름표는 군집화에 쓰이지 않았고 군집화의 출력(output)이다.

어디에 쓰는가(s07–s09)? 첫째는 추천 시스템(recommender system)이다. 취향이 비슷한 사용자끼리 묶어 두면, 같은 군집의 다른 사용자가 고른 항목을 추천할 수 있다. 슬라이드는 협업 필터링(collaborative filtering)의 기본 생각이 사용자와 항목의 군집화에서 온다고 한다. ISL 12.1의 예도 같다. 온라인 쇼핑몰이 검색과 구매 기록이 비슷한 고객 무리를 찾아, 고객마다 비슷한 고객들이 산 항목을 먼저 보여 준다.

둘째는 유전자의 군집화다(s08). 여러 조건에서 모든 유전자의 활동을 한꺼번에 잰 데이터에서 발현 무늬가 비슷한 유전자끼리 묶으면, 기능을 모르는 유전자가 기능을 아는 유전자와 같은 군집에 들 때 그 기능을 짐작할 수 있다. 관측값이 아니라 변수(유전자) 쪽을 묶는 군집화다. 8.1절에서 본 「변수들 사이의 부분 집단」이다. 슬라이드의 그림은 유전자들을 8.4절의 방법으로 묶은 순서대로 늘어놓아 비슷한 무늬가 옆에 모이게 칠한 것이다.

셋째는 이미지 압축(image compression)이다(s09). 픽셀 하나를 빨강·초록·파랑 세기의 세 좌표로 된 점으로 보고 이미지의 모든 픽셀을 \(K\)개의 군집으로 묶은 뒤, 각 픽셀을 그 군집을 대표하는 색으로 바꾼다. 이미지가 \(K\)가지 색만으로 그려진다. 슬라이드의 사진(PRML 그림 9.3)은 \(K = 2, 3, 10\)으로 갈수록 원본에 가까워진다. 대표 색은 K-평균 군집화(K-means clustering, 8.5절), 줄여서 K-평균이 고른 군집의 평균(mean)이다.

보충 · 벡터 양자화(PRML 9.1.1)

벡터를 정해 둔 대표 벡터, 곧 코드북 벡터(code-book vector) 몇 개 가운데 가장 가까운 것으로 바꾸는 일을 벡터 양자화(vector quantization)라 한다. 압축량을 셀 수 있다. PRML의 원본 사진은 \(240 \times 180 = 43{,}200\)픽셀이고 픽셀마다 24비트(색마다 8비트)라 1,036,800비트다. 압축하면 픽셀마다 군집 번호 \(\lceil\log_2 K\rceil\)비트와 대표 색 \(K\)개의 \(24K\)비트만 있으면 되므로 \(K = 2, 3, 10\)에서 43,248, 86,472, 173,040비트, 원본의 4.2%, 8.3%, 16.7%다. \(K\)가 작을수록 많이 줄지만 화질이 나빠진다.

분류와 군집화는 무엇이 다른가(s10)? 분류는 레이블로 가르친다. 「이것은 비행기다」「이것은 자동차다」를 보여 주고 새 사진이 무엇인지 묻는다(1.1절). 군집화에는 레이블이 없다. 사진 여섯 장을 세 무리로 묶으라 하고, 새 사진이 어느 무리에 드는지 묻는다. 군집에는 이름이 없고, 「비행기 무리」라는 이름은 사람이 나중에 붙인다. 새 관측값을 이미 만든 군집에 넣는 규칙은 방법마다 다르다. K-평균이라면 가장 가까운 군집 평균의 군집에 넣는다(8.5절).

8.3 유사도와 거리 Similarity and Distance

L11 s11–s12 · ISL 12.4.2–12.4.3

어떤 묶음이 자연스러운가(s11)? 슬라이드는 만화 「심슨 가족」의 인물 아홉을 두 가지로 나눈다. 한 번은 심슨 가족과 학교 직원으로, 또 한 번은 여성과 남성으로 나눈다. 두 나눔 모두 그럴듯하다. 어느 쪽이 맞는지는 데이터가 정해 주지 않고, 무엇을 비슷하다고 볼지에 달렸다. 비지도학습이 주관적이라는 8.1절의 말이 이것이다. ISL 12.4.2에도 같은 생각의 예가 있다. 미국·일본·프랑스 사람이 남녀 고르게 섞여 있으면, 둘로 가장 잘 나누는 길은 성별이고 셋으로 가장 잘 나누는 길은 국적일 수 있다. ISL 12.4.3은 군집화에 하나의 정답은 없고, 데이터의 흥미로운 면을 드러내는 해라면 무엇이든 고려해야 한다고 한다.

그래서 군집화에는 관측값 쌍마다의 유사도나 거리가 필요하다(s12). 1.10절의 K-최근접 이웃(K-nearest neighbors, KNN)도 가장 비슷한 이미지를 찾았지만 비슷함을 재는 법은 정하지 않았다. 슬라이드가 드는 거리는 둘이다. 두 관측값 \(\bx_i\), \(\bx_{i'}\)의 성분 \(p\)개에 대해

$$\lVert\bx_i - \bx_{i'}\rVert_1 = \sum_{j=1}^{p}\lvert x_{ij} - x_{i'j}\rvert, \qquad \lVert\bx_i - \bx_{i'}\rVert_2 = \Big(\sum_{j=1}^{p}(x_{ij} - x_{i'j})^2\Big)^{1/2} \tag{8.1}$$

앞의 것이 맨해튼 거리(Manhattan distance), 뒤의 것이 유클리드 거리(Euclidean distance)다. 5.8절 식 (5.5)의 \(\ell_1\)·\(\ell_2\) 노름(norm)을 두 관측값의 차에 쓴 것이다. 맨해튼 거리는 성분마다의 차를 절댓값으로 더해 바둑판 같은 길을 따라 걷는 거리이고, 유클리드 거리는 두 점을 잇는 직선의 길이다. 이 장에서 아래 첨자 없이 \(\lVert\cdot\rVert\)로 쓰면 유클리드 노름이다. 슬라이드는 두 거리를 \(L_1(A, B) = \sum_{i,j}\lvert A_{i,j} - B_{i,j}\rvert\)처럼 두 첨자의 합으로 적었다. 이미지 \(A\), \(B\)를 픽셀의 행렬로 보고 같은 자리의 픽셀끼리 견준 것이라, 이미지를 한 줄로 펼친 벡터로 보면 식 (8.1)과 같다. \(L\)은 이 책에서 가능도(likelihood) 등에 쓰는 글자라 노름으로 쓴다.

거리가 데이터와 함께 주어지기도 한다. 관측값의 feature 없이 쌍마다의 거리만 있는 경우다. 표 8.1은 슬라이드의 다섯 인물 쌍의 거리를 담은 거리 행렬(distance matrix)이다. 두 관측값 사이의 거리를 일반적으로 \(d(\bx_i, \bx_{i'})\)로 쓰면, 거리는 대칭이고(\(d(\bx_i, \bx_{i'}) = d(\bx_{i'}, \bx_i)\)) 자기 자신과는 0이라 위 삼각만 적으면 된다. Selma와 Patty가 1로 가장 가깝고 Lisa와 Marge가 2이며, Edna는 모두와 7–8로 멀다. 8.4절의 예가 이 표를 쓴다. (보충) 8.4절의 계층적 방법과 8.10절의 방법은 이런 거리만 있으면 되지만, 8.5절의 K-평균은 군집의 평균을 내야 하므로 관측값의 좌표가 있어야 한다.

표 8.1다섯 인물의 거리 행렬(L11 s12 — 대칭이라 위 삼각만 적었다)
EdnaLisaMargeSelmaPatty
Edna08877
Lisa0244
Marge033
Selma01
Patty0
보충 · 변수의 척도와 거리(ISL 12.4.2)

변수마다 단위가 다르면 거리는 값이 크게 흩어지는 변수에 휘둘린다. ISL의 예에서 온라인 쇼핑 고객을 품목별 구매 횟수로 견주면, 1년에 열 켤레씩 사는 양말이 드물게 사는 컴퓨터보다 거리를 훨씬 크게 좌우한다. 센티미터로 잰 변수를 킬로미터로 바꾸기만 해도 거리가 달라진다. 그래서 거리를 재기 전에 변수마다 표준편차(standard deviation)가 1이 되게 맞추는 표준화(5.6절)를 흔히 하지만, 그것이 좋은지는 응용에 달렸다. 8.12절에서 차원 축소의 전처리(preprocessing)로 같은 이야기를 다시 한다.

8.4 계층적 군집화 Hierarchical Clustering

L11 s13–s15 · ISL 12.4.2 · ESL 14.3.12

군집화 알고리즘은 크게 두 종류다(s13). 계층적 군집화(hierarchical clustering)는 어떤 기준으로 대상들의 집합을 계층적으로 분해해, 군집 안에 더 작은 군집이 포개진 나무를 만든다. 분할 군집화(partitional clustering)는 관측값을 겹치지 않는 군집 몇 개로 나누는 분할을 여럿 만들어 기준으로 평가한다. K-평균(8.5–8.8절)이 대표이고, 그 기준이 8.6절의 목적함수(objective function)다. ISL 12.4는 둘의 차이를 군집 수로 말한다. K-평균은 군집 수를 미리 정하고 나누지만, 계층적 군집화는 미리 정하지 않고 1개부터 \(n\)개까지 모든 군집 수의 결과를 한눈에 보여 주는 나무를 만든다.

주의 · 상향식과 하향식

슬라이드는 계층적 군집화에 「bottom-up」, 분할 군집화에 「top-down」을 붙였다. 뒤의 것은 표준 용어와 어긋난다. 계층적 군집화 자체가 아래에서 합쳐 올라가는 상향식(bottom-up) 병합형과 위에서 나누어 내려가는 하향식(top-down) 분할형 계층적 군집화(divisive clustering)의 두 갈래다(ESL 14.3.12). 분할 군집화는 위에서부터 차례로 나누지 않고 한 번에 \(K\)개로 나눈다. 슬라이드의 bottom-up은 이 절의 병합형만 가리키고, ISL 12.4.2도 병합형만 다룬다.

계층적 군집화의 결과는 덴드로그램(dendrogram)이라는 나무로 그린다(그림 8.1(b)). 잎 노드(leaf node)가 관측값이고, 두 가지(branch)가 합쳐지는 높이가 그때 합친 두 군집 사이의 거리다. 두 관측값이 얼마나 비슷한지는 잎이 가로로 얼마나 가까이 놓였는지가 아니라, 둘이 처음 합쳐지는 세로 높이로 읽는다(ISL 12.4.2).

(a) 점과 합쳐지는 순서 1 2 3 4 5 6 7 8 9 10 11 12 0 2 4 0 2 4 6 X1 X2 (b) 완전 연결 덴드로그램 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 합칠 때의 거리 관측값(잎) τ = 3.5
그림 8.1(a) 예시 데이터 12점을 완전 연결로 합쳐 가면 군집이 합쳐지는 순서대로 윤곽이 포개진다. (b) 같은 결과의 덴드로그램에서 높이는 합칠 때의 군집 사이 거리이고, 높이 \(\tau = 3.5\)에서 자른 수평선(파랑)이 4점씩의 군집 셋을 만든다. 이 장의 군집 그림은 군집을 주황 +, 파랑 ○, 검정 △, 회색 □의 순서로 그리고, 파랑은 그림의 주인공(여기서는 자르는 선)도 겸한다. 예시 데이터(L11 s13–s14를 본뜸, 포개진 윤곽은 보충).

이 절이 다루는 것은 병합 군집화(agglomerative clustering)다(s14). 단계 0에서는 관측값 하나하나가 한 점짜리 군집(singleton cluster)이다. 단계 \(\ell = 1, 2, \dots\)마다 단조 증가하는 거리 임곗값(threshold) \(\tau_\ell\)을 정하고, 거리가 \(\tau_\ell\) 안인 군집들을 합친다. 끝까지 가면 모든 관측값이 한 군집이 된다. 슬라이드의 그림은 18점이 단계 1에서 7개, 단계 2에서 4개의 군집으로 합쳐지는 모습이다. (보충) ISL 알고리즘 12.3은 임곗값 대신 가장 가까운 두 군집을 하나씩 합친다. 관측값 \(n\)개에서 시작해 \(n - 1\)번 합치면 끝나고, 합칠 때의 거리가 덴드로그램에서 그 합침을 놓을 높이다. 슬라이드의 꼴은 한 단계에 셋 이상이 한꺼번에 합쳐질 수 있다는 점만 다르다.

(보충) 덴드로그램을 높이 \(\tau\)에서 가로로 자르면, 그 아래에서 이어진 가지마다 군집이 하나씩 생긴다. 그림 8.1(b)는 \(\tau = 3.5\)에서 잘라 군집 셋을 얻었다. 셋이 되는 높이는 아홉째 합침(2.68)과 열째 합침(4.66) 사이 어디든 되고, 둘을 원하면 4.66과 5.60 사이에서 자른다. 군집 수를 미리 정하지 않아도 되는 까닭이 이것이다. 슬라이드가 임곗값 \(\tau_\ell\)을 단조 증가시키는 것은 덴드로그램에서 위로 갈수록 합치는 높이가 커지는 성질에 해당한다.

연결 Linkage

단계 1부터는 관측값 둘이 아니라 군집 둘 사이의 거리가 필요하다(s15). 군집 사이의 거리를 관측값 쌍의 거리로 정하는 방법을 연결(linkage)이라 한다. 슬라이드는 이 말 없이 선택지 넷을 든다. 두 군집 \(\mathcal{G}\), \(\mathcal{H}\)에서 하나씩 고른 쌍 가운데 가장 가까운 쌍의 거리를 쓰는 단일 연결(single linkage)과 가장 먼 쌍의 거리를 쓰는 완전 연결(complete linkage)은 다음과 같다(ESL 식 14.41–14.42).

$$d_{\mathrm{SL}}(\mathcal{G}, \mathcal{H}) = \min_{i \in \mathcal{G},\ i' \in \mathcal{H}}\ d(\bx_i, \bx_{i'}) \tag{8.2}$$ $$d_{\mathrm{CL}}(\mathcal{G}, \mathcal{H}) = \max_{i \in \mathcal{G},\ i' \in \mathcal{H}}\ d(\bx_i, \bx_{i'}) \tag{8.3}$$

\(i \in \mathcal{G}\)는 관측값 \(i\)가 군집 \(\mathcal{G}\)에 든다는 뜻이다. 모든 쌍의 거리를 평균하는 평균 연결(average linkage), 곧 \(\frac{1}{\lvert\mathcal{G}\rvert\lvert\mathcal{H}\rvert}\sum_{i \in \mathcal{G}}\sum_{i' \in \mathcal{H}}d(\bx_i, \bx_{i'})\)과, 두 군집의 평균 벡터(mean vector), 곧 중심점(centroid) 사이의 거리를 쓰는 중심 연결(centroid linkage)까지 넷을 표 8.2에 모았다. \(\lvert\mathcal{G}\rvert\)는 군집에 든 관측값의 수다. 슬라이드는 「선택에 따라 군집화의 행동이 달라진다」고 한다.

표 8.2네 가지 연결(ISL 표 12.3, ESL 14.3.12)
연결두 군집 사이의 거리슬라이드성질
단일 연결가장 가까운 쌍, 식 (8.2)closest pair사슬 현상. 길게 늘어진 군집
완전 연결가장 먼 쌍, 식 (8.3)farthest pair지름이 작은 촘촘한 군집
평균 연결모든 쌍의 거리의 평균average of all pairs위 둘의 절충
중심 연결두 중심점 사이의 거리in-group averages합치는 높이가 뒤집힐 수 있다
예 · 다섯 인물의 덴드로그램(보충)

표 8.1에서 가장 가까운 쌍은 Selma–Patty(1)이고, 다음은 Lisa–Marge(2)다. 여기까지는 어느 연결로도 같다. 셋째 합침에서 {Lisa, Marge}와 {Selma, Patty} 사이의 거리는 네 쌍의 거리 4, 4, 3, 3으로 정해지므로 단일 연결이면 3, 완전 연결이면 4, 평균 연결이면 3.5다. 마지막에 Edna가 합류하는 높이도 Edna와 네 사람의 거리 8, 8, 7, 7에서 단일 7, 완전 8, 평균 7.5다. 합치는 순서는 같고 높이만 다르다. 슬라이드 s13의 덴드로그램이 이 순서다(가로대의 높이는 어느 연결의 거리에도 비례하지 않아 모식도로 보인다). 중심 연결은 평균 벡터가 있어야 하므로 거리 행렬만 주어진 이 예에는 쓸 수 없다.

슬라이드는 「어떤 문제가 생기겠는가」를 묻고 단일 연결을 가리킨 뒤, 같은 군집 안의 관측값이 충분히 비슷하지 않을 수 있다고 답한다. 이것을 사슬 현상(chaining)이라 한다. 단일 연결은 가장 가까운 쌍 하나만 보므로, 서로 먼 두 덩어리라도 그 사이를 가까운 점들이 사슬처럼 이으면 그 사슬을 따라 하나씩 이어 붙여 한 군집으로 만든다. 같은 군집 안의 양 끝 점은 전혀 비슷하지 않다. ESL 14.3.12는 이것이 한 군집 안의 관측값들이 서로 비슷해야 한다는 촘촘함(compactness)을 어긴다고 한다.

그림 8.2의 예시 데이터는 18점짜리 덩어리 둘 사이를 9점의 사슬이 잇는다. 사슬의 이웃 간격은 0.42–0.67이고, 사슬 끝에서 가장 가까운 덩어리 점까지는 0.35와 0.57이다. 단일 연결에서는 두 덩어리가 43번째 합침(높이 0.68)에서 이미 사슬을 따라 한 군집이 되고, 마지막 합침(0.73)은 덩어리에서 조금 떨어져 있던 두 점을 붙일 뿐이다. 그래서 군집 둘로 자르면 덩어리 둘과 사슬 전부가 한 군집이고 그 두 점만 다른 군집이 된다. 완전 연결은 25점과 20점, 평균 연결은 21점과 24점으로 나눈다.

(보충) 반대 극단인 완전 연결은 지름이 작은 촘촘한 군집을 만들지만, 어떤 관측값이 제 군집보다 다른 군집의 점에 더 가까울 수 있다. 평균 연결은 그 사이의 절충이다(ESL 14.3.12). ISL은 균형 잡힌 덴드로그램을 주는 평균 연결과 완전 연결을 흔히 단일 연결보다 낫게 본다. 중심 연결에서는 합치는 높이가 바로 앞 합침보다 낮아지는 뒤집힘(inversion)이 생길 수 있다(ISL 표 12.3). 그림 8.1과 8.2의 예시 데이터에서도 중심 연결로는 한 번씩 생긴다.

(a) 단일 연결 — 군집 크기 43 · 2 외톨이 마지막 합침의 높이 0.73 (b) 완전 연결 — 군집 크기 25 · 20 마지막 합침의 높이 8.03 (c) 평균 연결 — 군집 크기 21 · 24 마지막 합침의 높이 5.39
그림 8.2덩어리 둘을 사슬이 잇는 데이터를 군집 둘로 자르면, 단일 연결(a)은 사슬을 따라 43점을 한 군집으로 잇고 떨어진 두 점만 따로 남기며, 완전 연결(b)과 평균 연결(c)은 두 덩어리를 가르고 사슬 9점을 각각 7 · 2와 3 · 6으로 끊는다. 예시 데이터(L11 s15를 본뜸).

8.5 K-평균 알고리즘 The K-Means Algorithm

L11 s16–s18 · ISL 12.4.1 · ESL 14.3.6 · PRML 9.1

−2 0 2 −2 0 2 초기화 −2 0 2 −2 0 2 (가) 할당 1 · J = 1,048.4 −2 0 2 −2 0 2 (나) 평균 1 · J = 357.5 −2 0 2 −2 0 2 (가) 할당 2 · J = 170.9 −2 0 2 −2 0 2 (나) 평균 2 · J = 81.0 −2 0 2 −2 0 2 (가) 할당 3 · J = 79.9 −2 0 2 −2 0 2 (나) 평균 3 · J = 79.6 −2 0 2 −2 0 2 수렴 — 넷째 (나) 뒤 · J = 79.6 군집 1 군집 2 중심점 (나)에서 중심점의 이동 두 중심점의 수직이등분선 가로 eruptions, 세로 waiting(둘 다 표준화)
그림 8.3\(K = 2\)의 K-평균을 일부러 나쁘게 고른 두 중심점(×)에서 시작하면, (가) 할당은 점마다 가까운 중심점의 군집으로 나누고(파란 직선은 두 중심점의 수직이등분선) (나) 평균은 중심점을 군집 평균으로 옮긴다. 세 번 되풀이하면 자리를 잡고, 넷째 반복에서 한 점만 바뀐 뒤 다섯째 (가)에서 할당이 바뀌지 않아 멈춘다. 군집 1은 주황 +, 군집 2는 파랑 ○이다. 표준화한 Old Faithful 데이터(PRML 그림 9.1을 다시 그림, 수직이등분선과 화살표는 보충).

K-평균 군집화는 두 단계의 반복(iteration)으로 군집을 고쳐 가는 분할 군집화 알고리즘이다(s16). 군집 수 \(K\)를 정해 두고 다음을 한다.

정의 · K-평균 알고리즘
  1. 초기화(initialization): 점 \(K\)개를 무작위로 골라 군집의 중심점으로 삼는다.
  2. 다음 두 단계를 번갈아 한다. (가) 할당: 관측값마다 가장 가까운 중심점의 군집에 넣는다. (나) 평균: 중심점을 그 군집에 할당된 관측값들의 평균으로 옮긴다.
  3. 할당이 하나도 바뀌지 않으면 멈춘다.

이름의 「평균」이 (나) 단계의 평균이다(ISL 12.4.1). 슬라이드의 Step a)·b)를 이 책은 (가)·(나)로 적는다. PRML은 두 단계를 E 단계(E step)와 M 단계(M step)라 부른다. ISL 알고리즘 12.2는 중심점이 아니라 할당을 무작위로 시작하므로 평균을 먼저, 할당을 나중에 적는다. 하는 일은 같다.

그림 8.3은 슬라이드 s17의 그림(PRML 그림 9.1)을 원자료로 다시 그린 것이다. 데이터는 미국 옐로스톤의 간헐천 Old Faithful의 분출 272회, 곧 분출 시간 eruptions와 다음 분출까지의 시간 waiting(둘 다 분)을 변수마다 평균 0, 표준편차 1로 표준화한 것이고 \(K = 2\)다. 초기 중심점은 알고리즘이 여러 걸음을 걷도록 PRML이 일부러 나쁘게 고른 두 점 \((1.4, -1.0)\)과 \((-1.4, 1.0)\)이며, 관측값이 아니다. 첫 (가)의 경계는 오른쪽 위 덩어리를 가로질러 그 왼쪽 윗부분까지 파란 군집에 넣고, 그 때문에 첫 (나)에서 파란 중심점은 두 덩어리 사이로 끌려간다. 둘째 (가)에서 57점의 할당이 바뀌어 위 덩어리가 모두 주황 군집이 되고, 셋째 (가)에서 3점, 넷째에서 1점이 바뀐 뒤 다섯째 (가)에서 할당이 그대로라 멈춘다. 마지막 두 중심점을 원래 단위로 되돌리면 (eruptions 4.30분, waiting 80.1분)과 (2.05분, 54.6분)이고, 군집 크기는 174와 98이다. 분출이 길면 다음 분출까지도 오래 기다린다는 두 무리다.

(보충) (가)의 경계는 두 중심점을 잇는 선분의 수직이등분선(perpendicular bisector)이다. 두 중심점까지의 거리가 같은 점들이기 때문이다. 4.12절의 최근접 평균 분류기(nearest centroid classifier)와 같은 규칙이고, 거기서도 경계가 수직이등분선이었다. 다만 그때의 평균은 레이블로 나눈 클래스의 평균이었고, 여기의 중심점은 할당과 함께 움직인다. 중심점이 \(K\)개면 공간이 볼록(convex)한 조각 \(K\)개로 나뉘는 보로노이 분할(Voronoi tessellation)이 되고, 조각 사이의 경계는 모두 초평면(hyperplane)의 일부다(ESL 14.3.6). K-평균의 군집 경계는 늘 평평하다.

슬라이드의 \(K = 3\) 예(s18)는 처음 중심점 셋이 모두 위쪽의 큰 무리 안에 몰려 있어도 반복할수록 둘이 아래의 두 무리로 내려가, 다섯째·여섯째 반복에서 자연스러운 세 무리를 찾는 모습이다. 이 예는 잘 끝났지만 늘 그렇지는 않다(8.7절).

8.6 K-평균의 목적함수 The K-Means Objective

L11 s19–s20 · ISL 12.4.1 · PRML 9.1

K-평균은 무엇을 최소화하는가(s19)? 관측값 \(\bx_i \in \R^p\)(\(i = 1, \dots, n\))와 중심점 \(\boldsymbol\mu_k \in \R^p\)(\(k = 1, \dots, K\)), 그리고 관측값 \(i\)가 군집 \(k\)에 들면 1이고 아니면 0인 할당 \(r_{ik}\)를 두자. 관측값은 정확히 한 군집에 들므로 \(\sum_k r_{ik} = 1\)이다. 슬라이드는 이 제약을 말로만 적었다.

정의 · K-평균의 목적함수 $$J = \sum_{i=1}^{n}\sum_{k=1}^{K} r_{ik}\,\lVert\bx_i - \boldsymbol\mu_k\rVert^2 \tag{8.4}$$

관측값마다 제가 속한 군집의 중심점까지의 거리의 제곱을 모두 더한 것이다. 이 값을 군집 내 제곱합(within-cluster sum of squares)이라 한다. K-평균은 할당 \(r = \{r_{ik}\}\)과 중심점 \(\boldsymbol\mu = \{\boldsymbol\mu_k\}\)을 번갈아 바꿔 \(J\)를 줄인다.

슬라이드는 관측값의 수를 \(N\), 관측값의 차원을 \(d\)로 적었다. 이 장은 \(n\), \(p\)로 쓴다. 슬라이드 s19와 s23의 자주 테두리 상자는 다른 강의 노트를 옮긴 것이라 기호가 다르다(할당을 군집 번호 \(c^{(i)}\)로, 관측값 수를 \(m\)으로 쓴다). 같은 알고리즘이므로 이 책은 \(r_{ik}\)로만 적는다. 의사코드(s20)는 두 단계를 식으로 적는다.

$$r_{ik} = \begin{cases} 1 & \text{if}\ \ k = \argmin_{k'}\ \lVert\bx_i - \boldsymbol\mu_{k'}\rVert^2 \\ 0 & \text{otherwise} \end{cases} \tag{8.5}$$ $$\boldsymbol\mu_k = \frac{\sum_{i=1}^{n} r_{ik}\bx_i}{\sum_{i=1}^{n} r_{ik}} = \frac{1}{n_k}\sum_{i=1}^{n} r_{ik}\bx_i \tag{8.6}$$

\(n_k = \sum_ir_{ik}\)는 군집 \(k\)에 든 관측값의 수다. 가장 가까운 중심점을 고르는 첨자를 \(k'\)로 쓴 것은 바깥의 \(k\)와 가르려는 것이다(슬라이드는 \(j\)로 적었다. 이 책에서 \(j\)는 feature 첨자다). 슬라이드는 두 단계가 왜 이 꼴인지 말하지 않는다. (보충) 두 단계는 각각 \(J\)를 한쪽 변수에 대해 최소화한 것이다(PRML 9.1).

  1. (가) \(\boldsymbol\mu\)를 고정하고 \(r\)에 대해 최소화한다. \(J = \sum_i\big(\sum_kr_{ik}\lVert\bx_i - \boldsymbol\mu_k\rVert^2\big)\)는 관측값마다 따로 떨어진 항의 합이고, 관측값 \(i\)의 항에서는 \(r_{i1}, \dots, r_{iK}\) 가운데 하나만 1이다. 그러니 \(\lVert\bx_i - \boldsymbol\mu_k\rVert^2\)이 가장 작은 \(k\)에 1을 주면 그 항이 가장 작아진다. 식 (8.5)다.
  2. (나) \(r\)을 고정하고 \(\boldsymbol\mu_k\)에 대해 최소화한다. \(J\)에서 \(\boldsymbol\mu_k\)가 든 부분은 \(\sum_ir_{ik}\lVert\bx_i - \boldsymbol\mu_k\rVert^2\)뿐이고, 이것은 \(\boldsymbol\mu_k\)의 볼록한 이차식이라 gradient가 0인 점, 곧 2.3절의 정류점(stationary point)이 최소다. $$\frac{\partial J}{\partial\boldsymbol\mu_k} = -2\sum_{i=1}^{n} r_{ik}(\bx_i - \boldsymbol\mu_k) = \mathbf{0}$$
  3. 정리하면 \(\boldsymbol\mu_k\sum_ir_{ik} = \sum_ir_{ik}\bx_i\)이고 식 (8.6)이 나온다. 제곱합을 가장 작게 하는 점은 평균이다. \(\sum_i(y_i - c)^2\)을 가장 작게 하는 상수 \(c\)가 \(\bar{y}\)인 것과 같은 이치다.

두 변수 묶음을 번갈아 하나씩 최적화(optimization)하므로 4.5절의 좌표 하강법(coordinate descent)과 같은 꼴이다. 변수 하나씩이 아니라 할당 전체와 중심점 전체를 번갈아 푼다는 점만 다르다. 어느 단계도 \(J\)를 늘리지 않는다는 사실이 8.7절의 출발점이다.

보충 · 초기화의 세 방식

슬라이드 s16은 점 \(K\)개를 무작위로 고르라 하고, s20의 의사코드는 중심점의 좌표 \(p\)개를 무작위 값으로 채운다. s16이 데이터 점이라고 하지 않았으므로 둘은 어긋나지 않는다. 흔히 쓰는 초기화는 셋이다. (1) 공간의 무작위 점(s20의 의사코드), (2) 관측값 \(K\)개를 무작위로 골라 중심점으로(PRML 9.1 — 그림 8.4와 8.5의 실행이 이렇게 했다), (3) 관측값마다 군집 번호를 무작위로 주고 그 평균에서 시작(ISL 알고리즘 12.2). 무작위 좌표는 데이터에서 멀리 떨어질 수 있어, 어떤 중심점에 관측값이 하나도 할당되지 않을 수 있다. 그러면 \(n_k = 0\)이라 식 (8.6)의 분모가 0이 되어 평균이 정해지지 않는다. 그런 중심점은 다시 뽑거나 그 군집을 버린다.

(보충) ISL 식 12.17은 같은 목표를 군집 안의 쌍별 제곱거리로 쓴다. 군집 \(k\)에 든 관측값의 집합을 \(\mathcal{G}_k\)라 하면

$$\frac{1}{n_k}\sum_{i \in \mathcal{G}_k}\sum_{i' \in \mathcal{G}_k}\lVert\bx_i - \bx_{i'}\rVert^2 = 2\sum_{i \in \mathcal{G}_k}\lVert\bx_i - \boldsymbol\mu_k\rVert^2$$

이므로(ISL 식 12.18, \(\boldsymbol\mu_k\)는 군집 평균), ISL의 목적함수는 중심점을 군집 평균에 둔 \(J\)의 두 배다. 왼쪽에서 \(\bx_i - \bx_{i'} = (\bx_i - \boldsymbol\mu_k) - (\bx_{i'} - \boldsymbol\mu_k)\)로 놓고 제곱을 펼치면 교차항(cross term)이 \(\sum_{i \in \mathcal{G}_k}(\bx_i - \boldsymbol\mu_k) = \mathbf{0}\) 때문에 사라진다. 쌍별 제곱거리의 합을 평균에서의 제곱거리 합으로 바꾸는 이 항등식을 8.11절에서 다시 쓴다.

8.7 수렴과 극값 Convergence and Local Optima

L11 s21–s22 · ISL 12.4.1 · ESL 14.3.5–14.3.6 · PRML 9.1

이 알고리즘은 늘 멈추는가(s21)? 그렇다. 두 단계 모두 \(J\)를 늘리지 않는다(8.6절). 슬라이드는 더 엄밀하게 두 사실을 덧붙인다. \(J\)는 적어도 한 관측값의 할당이 바뀔 때만 줄고, \(n\)개의 관측값을 \(K\)개 군집에 할당하는 방법의 수는 유한하다. (보충) 이 둘로 논증을 채우면 다음과 같다.

  1. 할당이 바뀌지 않으면 (나)가 같은 평균을 다시 내므로 알고리즘은 그 자리에서 멈춘다(8.5절의 멈춤 조건).
  2. 할당이 바뀌면 \(J\)가 엄격히 준다. 바뀐 관측값은 더 가까운 중심점으로 옮겨 가므로 (가)에서 \(J\)가 줄고, 이어지는 (나)는 \(J\)를 늘리지 않는다. 다만 두 중심점까지의 거리가 똑같은 관측값이 둘 사이를 오가면 할당이 바뀌어도 \(J\)가 그대로일 수 있으므로, 지금 군집과 거리가 같으면 옮기지 않는다는 규칙을 둔다.
  3. 할당이 정해지면 (나)의 중심점과 그때의 \(J\)가 하나로 정해진다. \(J\)가 엄격히 줄기만 하므로 한 번 지난 할당은 다시 나올 수 없다.
  4. 할당은 많아야 \(K^n\)가지이므로 알고리즘은 유한 번 안에 멈춘다. 군집 번호를 구별하지 않은 서로 다른 분할의 수는 ESL 식 14.30의 \(S(n, K)\)로, \(S(10, 4) = 34{,}105\)이고 \(S(19, 4)\)는 약 \(10^{10}\)이다.
−4 −2 0 2 4 −4 −2 0 2 4 X1 X2 (a) 덩어리마다 군집 하나 J = 198.0 초기 중심점(무작위로 고른 관측값) 수렴한 중심점 −4 −2 0 2 4 −4 −2 0 2 4 X1 X2 (b) 한 덩어리에 중심점 둘, 두 덩어리가 한 군집 J = 793.9 초기 중심점(무작위로 고른 관측값) 수렴한 중심점
그림 8.4같은 데이터, 같은 \(K = 4\)라도 초기 중심점(◇, 무작위로 고른 관측값)에 따라 덩어리마다 군집 하나인 해(a, \(J = 198.0\))에 이르기도 하고, 큰 덩어리를 중심점 둘이 나눠 갖고 오른쪽 두 덩어리가 한 군집이 된 극값(b, \(J = 793.9\))에 멈추기도 한다. 굵은 ×가 수렴한 중심점이다. 예시 데이터(L11 s22를 본뜸).

그림 8.3의 실행에서 단계마다 잰 \(J\)는 1,048.4에서 357.5, 170.9, 81.0, 79.9, 79.6으로 줄고, 이웃한 단계의 차는 모두 0 이하다(s21, PRML 그림 9.2). 처음 두 반복에서 대부분이 줄었다. 슬라이드는 이 알고리즘이 극값(local optimum)으로의 수렴(convergence)을 보장한다고 한다. 멈춘 자리는 \(r\)을 고정하면 \(\boldsymbol\mu\)가 최적이고 \(\boldsymbol\mu\)를 고정하면 \(r\)이 최적인 자리일 뿐, \(J\)를 가장 작게 하는 전역 최적(global optimum)이라는 보장은 없다. ISL·ESL·PRML 모두 같은 말을 한다. 4.6절에서 볼록하지 않은 손실의 경사하강법(gradient descent)이 극값에 멈출 수 있던 것과 같은 처지다.

그러면 같은 \(K\)에서 늘 같은 결과에 이르는가(s22)? 아니다. 무작위 초기화에 따라 크게 다른 결과로 수렴할 수 있다. 그림 8.4는 크기와 퍼짐이 다른 덩어리 넷의 예시 데이터 250점에 \(K = 4\)의 K-평균을, 관측값 넷을 무작위로 골라 50번 시작해 본 것이다. 서로 다른 극값이 17개 나왔다. 가장 작은 \(J = 198.0\)은 덩어리마다 군집 하나인 (a)이고 50번 가운데 31번 나왔다. (b)는 왼쪽 위의 큰 덩어리에 중심점 둘이 들어가 그 덩어리를 나눠 갖고, 나머지 둘 가운데 하나가 오른쪽의 두 덩어리를 한 군집으로 묶은 극값이다. \(J = 793.9\)로 (a)의 4배지만, 두 단계 어느 쪽으로도 더 나아가지 못한다.

(보충) 그래서 서로 다른 무작위 초기화로 여러 번 돌려 \(J\)가 가장 작은 해를 고른다(ISL 12.4.1). ISL 그림 12.9는 같은 데이터를 여섯 번 돌려 서로 다른 극값 셋을 얻었다. 그림 8.4의 데이터에서는 50번 가운데 62%가 가장 좋은 해에 닿았으므로 몇 번만 돌려도 그것을 얻기 쉽다. 처음 중심점들을 서로 멀리 떨어지게 뽑는 k-means++ 같은 초기화도 널리 쓴다. 8.10절에서 거리를 지키는 차원 축소도 같은 처방을 쓴다.

8.8 계산량과 군집 수 K Computational Cost and the Number of Clusters

L11 s23–s24 · ISL 12.4.1 · ESL 14.3.11

반복 한 번에 드는 계산은 얼마인가(s23)? (가) 할당은 관측값 \(n\)개마다 중심점 \(K\)개까지의 거리를 재므로 \(O(Kn)\), (나) 평균은 관측값마다 제 군집의 합에 한 번씩 더하므로 \(O(n)\)이다. 이 \(O(\cdot)\)는 3.3절의 시간 복잡도(time complexity) 표기다. (보충) 거리 하나와 더하기 하나에 각각 \(p\)번의 연산이 들므로 정확히는 \(O(nKp)\)와 \(O(np)\)다. 슬라이드는 PRML처럼 \(p\)를 상수로 보았다.

슬라이드는 반복 횟수를 「\(O(K^N)\) NP-hard, 그러나 실제로는 대개 더 빨리 수렴한다」고 적었다. 두 가지가 한 줄에 섞였다. \(K^n\)은 가능한 할당의 수이고, 8.7절에서 본 대로 같은 할당이 다시 나오지 않으므로 반복 횟수의 거친 상한이다. NP-난해(NP-hard)는 반복 횟수가 아니라 \(J\)의 전역 최소를 찾는 문제의 성질로, 그 문제를 다항 시간에 푸는 알고리즘이 알려져 있지 않다는 뜻이다. K-평균은 그 문제를 정확히 풀지 않고 극값에서 멈추므로 실제 반복은 대개 훨씬 적다. 그림 8.3의 실행은 (가) 다섯 번으로 끝났다. ISL 12.4.1도 분할이 거의 \(K^n\)가지라 정확히 풀기 매우 어렵다고 한다.

\(K\)는 어떻게 고르는가(s24)? 대개 데이터의 자연스러운 분포를 모른다. \(J\)가 가장 작은 \(K\)를 고르면 어떨까? 안타깝게도 \(J\)는 \(K\)가 클수록 늘 줄어든다. 극단으로 \(K = n\)이면 관측값마다 제 중심점을 가져 \(J = 0\)이다. 그래서 \(J\)를 \(K\)에 대해 그려 꺾이는 자리를 찾는다. 데이터에 자연스러운 군집이 있으면 \(J\)가 가파르게 줄다가 갑자기 완만해지는 elbow가 보이고, 그 자리의 \(K\)를 고른다. 슬라이드의 그림은 \(K = 6\)에서 꺾였다. 그림 8.5는 그림 8.4와 같은 데이터에서 \(K\)마다 200번 시작한 가장 작은 \(J\)다. \(K = 4\)까지 3,243, 1,651, 828, 198로 크게 줄다가 그 뒤로는 한 단계에 30 이하로만 준다. 그러나 슬라이드의 말대로 늘 이렇게 쉽지는 않다. 꺾임이 뚜렷하지 않은 데이터도 많다.

0 1,000 2,000 3,000 1 2 3 4 5 6 7 8 9 10 군집 수 K J elbow(K = 4)
그림 8.5군집 수 \(K\)마다 200번 시작한 가장 작은 \(J\)는 \(K\)가 클수록 늘 줄지만, 덩어리 넷의 데이터에서는 \(K = 4\)까지 크게 줄다가 그 뒤로 완만해진다(elbow, 파란 고리). 그림 8.4와 같은 예시 데이터(L11 s24를 본뜸).

(보충) 「\(J\)는 늘 줄어든다」를 엄밀히 하면, 늘 줄어드는 것은 \(K\)마다의 최적 \(J\)다. \(K\)개 중심점의 최적해에 중심점 하나를 아무 관측값 위에 더하면 \(J\)가 늘지 않으므로, \(K + 1\)의 최적값은 \(K\)의 최적값보다 크지 않다. 한 번의 실행은 극값이라 \(K\)를 늘렸는데 더 나쁜 극값에 멈춰 \(J\)가 커질 수도 있다. 그림 8.5가 \(K\)마다 여러 번 시작한 까닭이다.

(보충) 교차검증으로 \(K\)를 고를 수도 없다. ESL 14.3.11에 따르면 \(J\)는 따로 떼어 둔 시험 데이터(test data)에서 재도 \(K\)와 함께 줄어든다. 중심점이 많으면 공간을 촘촘히 채워 어느 점에나 가깝기 때문이다. 8.1절에서 말한, 비지도학습에는 견줄 정답이 없다는 사정이다. ESL은 이 방법이 다소 경험적이라고 한다.

8.9 데이터 다양체와 차원 축소 Data Manifolds and Dimensionality Reduction

L11 s26–s27 · ISL 12.2.1 · ESL 14.9

이제 둘째 갈래인 차원 축소로 간다. 출발점은 다양체(manifold), 곧 데이터가 놓인 기본 곡면이다(s26). 실제 데이터는 대부분 전체 공간의 아주 작은 부분에만 놓인다. 슬라이드의 예는 0–9의 손글씨 숫자를 \(28 \times 28\) 회색조 이미지로 모은 MNIST다. 픽셀마다 256단계라면 이 공간에 가능한 이미지는 \(256^{28 \times 28} = 256^{784}\)가지로, 어림잡아 \(10^{1888}\)가지다(\(784\log_{10}256 \approx 1888\), 보충 계산). 이미지 하나는 784차원 공간의 점이다. 1.10절에서 이미지 분류(image classification)의 입력을 픽셀 값의 배열로 본 것과 같다(CIFAR-10의 \(32 \times 32\) 컬러 이미지면 3,072차원이다). 그 대부분은 잡음(noise)처럼 보이고, 실제 손글씨 숫자는 숫자 열 가지에 해당하는 열 개의 무리 근처에만 모인다. 슬라이드는 이것을 우주 사진의 별 무리에 빗댔다.

(보충) 다양체는 대개 휘어 있어 슬라이드가 말한 「부분공간(subspace)」처럼 평평하지 않다. 8.11–8.15절의 방법은 평평한 부분공간을 찾고, 휜 다양체에는 비선형 방법이 필요하다(ESL 14.9).

슬라이드는 기계학습(machine learning)이 흔히 다양체 학습(manifold learning)이라고 한다(s27). 데이터가 관측되는, 훨씬 낮은 차원의 기본 부분공간을 다시 찾아 고차원의 데이터를 낮은 차원에서 나타내는 일이다. 형식적으로는 관측값 \(\bx_1, \dots, \bx_n \in \R^p\)를 공간의 기하를 대략 지키면서 \(\mathbf{z}_i = f(\bx_i) \in \R^q\)(\(q \ll p\))로 embedding하는 것이다. 슬라이드는 원래 차원을 \(D\), 줄인 차원을 \(d\)로, 관측값을 위 첨자 \(\mathbf{x}^{(i)}\)로 적었다. 이 장은 \(p\), \(q\)와 아래 첨자로 쓴다(슬라이드의 다른 장에서는 \(d\)가 원래 차원이다). 공간의 관계를 정확히 지키는 것은 대개 불가능하므로, 가장 덜 나쁜 embedding을 찾는다. 무엇이 덜 나쁜지를 식으로 정하는 것이 8.10절이다.

\(q = 2\)나 3이면 데이터를 그림으로 볼 수 있다. ISL 12.2.1의 동기도 같다. 변수가 \(p\)개면 두 변수씩 그린 산점도(scatterplot)가 \(p(p - 1)/2\)장이라 \(p = 10\)이면 45장이고, 그 하나하나는 데이터가 담은 정보의 일부만 보여 준다. 정보를 될 수 있는 대로 지키며 좌표의 수를 줄이는 이 일이 차원 축소다.

8.10 다차원척도법 Multidimensional Scaling

L11 s28–s30 · ESL 14.8

다차원척도법(multidimensional scaling, MDS)은 관측값 쌍마다의 비유사도(dissimilarity) \(\rho(\bx_i, \bx_{i'})\)가 주어지면, embedding이 들여오는 왜곡(distortion)을 가장 작게 하는 \(\mathbf{z}_i = f(\bx_i) \in \R^q\)를 찾는다(s28). 왜곡은 쌍마다 한 번씩 더한 다음 합이다.

$$\sum_{i < i'} R\big(\lVert\mathbf{z}_i - \mathbf{z}_{i'}\rVert,\ \rho(\bx_i, \bx_{i'})\big) \tag{8.7}$$

\(R(a, b)\)는 embedding 공간의 거리 \(a\)가 주어진 비유사도 \(b\)에서 얼마나 어긋났는지를 재는 함수다. 슬라이드는 \(R(\alpha, \beta)\)와 쌍 \(i < j\)로 적었으나, 이 책에서 \(\alpha\)와 \(\beta\)는 다른 뜻이 많고 \(j\)는 feature 첨자라 \(a\), \(b\)와 \(i < i'\)으로 쓴다.

저개발 선진 친공산 친서방 브라질 콩고 쿠바 이집트 프랑스 인도 이스라엘 일본 중국 소련 미국 유고슬라비아 첫째 MDS 좌표(회전 · 반사는 임의 — 슬라이드에 맞춰 돌림) 둘째 MDS 좌표
그림 8.6나라 쌍의 비유사도만으로 고전적 MDS를 하면, 비슷하다고 매겨진 나라끼리 가까이 놓인다. 회색 점선은 슬라이드(Wish)가 읽은 두 해석 축(저개발 → 선진, 친공산 → 친서방)을 옮긴 것으로 MDS가 정한 축이 아니고, 좌표는 슬라이드의 점 자리에 맞게 돌리고 뒤집었다. Wish(1971)의 나라 유사도(R 패키지 smacof의 wish)에 고전적 MDS를 한 결과(L11 s29와 같은 자료. 슬라이드 그림을 만든 방법은 밝혀져 있지 않다).

거리는 비유사도의 한 경우다. 8.3절의 거리 행렬처럼 데이터 \(\bx\) 없이 \(\rho\)만 주어져도 되고, MDS는 비유사도만 쓴다(ESL 14.8). 슬라이드의 식에는 노름 안에 닫는 괄호가 하나 남는다. 식 (8.7)의 최소화에는 일반적으로 닫힌 형태의 해(closed-form solution)가 없어 반복 최적화가 필요하다. 슬라이드는 경사하강법(4.6절)을 예로 들고 「극대(local maxima)가 생길 수 있다」고 적었지만, 왜곡을 최소화하는 문제이므로 생기는 것은 극소다. 목적함수가 볼록하지 않아 극소가 여럿일 수 있으므로 결과가 시작점에 달리고, 시작점을 바꿔 여러 번 돌린다. 8.7절의 K-평균과 같은 처방이다.

보충 · MDS의 두 가지 꼴(ESL 14.8)

\(R(a, b) = (a - b)^2\)으로 두면 ESL 식 14.98의 최소제곱 MDS(least squares scaling)다. Kruskal–Shephard scaling이라고도 한다. ESL은 순서쌍을 모두 더해 합이 이 식의 두 배다. 다른 길도 있다. 고전적 MDS(classical MDS)는 거리 대신 평균에서 잰 내적(inner product) \((\bx_i - \bar{\bx})^\top(\bx_{i'} - \bar{\bx})\)를 낮은 차원의 같은 내적 \((\mathbf{z}_i - \bar{\mathbf{z}})^\top(\mathbf{z}_{i'} - \bar{\mathbf{z}})\)로 맞춘다(ESL 식 14.100). 유클리드 거리만 있어도 이 내적으로 바꿀 수 있고, 해가 \(n \times n\) 내적 행렬의 고윳값 분해(eigendecomposition) 한 번으로 나온다(8.13절과 같은 계산). 거리를 맞추는 최소제곱 MDS와는 손실이 달라 결과도 다르다.

슬라이드의 예(s29)는 Wish(1971)의 조사다. 학생들에게 나라 쌍이 얼마나 비슷한지 매기게 한 뒤, 그 유사도만으로 나라마다 2차원 좌표를 얻었다. 유사도는 클수록 비슷하므로 비유사도로 바꿔 써야 한다(보충). 그림 8.6은 같은 자료(R 패키지 smacof의 wish — 12개국 66쌍의 평균 유사도)에 고전적 MDS를 한 결과다. smacof 소품문처럼 7에서 빼서(\(\rho = 7 - s\)) 비유사도로 바꿨다. 슬라이드는 1–10 척도(scale)라 했지만 자료 문서에는 척도가 적혀 있지 않고, 자료의 값은 학생들이 매긴 값의 평균이라 2.39–6.67에 있다.

점 사이의 거리가 비유사도를 될 수 있는 대로 지키므로 비슷하다고 매겨진 나라끼리 가까이 놓인다. 미국·이스라엘·일본·프랑스가 한쪽에, 중국·쿠바·소련·유고슬라비아가 다른 쪽에, 콩고·인도·이집트·브라질이 또 한쪽에 모인다. 슬라이드는 그림에 두 대각선을 긋고 한쪽을 개발 정도(저개발과 선진), 다른 쪽을 정치 성향(친공산과 친서방)으로 읽었다. 그림 8.6의 회색 점선이 그 해석을 옮긴 것이다. (보충) MDS는 거리만 맞추므로 좌표를 돌리거나 뒤집어도 왜곡이 같고, 좌표축 자체에는 뜻이 없다. 사람이 해석하기 좋은 방향을 따로 그어 읽는다.

둘째 예(s30)는 word embedding의 시각화다. 낱말이나 문서를 나타내는 고차원 벡터를 2차원에 놓아 비슷한 것끼리 가까이 두면, 무리마다 기술·경제·스포츠·날씨·중동 정치 같은 주제가 드러난다. 슬라이드는 이 그림을 어떤 방법으로 만들었는지 밝히지 않았다. 강의계획에 따르면 word embedding 자체는 제12장(Lecture 17)에서 다룰 것이다.

8.11 분산을 가장 많이 남기는 방향 Directions of Maximal Variance

L11 s31–s32 · ISL 12.2.1 · ESL 14.5, 14.8

슬라이드는 주성분분석(principal component analysis, PCA)을 MDS의 특수한 경우로 소개한다(s31). 식 (8.7)에서 비유사도를 원래 공간의 거리 \(\rho(\bx_i, \bx_{i'}) = \lVert\bx_i - \bx_{i'}\rVert^2\)으로, 어긋남을 \(R(a, b) = (a - b)^2\)으로 둔 것이라 한다. 그리고 이것이 줄인 차원에서 원래 데이터의 정보, 곧 분산을 될 수 있는 대로 많이 지키는 것과 같다고 한다.

주의 · 슬라이드의 「MDS의 특수한 경우」

두 군데가 정확하지 않다. 첫째, 슬라이드가 유클리드 거리라 부른 \(\lVert\bx_i - \bx_{i'}\rVert^2\)은 유클리드 거리의 제곱이다. 둘째, 식 (8.7)에서 \(R\)의 첫 인자는 제곱하지 않은 거리 \(\lVert\mathbf{z}_i - \mathbf{z}_{i'}\rVert\)인데 둘째 인자가 제곱 거리라 단위가 맞지 않고, 이렇게 적힌 \(\rho\)와 \(R\)로는 PCA와 정확히 같아지지 않는다. 둘째 인자를 제곱하지 않은 거리로 고치면 최소제곱 MDS인데, ESL 14.8은 그것이 고전적 MDS와 같지 않다고 한다. PCA와 정확히 같은 것은 고전적 MDS다.

(보충) 정확한 진술은 둘이다. 첫째, 고전적 MDS(8.10절)는 PCA와 정확히 같다. ESL 14.8은 유사도가 평균에서 잰 내적이면 고전적 MDS가 PCA와 정확히 같다고 한다(8.14절에서 USArrests로 확인한다). 둘째, embedding을 선형 사영(projection)으로 제한하면 쌍별 제곱거리로도 PCA를 적을 수 있다.

  1. \(\mathbf{U}_q\)를 서로 직교(orthogonal)하고 길이가 1인, 곧 정규직교(orthonormal)인(5.5절) 열 \(q\)개를 가진 \(p \times q\) 행렬이라 하고 \(\mathbf{z}_i = \mathbf{U}_q^\top(\bx_i - \bar{\bx})\)로 놓는다. 이것은 \(\mathbf{U}_q\)의 열이 펼치는 부분공간 위로의 사영을 그 좌표로 적은 것이고, 사영은 거리를 늘리지 않으므로 쌍마다 \(\lVert\bx_i - \bx_{i'}\rVert^2 - \lVert\mathbf{z}_i - \mathbf{z}_{i'}\rVert^2 \ge 0\)이다.
  2. 그러면 쌍마다의 이 차이를 더한 왜곡을 최소화하는 것은 \(\sum_{i < i'}\lVert\mathbf{z}_i - \mathbf{z}_{i'}\rVert^2\)을 최대화하는 것이다. 앞 항의 합은 \(\mathbf{U}_q\)와 무관하기 때문이다. 식 (8.7)로는 \(R(a, b) = b - a^2\)인 경우다.
  3. \(\mathbf{z}_i\)의 평균은 \(\mathbf{0}\)이므로 8.6절의 항등식에서 \(\sum_{i < i'}\lVert\mathbf{z}_i - \mathbf{z}_{i'}\rVert^2 = n\sum_i\lVert\mathbf{z}_i\rVert^2\)이다. 순서쌍마다 두 번 세던 합을 쌍마다 한 번 세었으므로 그 항등식의 절반이다.
  4. \(\sum_i\lVert\mathbf{z}_i\rVert^2\)은 사영한 좌표의 제곱합, 곧 사영한 분산의 \(n\)배다. 그러니 이 꼴의 MDS는 사영한 분산을 가장 크게 하는 \(q\)차원 사영을 찾는 문제이고, 8.12–8.13절의 PCA가 그것을 푼다.
(a) 중심화한 데이터와 주성분 방향 u1 u2 −6 −3 0 3 6 −6 −3 0 3 6 X1 X2 (b) 주성분 점수로 돌린 데이터 λ1 = 4.79 λ2 = 0.31 −6 −3 0 3 6 −6 −3 0 3 6 z1 z2
그림 8.7(a) 평균을 뺀 예시 데이터 200점에서 첫째 주성분 방향 \(\mathbf{u}_1\)(파랑)은 데이터가 가장 많이 퍼진 방향이고 둘째 \(\mathbf{u}_2\)(검정)는 그에 직교한다. 화살표 길이는 \(2\sqrt{\lambda_j}\)(\(\lambda_1 = 4.79\), \(\lambda_2 = 0.31\))이고, 점선 타원은 마할라노비스 거리 2의 등고선(4.12절)이다. (b) 같은 데이터를 주성분 점수 \((z_1, z_2)\)로 돌리면 타원의 축이 좌표축과 나란해지고 두 점수는 상관이 없다. 가로·세로 축척이 같다. 상관된 2차원 정규분포의 예시 데이터(L11 s32·s36을 본뜸).

슬라이드의 둘째 문장은 같은 목표를 이렇게 말한다(s31). PCA는 분산이 가장 크고 서로 무상관(uncorrelated)인 변수들의 선형 결합(linear combination)을 차례로 찾는다. 주성분(principal component)은 서로 무상관이고 분산 순으로 놓인 데이터의 사영들이라는 ESL 14.5 첫머리의 문장에 가깝다. ISL 12.2.1의 말로는 첫째 주성분이 길이를 1로 맞춘 선형 결합 가운데 분산이 가장 큰 것이고, 둘째는 첫째와 무상관인 선형 결합 가운데 분산이 가장 큰 것이다.

그림 8.7(a)가 그 두 방향이다(s32). 데이터가 가장 많이 퍼진 방향이 첫째 주성분의 방향이고, 둘째는 그것과 직교하는 방향 가운데 가장 많이 퍼진 방향이다. 2차원에서는 둘째가 첫째에 수직인 방향 하나로 정해진다. 예시 데이터에서 첫째 방향은 가로축에서 65.7° 기울었다. 화살표가 원점에서 시작하는 것은 데이터의 평균을 원점으로 옮겼다는 뜻이다(8.12절). 슬라이드의 그림은 가로·세로 축척이 달라 두 화살표가 화면에서만 직각이다. 그림 8.7은 축척을 같게 그렸다.

8.12 중심화와 공분산행렬 Centering and the Covariance Matrix

L11 s33–s34 · ISL 12.2.1, 12.2.4

(a) 원래 데이터 1.03 2.01 −4 0 4 8 −4 0 4 8 X1 X2 (b) 중심화 1.03 2.01 −4 0 4 8 −4 0 4 8 X1 X2 (c) 표준화 1.00 1.00 −4 0 4 8 −4 0 4 8 X1 X2
그림 8.8(a) 원래 데이터는 평균이 원점에서 떨어져 있고 \(X_2\)의 표준편차가 \(X_1\)의 두 배쯤이다. (b) 중심화는 평균을 빼 구름을 원점으로 옮길 뿐 모양을 바꾸지 않는다. (c) 표준화는 두 표준편차를 1로 맞춰 구름을 45° 쪽으로 눕힌다. 파란 막대는 축마다 ±1 표준편차의 폭이고, 세 패널의 축척이 같다. 그림 8.7과 같은 예시 데이터(L11 s33을 본뜸).

슬라이드는 PCA를 네 단계로 적는다. 1단계는 데이터를 원점에 모으고 척도를 맞추는 것이다(s33). 변수마다 평균을 빼는 중심화(centering)는 2.10·5.5절에서 보았다.

$$\tilde{\bx}_i = \bx_i - \bar{\bx}, \qquad \bar{\bx} = \frac1n\sum_{i=1}^{n}\bx_i \tag{8.8}$$

\(\bar{\bx}\)는 표본평균(sample mean) 벡터다. 슬라이드는 데이터 전체를 \(\tilde{\mathbf{X}} = \mathbf{X} - \frac1N\sum_i\mathbf{X}^{(i)}\)처럼 대문자로 한꺼번에 적었다. 이 장은 관측값 하나를 \(\tilde{\bx}_i\), 그것을 행으로 쌓은 \(n \times p\) 행렬을 \(\tilde{\bX}\)로 쓴다. \(\tilde{\bX}\)에는 절편(intercept) 열이 없다. 2.5절의 설계행렬(design matrix) \(\bX\)가 늘 1의 열을 포함하던 약속과 다르다. 또 5.6절에서 물결표는 표준화한 값이었지만 이 장에서는 평균을 뺀 값이다.

변수의 단위가 다르면 각 변수를 표준편차가 1이 되게 나누는 표준화(5.6절)를 권한다. 슬라이드는 이것을 「scaling (normalizing)」이라 불렀지만 이 책은 표준화로 쓴다. 같은 단위라면 해도 되고 안 해도 된다(ISL 12.2.4). 슬라이드의 식은 평균을 빼기만 한다. 표준화까지 하면 \(j\)번째 변수마다 \((x_{ij} - \bar{x}_j)/\hat\sigma_j\)다.

그림 8.8이 세 단계다. 원래 데이터는 평균이 \((3.52, 5.09)\)로 원점에서 떨어져 있고, \(X_2\)의 표준편차(2.01)가 \(X_1\)의 표준편차(1.03)의 두 배쯤이다. 중심화는 구름을 원점으로 옮길 뿐이다. 표준화는 두 표준편차를 1로 맞춰 구름을 45° 쪽으로 눕힌다. 두 변수의 상관(correlation)은 척도와 무관하므로 0.81 그대로다. (보충) 상관이 양수인 두 변수의 분산이 같으면 첫째 주성분은 늘 대각선 방향 \((1, 1)/\sqrt2\)이다. 그래서 이 데이터는 표준화하면 첫째 방향이 65.7°에서 45°로 바뀐다.

(보충) 척도는 결과를 크게 바꾼다. 8.14절의 USArrests를 표준화하지 않고 평균만 빼면, 네 변수의 분산(분모 \(n\))이 Murder 18.6, Assault 6,806.3, UrbanPop 205.3, Rape 86.0이라 Assault가 전체 분산의 95.6%를 차지한다. 그러면 첫째 주성분의 방향이 거의 Assault 축 하나(그 성분 0.995)가 되고, 그 하나가 전체 분산의 96.6%를 설명한다(ISL 그림 12.4 오른쪽). 범죄 세 변수가 서로 비슷하게 움직인다는 구조는 보이지 않고 단위가 가장 큰 변수만 남는다.

2단계는 공분산행렬을 추정하는 것이다(s34). 분산이 클수록 정보가 많다고 보기 때문이다. 분산이 큰 방향을 찾으려면 모든 방향의 분산을 담은 공분산행렬이 필요하다.

정의 · 표본공분산행렬 $$\hat{\boldsymbol\Sigma} = \frac1n\sum_{i=1}^{n}\tilde{\bx}_i\tilde{\bx}_i^\top = \frac1n\tilde{\bX}^\top\tilde{\bX} \tag{8.9}$$

\(\tilde{\bx}_i\tilde{\bx}_i^\top\)는 \(p \times p\) 행렬이고 그 평균이 \(\hat{\boldsymbol\Sigma}\)다. \((j, j')\) 성분 \(\frac1n\sum_i\tilde{x}_{ij}\tilde{x}_{ij'}\)은 변수 \(j\)와 \(j'\)의 표본 공분산(covariance)이고, 대각 성분은 각 변수의 분산이다. 4.12절의 다변량 정규분포(multivariate normal distribution)의 \(\boldsymbol\Sigma\)를 데이터로 추정한 것이다.

분모가 \(n\)인 것은 4.11절의 최대가능도 추정(maximum likelihood estimation, MLE)에서 클래스별 분산을 \(n_k\)로 나눈 것과 같은 꼴이다(ISL 식 12.3도 \(1/n\)). 분모를 \(n - 1\)로 바꾸면 \(\hat{\boldsymbol\Sigma}\)가 상수배될 뿐이라 주성분의 방향은 그대로이고 방향마다의 분산만 같은 비율로 커진다(보충). 슬라이드는 본문에 소문자 \(\tilde{\mathbf{x}}\), 식에 대문자 \(\tilde{\mathbf{X}}^{(i)}\)를 섞어 썼고, 모자를 쓴 \(\hat\Sigma\)와 모자 없는 \(\Sigma\)도 섞어 썼다. 그림 8.7의 예시 데이터에서는 다음과 같다.

$$\hat{\boldsymbol\Sigma} = \begin{pmatrix} 1.0665 & 1.6801 \\ 1.6801 & 4.0355 \end{pmatrix}$$
결과 · 사영한 값의 분산(보충)

길이가 1인 벡터 \(\mathbf{u}\)의 방향으로 \(\tilde{\bx}_i\)를 사영한 좌표는 \(\mathbf{u}^\top\tilde{\bx}_i\)다. 중심화했으므로 그 평균은 0이고, 분산은 \((\mathbf{u}^\top\tilde{\bx}_i)^2 = \mathbf{u}^\top\tilde{\bx}_i\tilde{\bx}_i^\top\mathbf{u}\)에서 다음과 같다.

$$\frac1n\sum_{i=1}^{n}(\mathbf{u}^\top\tilde{\bx}_i)^2 = \mathbf{u}^\top\Big(\frac1n\sum_{i=1}^{n}\tilde{\bx}_i\tilde{\bx}_i^\top\Big)\mathbf{u} = \mathbf{u}^\top\hat{\boldsymbol\Sigma}\mathbf{u}$$

공분산행렬 하나가 모든 방향의 분산을 담는다. \(\mathbf{u} = (1, 0)^\top\)이면 \(\hat{\boldsymbol\Sigma}\)의 (1, 1) 성분, 곧 \(X_1\)의 분산 1.07이다.

4.12절의 그림 4.13에서 공분산행렬은 다변량 정규분포의 등고선(contour) 타원의 모양을 정했다. 그 타원의 축이 어느 방향이고 축마다의 분산이 얼마인지가 다음 절의 답이다.

8.13 고윳값 분해와 주성분 Eigendecomposition and Principal Components

L11 s35–s37 · ISL 12.2.1 · PRML 12.1.1

3단계는 \(\hat{\boldsymbol\Sigma}\)의 고윳값 분해다(s35). \(\hat{\boldsymbol\Sigma}\mathbf{u} = \lambda\mathbf{u}\)를 만족하는 0이 아닌 벡터 \(\mathbf{u}\)를 고유벡터(eigenvector), 수 \(\lambda\)를 고윳값(eigenvalue)이라 한다. 행렬을 곱해도 방향은 그대로이고 길이만 \(\lambda\)배가 되는 벡터다. 고윳값을 큰 순서로 \(\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_p\)로 늘어놓는다. 슬라이드는 고유벡터를 굵은 \(\mathbf{x}\)로 적었는데, 데이터와 같은 글자라 이 장은 \(\mathbf{u}\)로 쓴다.

왜 고유벡터인가? 슬라이드의 설명은 이렇다. 공분산행렬을 어떤 벡터로 사영하면 그 방향의 분산만 남고, 정보 손실을 줄이려면 분산을 가장 많이 남기는 방향을 고르며, 그 방향이 고유벡터이고 그때의 분산이 고윳값이다. 사영하는 것은 공분산행렬이 아니라 데이터이고, 사영한 데이터의 분산이 8.12절의 \(\mathbf{u}^\top\hat{\boldsymbol\Sigma}\mathbf{u}\)다. 슬라이드가 건너뛴 계산을 채우면 다음과 같다(보충, PRML 12.1.1).

  1. 분산 \(\mathbf{u}^\top\hat{\boldsymbol\Sigma}\mathbf{u}\)는 \(\mathbf{u}\)를 키우면 한없이 커지므로 방향만 고르도록 길이를 1로 묶는다(ISL 12.2.1). $$\max_{\mathbf{u}}\ \mathbf{u}^\top\hat{\boldsymbol\Sigma}\mathbf{u} \quad \text{subject to}\ \ \mathbf{u}^\top\mathbf{u} = 1 \tag{8.10}$$
  2. 등식 제약이 하나인 문제라 7.5절의 라그랑주 함수(Lagrangian)를 쓴다. \(L(\mathbf{u}, \lambda) = \mathbf{u}^\top\hat{\boldsymbol\Sigma}\mathbf{u} - \lambda(\mathbf{u}^\top\mathbf{u} - 1)\)이다. 7.5절에서는 등식 제약의 승수를 \(\mu\)로 썼지만, 여기서는 곧 고윳값이 되므로 \(\lambda\)로 쓴다.
  3. \(\hat{\boldsymbol\Sigma}\)가 대칭행렬(symmetric matrix)이므로 \(\partial(\mathbf{u}^\top\hat{\boldsymbol\Sigma}\mathbf{u})/\partial\mathbf{u} = 2\hat{\boldsymbol\Sigma}\mathbf{u}\)다(2.5절의 공식). \(\mathbf{u}\)에 대한 gradient \(2\hat{\boldsymbol\Sigma}\mathbf{u} - 2\lambda\mathbf{u}\)를 0으로 두면 $$\hat{\boldsymbol\Sigma}\mathbf{u} = \lambda\mathbf{u} \tag{8.11}$$ 이다. 정류점은 고유벡터이고, 승수는 그 고윳값이다.
  4. 그때의 분산은 \(\mathbf{u}^\top\hat{\boldsymbol\Sigma}\mathbf{u} = \lambda\mathbf{u}^\top\mathbf{u} = \lambda\)다. 분산을 가장 크게 하는 것은 가장 큰 고윳값 \(\lambda_1\)의 고유벡터 \(\mathbf{u}_1\)이고, 이것이 첫째 주성분의 방향이다.
0° 45° 90° 135° 180° 0 1 2 3 4 5 6 방향 u = (cos θ, sin θ)의 각도 θ λ1 = 4.79(θ = 65.7°) λ2 = 0.31(θ = 155.7°) 사영한 값의 분산 uTΣu 평균 제곱 수직 거리 합 = tr Σ = 5.10
그림 8.9사영할 방향을 가로축에서 잰 각도 \(\theta\)로 돌리면 사영한 분산(파랑)은 \(\mathbf{u}_1\)의 방향 65.7°에서 가장 커 \(\lambda_1 = 4.79\)이고, 90° 떨어진 155.7°에서 가장 작아 \(\lambda_2 = 0.31\)이다. 직선까지의 평균 제곱 수직 거리(점선)와 더하면 어느 각도에서나 전체 분산 5.10이다(8.14절). 그림 8.7과 같은 예시 데이터(보충).

그림 8.9가 이 최대화를 눈으로 보인다. 예시 데이터를 사영할 방향을 각도 \(\theta\)로 돌리며 분산을 그리면, 65.7°에서 가장 커 \(\lambda_1 = 4.79\)이고 그로부터 90° 떨어진 155.7°에서 가장 작아 \(\lambda_2 = 0.31\)이다. \(\theta = 0°\)의 값 1.07은 \(X_1\)의 분산이고 90°의 값 4.04는 \(X_2\)의 분산이다. 가장 작은 분산도 고윳값이다. 정류점은 최대점만이 아니라 모든 고유벡터다.

둘째 방향은 첫째 방향에 직교하는 방향 가운데 사영한 분산이 가장 큰 방향이다(s36). 그것이 둘째로 큰 고윳값의 고유벡터 \(\mathbf{u}_2\)이고, 첫째와 함께 2차원 공간을 펼치며 정보를 둘째로 많이 지킨다. ISL 12.2.1은 둘째 주성분이 첫째와 무상관이라는 조건이 둘째 방향이 첫째 방향에 직교한다는 조건과 같다고 한다. 이렇게 \(p\)개를 모두 찾아 고유벡터를 열로 쌓은 \(\mathbf{U} = [\mathbf{u}_1 \cdots \mathbf{u}_p]\)와 고윳값의 대각행렬(diagonal matrix) \(\boldsymbol\Lambda = \operatorname{diag}(\lambda_1, \dots, \lambda_p)\)를 쓰면 식 (8.11) \(p\)개가 한 식이 된다.

결과 · 공분산행렬의 고윳값 분해 $$\hat{\boldsymbol\Sigma}\mathbf{U} = \mathbf{U}\boldsymbol\Lambda, \qquad \hat{\boldsymbol\Sigma} = \mathbf{U}\boldsymbol\Lambda\mathbf{U}^\top, \qquad \mathbf{U}^\top\hat{\boldsymbol\Sigma}\mathbf{U} = \boldsymbol\Lambda \tag{8.12}$$

\(\mathbf{U}\)는 열이 정규직교인 정사각행렬, 곧 직교행렬(orthogonal matrix)이라 \(\mathbf{U}^\top\mathbf{U} = \mathbf{U}\mathbf{U}^\top = \bI\)다. 둘째 식은 첫 식의 양변에 오른쪽에서 \(\mathbf{U}^\top\)를, 셋째 식은 왼쪽에서 \(\mathbf{U}^\top\)를 곱한 것이다.

슬라이드는 행렬 꼴을 「\(\boldsymbol\Sigma\mathbf{U} = \boldsymbol\Lambda\mathbf{U}\)」로 적었다. \(\boldsymbol\Lambda\mathbf{U}\)는 \(\mathbf{U}\)의 행에 고윳값을 곱한다. 고유벡터인 열 \(j\)에 \(\lambda_j\)를 곱하는 것은 \(\mathbf{U}\boldsymbol\Lambda\)다. 그 아래의 \(\hat{\boldsymbol\Sigma} = \mathbf{U}\boldsymbol\Lambda\mathbf{U}^\top\)는 맞게 적혔다.

슬라이드는 \(\mathbf{U}\)를 일종의 회전행렬(rotation matrix)이라 한다. 직교행렬은 길이와 각을 지키는 변환(transformation)이고, 행렬식(determinant)이 1이면 회전, −1이면 회전에 반사가 섞인 것이다. 행렬식이 1인 직교행렬이 회전행렬이다. 고유벡터 하나의 부호를 바꿔도 여전히 고유벡터이므로 늘 회전으로 맞출 수 있다(보충). 데이터를 \(\mathbf{U}^\top\tilde{\bx}_i\)로 돌리면 그 공분산행렬은 \(\mathbf{U}^\top\hat{\boldsymbol\Sigma}\mathbf{U} = \boldsymbol\Lambda\), 곧 대각행렬이 된다. 새 좌표축끼리는 상관이 없고, \(j\)번째 대각 성분 \(\lambda_j\)가 \(j\)번째 축 방향의 분산이다. 그림 8.7(b)가 돌린 데이터다. 그 표본공분산행렬의 대각 성분은 4.7929와 0.3090이고, 대각 밖 성분은 \(10^{-16}\) 정도로 0이다. 그림 4.13의 기운 등고선 타원의 축이 바로 이 고유벡터들의 방향이다(그림 8.7(a)의 점선 타원).

보충 · 대칭행렬의 고윳값

스펙트럼 정리(spectral theorem)에 따르면 대칭행렬의 고윳값은 모두 실수이고, 고유벡터들을 서로 직교하게 고를 수 있다. \(\mathbf{U}\)가 직교행렬이 되는 까닭이다. 게다가 \(\hat{\boldsymbol\Sigma}\)는 양의 준정부호(positive semidefinite)라 고윳값이 0 이상이다. \(\lambda_j = \mathbf{u}_j^\top\hat{\boldsymbol\Sigma}\mathbf{u}_j\)가 사영한 값의 분산이기 때문이다. 0보다 큰 고윳값은 많아야 \(\min(n - 1, p)\)개다. 평균을 뺀 관측값 \(n\)개는 많아야 \(n - 1\)차원을 펼치기 때문이다. ISL 12.2.1이 주성분이 많아야 \(\min(n - 1, p)\)개라고 하는 까닭이다.

4단계는 고윳값이 큰 앞의 \(q\)개 고유벡터만 남기고 나머지를 버리는 것이다(s37). 남긴 열을 \(\mathbf{U}_q = [\mathbf{u}_1 \cdots \mathbf{u}_q]\)라 하면 관측값은 \(q\)차원 좌표로 옮겨진다.

$$\mathbf{z}_i = \mathbf{U}_q^\top\tilde{\bx}_i, \qquad z_{ij} = \mathbf{u}_j^\top\tilde{\bx}_i \quad (j = 1, \dots, q)$$

\(z_{ij}\)를 \(i\)번째 관측값의 \(j\)번째 주성분 점수(principal component score)라 한다. 슬라이드는 이 \(q\)를 \(k\), 원래 차원을 \(d\)로 적었고, 둘 사이의 \(\ll\) 자리에는 다른 글자(주음부호의 한 글자, U+310D)가 찍혔다. 전체 분산은 대각합(trace) \(\operatorname{tr}\hat{\boldsymbol\Sigma} = \sum_j\lambda_j\)이고, 남긴 주성분이 지키는 분산은 \(\sum_{j \le q}\lambda_j\), 잃는 분산은 \(\sum_{j > q}\lambda_j\)다. 앞에서부터 고르는 것이 잃는 분산을 가장 작게 한다. 슬라이드의 말로는 \(q\)차원 공간에서 원래 데이터가 분산의 뜻으로 정보를 가장 적게 잃는다. (보충) 8.11절에서 최대화하던 \(\sum_i\lVert\mathbf{z}_i\rVert^2\)도 정규직교 열 \(q\)개 가운데 이 \(\mathbf{U}_q\)에서 가장 커 \(n\sum_{j \le q}\lambda_j\)다.

결과 · PCA의 네 단계
  1. 중심화한다. 변수의 단위가 다르면 표준화한다(식 (8.8)).
  2. 표본공분산행렬 \(\hat{\boldsymbol\Sigma}\)를 구한다(식 (8.9)).
  3. \(\hat{\boldsymbol\Sigma}\)를 고윳값 분해하고 고윳값을 큰 순서로 늘어놓는다(식 (8.12)).
  4. 앞의 \(q\)개 고유벡터로 주성분 점수 \(\mathbf{z}_i = \mathbf{U}_q^\top\tilde{\bx}_i\)를 구한다. 잃는 분산은 \(\sum_{j > q}\lambda_j\)다.

8.14 PCA의 예와 해석 An Example and an Interpretation of PCA

L11 s38–s39 · ISL 12.2.1–12.2.2

슬라이드의 예는 USArrests다(s38). 1973년 미국 50개 주마다 인구 10만 명당 Assault·Murder·Rape의 체포 건수와 도시 인구 비율 UrbanPop을 담은 데이터로, ISL 12.2.1이 PCA의 예로 쓴다. 네 변수를 표준화한 뒤 PCA를 하면 그림 8.10의 첫째·둘째 주성분을 얻는다. 주성분의 방향 \(\mathbf{u}_j\)를 적재 벡터(loading vector)라 하고 그 성분 하나하나를 적재값(loading)이라 한다. 점은 주마다의 두 주성분 점수이고, 화살표는 변수마다의 두 적재값이다. 점수와 적재값을 한 그림에 그린 이런 그림을 biplot이라 한다.

표 8.3표준화한 USArrests의 첫째·둘째 적재 벡터와 고윳값(적재 벡터는 ISL 표 12.1과 일곱째 자리까지 같다)
변수\(\mathbf{u}_1\)\(\mathbf{u}_2\)
Murder0.536−0.418
Assault0.583−0.188
UrbanPop0.2780.873
Rape0.5430.167
고윳값 \(\lambda_j\)2.4800.990

첫째 적재 벡터는 Assault·Murder·Rape에 거의 같은 무게(0.54–0.58)를 두고 UrbanPop에는 훨씬 작은 무게(0.28)를 둔다(표 8.3). 그래서 첫째 주성분은 대략 심각한 범죄의 전반적인 비율이다. 둘째는 무게를 거의 UrbanPop(0.87)에 두어 주의 도시화 정도에 해당한다(ISL 12.2.1). 슬라이드는 두 주성분이 「각각」 도시 인구와 범죄율에 해당한다고 적었는데 순서가 거꾸로다. 그림에서도 범죄 세 변수의 화살표가 가로(첫째) 쪽, UrbanPop이 세로(둘째) 쪽으로 뻗는다. 세 범죄 변수의 화살표가 서로 가까운 것은 셋 사이의 상관이 높다는 뜻이다.

주를 읽어 보면 첫째 점수가 큰 Florida(3.01)·Nevada(2.87)·California(2.52)는 범죄율이 높고, 작은 North Dakota(−2.99)·Vermont(−2.80)는 낮다. California는 둘째 점수(1.54)도 커서 도시화가 많이 되었고 Mississippi(−2.39)는 그 반대다. 두 점수가 모두 0에 가까운 Indiana(−0.51, 0.15)는 두 면에서 모두 중간쯤이다. (보충) 이 책은 표준화의 분모를 \(n\)으로 해서, \(n - 1\)로 나누는 ISL(R의 scale 함수)과 적재 벡터는 같고 점수만 1.01배 다르다. 적재 벡터는 부호를 뒤집어도 같은 주성분이고(ISL 12.2.4), 표 8.3은 ISL과 부호가 같다.

Murder Assault UrbanPop Rape North Dakota Vermont Maine California Nevada Florida Mississippi North Carolina South Carolina Rhode Island Hawaii West Virginia Indiana −3 −2 −1 0 1 2 3 −3 −2 −1 0 1 2 3 −0.5 −0.5 0 0 0.5 0.5 첫째 주성분 점수 z1 둘째 주성분 점수 z2 적재(위 · 오른쪽 눈금)
그림 8.10표준화한 USArrests의 biplot에서 세 범죄 변수의 적재 벡터 성분(파란 화살표, 위·오른쪽 눈금)은 첫째 주성분 쪽으로, UrbanPop은 둘째 주성분 쪽으로 뻗는다. 점은 주마다의 주성분 점수(아래·왼쪽 눈금)이고 일부 주에만 이름을 달았다. USArrests 데이터(ISL 그림 12.1을 다시 그림).
보충 · 고전적 MDS로 같은 답을 얻는다

8.11절에서 고전적 MDS가 PCA와 정확히 같다고 했다. 표준화한 USArrests의 유클리드 거리 행렬만 가지고 고전적 MDS를 하면, 좌표 네 열이 주성분 점수와 열마다 부호만 다르다(차이 \(4 \times 10^{-15}\)). 그림 8.6의 Wish 자료는 고전적 MDS의 고윳값 열둘 가운데 넷이 음수라 어느 차원에서도 정확히 유클리드 거리로 놓을 수 없고, 2차원 그림은 근사다.

PCA에는 또 다른 해석이 있다(s39). PCA는 관측값에 가장 가까운 낮은 차원의 평평한 곡면, 곧 아핀 부분공간(affine subspace)을 찾는다. 슬라이드는 hyperplane이라 했지만 \(q = p - 1\)일 때만 7.2절의 초평면이다. 첫째 적재 벡터가 정하는 직선은 \(p\)차원 공간에서 \(n\)개 관측값까지의 평균 제곱 유클리드 거리가 가장 작은 직선이고, 첫째·둘째가 펼치는 평면은 관측값에 가장 가까운 평면이다(ISL 12.2.2). 둘 다 데이터의 평균을 지난다. (보충) 분산 최대와 거리 최소가 같은 까닭은 피타고라스 정리다.

  1. 길이가 1인 \(\mathbf{u}\)에 대해 \(\tilde{\bx}_i\)를 직선 위의 성분 \((\mathbf{u}^\top\tilde{\bx}_i)\mathbf{u}\)와 직선에 수직인 성분 \(\tilde{\bx}_i - (\mathbf{u}^\top\tilde{\bx}_i)\mathbf{u}\)로 나눈다. 둘의 내적은 \((\mathbf{u}^\top\tilde{\bx}_i)^2 - (\mathbf{u}^\top\tilde{\bx}_i)^2\mathbf{u}^\top\mathbf{u} = 0\)이라 서로 직교한다.
  2. 그러면 \(\lVert\tilde{\bx}_i\rVert^2 = (\mathbf{u}^\top\tilde{\bx}_i)^2 + \lVert\tilde{\bx}_i - (\mathbf{u}^\top\tilde{\bx}_i)\mathbf{u}\rVert^2\)이다. 둘째 항이 점에서 직선까지 수직 거리의 제곱이다.
  3. \(i\)에 대해 평균하면 첫 항의 평균은 8.12절의 사영 분산 \(\mathbf{u}^\top\hat{\boldsymbol\Sigma}\mathbf{u}\)이고, 왼쪽은 변수마다의 분산을 더한 \(\operatorname{tr}\hat{\boldsymbol\Sigma}\)다. $$\operatorname{tr}\hat{\boldsymbol\Sigma} = \mathbf{u}^\top\hat{\boldsymbol\Sigma}\mathbf{u} + \frac1n\sum_{i=1}^{n}\big\lVert\tilde{\bx}_i - (\mathbf{u}^\top\tilde{\bx}_i)\mathbf{u}\big\rVert^2 \tag{8.13}$$
  4. 왼쪽은 \(\mathbf{u}\)와 무관한 전체 분산이므로, 사영 분산을 가장 크게 하는 \(\mathbf{u}\)가 평균 제곱 수직 거리를 가장 작게 한다. 그림 8.9의 두 곡선의 합이 어느 각도에서나 5.10인 것이 이 식이고, 수직 거리의 최솟값은 \(\operatorname{tr}\hat{\boldsymbol\Sigma} - \lambda_1 = \lambda_2 = 0.31\)이다. \(q\)차원으로 넓힌 것이 ISL 식 12.11이다.

선형회귀(linear regression)와는 무엇이 다른가? 슬라이드는 선형회귀가 주어진 공간을 그대로 받아들이므로 제곱오차(squared error)가 늘 최소는 아니라고 한다. 「회귀선은 수직 거리의 제곱합을 최소화하지 않는다」는 뜻으로 읽는다. 2.1절의 최소제곱법(least squares)은 \(y\)를 특별한 변수로 두고 세로 방향, 곧 \(y\)축과 나란한 잔차(residual)의 제곱합을 최소화한다. PCA는 변수 사이에 구별이 없고 직선에 수직인 거리의 제곱합을 최소화한다.

(a) 최소제곱 회귀: 세로 거리 기울기 1.30 세로 거리2 평균 1.67 −4 −2 0 2 4 −4 −2 0 2 4 X1 X2 (b) 첫째 주성분: 수직 거리 기울기 2.13 수직 거리2 평균 0.44 −4 −2 0 2 4 −4 −2 0 2 4 X1 X2
그림 8.11같은 25점에 맞춘 두 직선은 기준이 다르다. (a) 최소제곱 회귀선(기울기 1.30)은 세로 잔차(주황)의 제곱 평균 1.67이 가장 작은 직선이고, (b) 첫째 주성분 직선(기울기 2.13)은 직선까지의 수직 거리(파랑)의 제곱 평균 0.44가 가장 작은 직선이다. 가로·세로 축척이 같다. 그림 8.7의 앞 25점, 예시 데이터(L11 s39를 본뜸, 수치는 보충).

그림 8.11은 같은 예시 데이터 25점에 둘을 맞춘 것이다. 최소제곱 회귀선은 평균 제곱 세로 거리가 1.674로 가장 작고, 첫째 주성분 직선은 평균 제곱 수직 거리가 0.444로 가장 작다. 회귀선의 수직 거리(0.621)는 주성분 직선보다 크고, 거꾸로 주성분 직선의 세로 거리(2.451)는 회귀선보다 크다. 두 직선은 서로 다른 기준의 최적이다. 슬라이드 그림의 「RIGHT ANGLE TO Y-AXIS」는 회귀의 잔차가 \(y\)축에 수직이라는 뜻이 아니다. 잔차는 \(y\)축과 나란하고 가로축에 수직이다. (보충) 회귀는 두 변수의 구실이 달라 \(X_1\)을 \(X_2\)로 회귀하면 또 다른 직선이 나오지만, PCA의 직선은 하나다.

8.15 주성분의 개수 How Many Principal Components?

L11 s40 · ISL 12.2.3–12.2.4

주성분을 데이터의 요약으로 쓴다면 몇 개면 충분한가(s40)? 간단한 답이 없다. 이 목적에는 교차검증을 쓸 수 없다. 예측할 반응이 없어 견줄 정답이 없기 때문이다(8.1절). 그래서 군집 수를 고를 때처럼(8.8절) elbow를 찾는다. 주성분 번호에 따라 고윳값이나 그것이 설명하는 분산의 몫을 그린 그림을 스크리 그림(scree plot)이라 한다(ISL 12.2.4). 슬라이드의 그림에는 이름이 없다.

(a) 설명된 분산 비율 1 2 3 4 0.0 0.2 0.4 0.6 0.8 1.0 주성분 PVE 62.0% 24.7% 8.9% 4.3% elbow (b) 누적 1 2 3 4 0.0 0.2 0.4 0.6 0.8 1.0 주성분 누적 PVE 62.0% 86.8% 95.7% 100.0%
그림 8.12(a) 표준화한 USArrests의 PVE는 62.0%, 24.7%, 8.9%, 4.3%로 둘째 주성분 뒤에서 꺾인다(elbow, 파란 고리). (b) 누적 PVE는 62.0%, 86.8%, 95.7%, 100%다. USArrests 데이터(ISL 그림 12.3을 다시 그림).

(보충) 그 몫을 ISL 12.2.3은 설명된 분산 비율(proportion of variance explained, PVE)이라 부른다. 고윳값으로 쓰면 다음과 같다.

$$\mathrm{PVE}_j = \frac{\lambda_j}{\sum_{j'=1}^{p}\lambda_{j'}} = \frac{\lambda_j}{\operatorname{tr}\hat{\boldsymbol\Sigma}} \tag{8.14}$$

분모는 전체 분산이고 표준화한 데이터에서는 변수의 수 \(p\)다. 앞 \(q\)개를 더한 누적 PVE는 \(q\)차원 요약이 지키는 분산의 몫이고, ISL 12.2.3은 그것이 \(q\)차원 근사의 \(1 - \RSS/\TSS\), 곧 2.2절의 \(R^2\)과 같은 꼴이라고 한다.

(보충) 그림 8.12가 USArrests의 스크리 그림이다. 둘째 주성분 뒤에서 꺾이므로 두 개를 남기고, 그러면 그림 8.10의 biplot이 네 변수의 분산 가운데 87%쯤을 담는다. 슬라이드의 그림(고윳값 10개)은 출처를 알 수 없어 다시 그리지 않았는데, 그 그림도 둘째에서 꺾인다.

ISL 12.2.4는 이렇게 눈으로 하는 판단이 본래 임시방편이라 하고, 실제로는 처음 몇 개의 주성분에서 흥미로운 무늬를 찾아 더 나오지 않을 때까지 살핀다고 한다. (보충) 주성분 점수를 지도학습의 입력으로 쓰는 주성분 회귀(principal components regression, ISL 6.3.1)에서는 쓸 점수의 개수를 교차검증으로 고르는 하이퍼파라미터(hyperparameter)로 다룰 수 있다(ISL 12.2.4). 슬라이드의 말은 요약으로 쓸 때에 맞다.

기호와 표기

책 전체에서 기호 하나가 뜻 하나만 갖도록 통일했다. 표는 주제별로 묶었고, 「처음」 칸은 그 기호가 처음 나오는 절이다(강의 슬라이드를 배정한 절 기준). 슬라이드의 표기가 이 표와 다른 곳에서는 본문이 이 표를 따르고, 처음 한 번 「(슬라이드의 \(j\))」처럼 밝혔다. 연산자 이름(\(\E\), \(\Var\), \(\argmin\) 등)은 번역하지 않고, 수식 안에는 한글을 넣지 않는다.

데이터와 모형

기호뜻처음
\(x\), \(\bx\)입력. 스칼라는 보통체, 벡터는 굵게 쓴다1.2
\(y\), \(\hat{y}\)반응변수의 값, 그 예측값(^은 추정·예측)1.2
\(n\), \(i\)훈련 데이터의 관측값 수, 관측값 첨자 \(i = 1, \dots, n\)1.2
\(\bx_i\), \(y_i\)\(i\)번째 관측값의 입력과 반응. 훈련 데이터는 \(\{(\bx_i, y_i)\}_{i=1}^{n}\)1.2
\(a\)1.2절의 예시 모형 \(f(x) = ax\)의 파라미터1.2
\(p\), \(j\)feature 수(절편 제외), feature 첨자 \(j = 1, \dots, p\)1.3
\(X_j\)\(j\)번째 feature(변수 자체). 예: \(X_1\) = TV1.3
\(\R^p\)\(p\)차원 실수 공간1.3
\(f\)참 회귀함수 \(f(\bx) = \E[Y \mid X = \bx]\), \(f\colon \R^p \to \R\)1.3
\(\epsilon\), \(\beps\)오차항(벡터는 굵게). \(\E[\epsilon] = 0\)이고 \(\bx\)와 독립1.3
\(\hat{f}\)\(f\)의 추정1.4
\(f_L\)선형 모형(첨자 L은 linear)1.4
\(g\)아무 후보 함수1.5
\(X\), \(Y\)확률변수로서의 입력과 반응1.3
\(x_{ij}\)\(i\)번째 관측값의 \(j\)번째 feature 값, \(\bx_i = (x_{i1}, \dots, x_{ip})\T\)2.5

확률과 통계량

기호뜻처음
\(\E[\cdot]\), \(\E[Y \mid X = x]\)기댓값, 조건부 기댓값. 회귀 모형에서는 \(\E[y \mid \bx]\)로 줄여 쓴다(2.4)1.3
\(\Var(\cdot)\)분산. 조건부는 \(\Var(\bhbeta \mid \bX)\), 벡터이면 공분산행렬1.5
\(\mathbb{P}(\cdot)\), \(\hat{\mathbb{P}}(\cdot)\)확률과 그 추정1.10
\(\bar{x}\), \(\bar{y}\)표본평균2.1
\(r\)표본상관계수2.2
\(\mu\), \(\sigma^2\), \(\sigma\)평균, 분산, 표준편차. 회귀에서는 \(\sigma^2 = \Var(\epsilon)\)2.2
\(\iid\)i.i.d.로 따른다2.3
\(\mathcal{N}(\mu, \sigma^2)\)정규분포2.4
\(\sim\)분포를 따른다2.4
\(\Cov(\cdot, \cdot)\)공분산—
\(\mathbf{Z}\), \(\mathbf{A}\)일반 확률벡터와 상수 행렬. \(\Var(\mathbf{A}\mathbf{Z}) = \mathbf{A}\Var(\mathbf{Z})\mathbf{A}\T\)2.7
\(d\)벡터의 차원(일반). 선형회귀에서는 쓰지 않는다—

오차와 평가

기호뜻처음
\(\mathsf{Tr}\), \(\mathsf{Te}\)훈련 데이터·시험 데이터(첨자 집합)1.7
\(M\)시험 데이터(새 관측값)의 수1.7
\(\MSE_{\mathsf{Tr}}\), \(\MSE_{\mathsf{Te}}\)훈련 MSE, 시험 MSE(데이터 위의 평균)1.7
\(\Ave_{i \in \mathsf{Tr}}\)첨자 집합 위의 평균1.7
\(\bx_0\), \(y_0\)시험 관측값 한 건(feature가 하나면 \(x_0\))1.9
\(\Bias(\cdot)\)편향, \(\Bias(\hat\theta) = \E[\hat\theta] - \theta\)1.9
\(\MSE(\hat{\theta})\)추정량의 평균제곱오차 \(\E[\lVert\hat\theta - \theta\rVert^2] = \operatorname{tr}\Var(\hat\theta) + \lVert\Bias(\hat\theta)\rVert^2\)2.6
\(\lVert \cdot \rVert\)유클리드 노름2.5
\(\operatorname{tr}(\cdot)\)대각합2.6

분류

기호뜻처음
\(\mathcal{C}\), \(\lvert\mathcal{C}\rvert\)클래스 집합, 클래스 수1.10
\(k\)클래스 첨자, \(k \in \mathcal{C}\)1.10
\(I(\cdot)\)지시함수(괄호 안이 참이면 1, 거짓이면 0)1.10
\(\mathrm{Err}_{\mathsf{Te}}\)시험 오분류율1.10
\(K\)KNN의 이웃 수1.10
\(\mathcal{N}_0\)\(\bx_0\)에 가장 가까운 \(K\)개 훈련 관측값의 첨자 집합1.10
\(C_{\text{KNN}}(\cdot)\)KNN 분류기1.10
\(\argmax\), \(\argmin\)최대·최소로 만드는 인자1.5
\(y \in \{-1, +1\}\)이진 분류의 레이블(양성 +1, 음성 −1). 0/1과는 \(z = (y+1)/2\)로 잇는다4.2
\(s\), \(s_k\)점수 \(\bbeta\T\bx\), 클래스 \(k\)의 점수 \(\bbeta_k\T\bx\)4.2
\(\sigma(s)\)시그모이드 함수 \(1/(1 + e^{-s})\)4.2
\(p(y \mid \bx)\), \(p(y \mid \bx; \bbeta)\)모형이 주는 조건부 확률(참 확률은 \(\mathbb{P}\))4.2
\(\theta\), \(\theta_i\)양성 클래스의 확률 \(p(y = +1 \mid \bx)\)(오즈 \(\theta/(1-\theta)\)를 적을 때), 관측값 \(i\)의 그 값. 2.3절 베르누이 분포의 \(\theta\)와 같은 뜻4.2
\(\bbeta_k\), \(l\)클래스 \(k\)의 파라미터 벡터, softmax 분모의 클래스 첨자4.8

베이즈 분류기와 판별분석

기호뜻처음
\(R(f)\)위험(기대 손실) \(\E[\mathcal{L}(f(X), Y)]\)4.9
\(f\), \(f^*\)분류를 다루는 곳에서의 분류기, 베이즈 분류기(1.3의 회귀함수 \(f\)와 구분)4.9
\(\operatorname{sign}(\cdot)\)부호 함수(양수 +1, 음수 −1)4.9
\(\pi_k\), \(\hat\pi_k\)사전확률 \(\mathbb{P}(Y = k)\)와 그 추정 \(n_k/n\). 이진에서는 \(\pi_1\), \(\pi_{-1}\)4.9
\(p(\bx \mid y = k)\)클래스 \(k\)에서 입력의 분포(pmf 또는 pdf)4.9
\(p(\bx)\)입력의 주변분포 \(\sum_k \pi_k\,p(\bx \mid y = k)\)4.9
\(n_k\)클래스 \(k\)의 훈련 관측값 수4.10
\(\boldsymbol\mu_k\), \(\boldsymbol\Sigma_k\)클래스 \(k\)의 평균 벡터와 공분산행렬(1차원이면 \(\mu_k\), \(\sigma_k^2\))4.10
\(\boldsymbol\Sigma\), \(\sigma^2\)LDA에서 모든 클래스가 함께 쓰는 공분산행렬(분산)4.11
\(\mathcal{N}(\bx; \boldsymbol\mu, \boldsymbol\Sigma)\)정규분포의 pdf를 \(\bx\)에서 잰 값(1차원이면 \(\mathcal{N}(x; \mu, \sigma^2)\))4.11
\(\hat\mu_k\), \(\hat\sigma_k^2\), \(\hat{\boldsymbol\mu}_k\), \(\hat{\boldsymbol\Sigma}_k\)클래스별 표본평균·표본분산·표본공분산행렬(분모 \(n_k\))4.11
\(c_0\), \(c_1\), \(\mathbf{c}\)LDA 로그 오즈 \(c_0 + \mathbf{c}^\top\bx\)의 절편과 계수(1차원 \(c_1\))4.11
\(\lvert\boldsymbol\Sigma\rvert\)행렬식4.12
\(\delta_k(\bx)\), \(\hat\delta_k(\bx)\)클래스 \(k\)의 판별함수와 그 추정4.12
\(x_j\), \(V_j\)입력의 \(j\)번째 성분과 그것이 가질 수 있는 값의 가짓수4.14
\(\mathrm{TP}\), \(\mathrm{FP}\), \(\mathrm{TN}\), \(\mathrm{FN}\)참 양성·거짓 양성·참 음성·거짓 음성의 수4.15
\(t\), \(c_{\mathrm{FN}}\), \(c_{\mathrm{FP}}\)임곗값, FN 하나와 FP 하나의 손실4.15

최대가능도 추정

기호뜻처음
\(x_1, \dots, x_n\)분포에서 뽑은 표본(이 자리에서는 feature가 아니다)2.3
\(\theta\), \(\Theta\)파라미터, 파라미터 공간2.3
\(d_\theta\)파라미터 개수2.3
\(p_\theta(x)\)파라미터가 \(\theta\)인 분포의 pmf 또는 pdf2.3
\(L(\theta)\)가능도 \(L(\theta; x_1, \dots, x_n)\)2.3
\(\ell(\theta)\)로그가능도(\(\log\)는 자연로그)2.3
\(\hat{\theta}\), \(\hat{\theta}_{\text{MLE}}\)추정량, MLE2.3
\(\nabla \ell(\theta)\)\(\ell\)의 gradient2.3
\(\mathbf{H}\)헤세 행렬, \([\mathbf{H}]_{ij} = \partial^2 \ell / \partial\theta_i \partial\theta_j\)2.3
\(L(\bbeta)\), \(\ell(\bbeta)\)로지스틱 회귀의 조건부 가능도와 로그가능도4.4

선형회귀

기호뜻처음
\(\beta_0, \beta_1, \dots, \beta_p\)회귀계수(\(\beta_0\)은 절편)1.4
\(\hat{\beta}_j\), \(\bhbeta\)계수의 추정값과 그 벡터. 최소제곱 추정량은 \(\bhbeta = (\bX\T\bX)^{-1}\bX\T\by\)(식 (2.16))1.4
\(e_i\), \(\mathbf{e}\)잔차 \(y_i - \hat{y}_i\), 잔차 벡터2.1
\(\RSS\)잔차제곱합. 행렬로는 \((\by - \bX\bbeta)\T(\by - \bX\bbeta)\)2.1
\(\RSE\), \(\operatorname{RMSE}\)잔차표준오차, 평균제곱근오차2.2
\(\TSS\), \(R^2\)총제곱합, 결정계수2.2
\(\bbeta\), \(\bbeta\T\bx\)계수 벡터, 선형 결합(\(\bx = (1, x_1, \dots, x_p)\T\), 절편 흡수)2.4
\(\bbeta'\), \(\bx'\)절편을 흡수한 계수·입력 벡터. 뒤로는 프라임을 뗀다(5.5절에서 절편을 뺀 \(\bbeta\)와 가를 때 다시 쓴다)2.4
\((\cdot)\T\)전치1.3
\(\bX\)설계행렬, \(n \times (p+1)\), 첫 열은 모두 12.5
\(\by\)반응 벡터, \(n \times 1\)2.5
\(\hat{\by}\)적합값 벡터 \(\bX\bhbeta\)2.5
\(\bX_{\mathsf{Te}}\), \(\hat{\by}_{\mathsf{Te}}\)새 관측값 \(M\)개를 행으로 쌓은 행렬과 그 예측값 벡터2.5
\(\bI\)단위행렬. \(\Var(\by \mid \bX) = \sigma^2\bI\)2.7
\(\SE(\cdot)\)표준오차2.7
\(\operatorname{rank}(\cdot)\)rank2.5

모형 선택

기호뜻처음
\(\mathcal{M}_k\)feature가 \(k\)개인 최선 모형(\(\mathcal{M}_0\)은 영모형)3.2
\(k\)모형에 든 feature 수(부분집합 크기)3.2
\(\binom{p}{k}\)조합 수3.2
\(O(\cdot)\)점근적 계산량3.3
\(\mathcal{M}_k^{(j)}\)stagewise에서 \(\mathcal{M}_{k-1}\)에 \(X_j\)를 더한 후보3.4
\(T\)stagewise 반복 횟수3.4
\(K\)K-fold 교차검증의 fold 수3.6
\(m\), \(\MSE_{(m)}\), \(\MSE_{\mathsf{CV}}\)fold 첨자, fold \(m\)을 빼고 훈련해 그 fold에서 잰 MSE, 그 \(K\)개의 평균(식 (3.6))3.6

손실과 최적화

기호뜻처음
\(\mathcal{L}(\bbeta)\)손실함수. 로지스틱 회귀에서는 로그 손실 \(-\ell(\bbeta)\)4.4
\(\mathcal{L}(\hat{y}, y)\)예측과 정답을 맞대어 잰 손실4.5
\(\nabla\mathcal{L}(\bbeta)\)손실의 gradient4.6
\(\alpha\)학습률4.6
\(\bbeta^{\text{old}}\), \(\bbeta^{\text{new}}\)한 번 갱신하기 전과 후의 파라미터4.6
\(\mathcal{L}_i(\bbeta)\)관측값 \(i\) 하나의 손실4.7
\(\mathcal{B}\), \(\lvert\mathcal{B}\rvert\)미니배치(관측값 첨자의 부분집합)와 그 크기4.7

규제

기호뜻처음
\(\lambda\)규제 강도(튜닝 파라미터), \(\lambda \ge 0\)5.5
\(\lVert\bbeta\rVert_2^2\), \(\lVert\bbeta\rVert_1\)계수의 \(\ell_2\) 노름의 제곱과 \(\ell_1\) 노름. 이 \(\bbeta = (\beta_1, \dots, \beta_p)\T\)는 절편을 뺀 계수다5.5
\(\lVert\cdot\rVert_q\), \(\ell_q\)\(\ell_q\) 노름 \((\sum_j \lvert\beta_j\rvert^q)^{1/q}\), \(q \ge 1\)5.8
\(\bhbeta^{R}_{\lambda}\), \(\bhbeta^{L}_{\lambda}\)\(\lambda\)에서의 ridge 추정과 lasso 추정5.5
\(\mathbf{D}\)\(\operatorname{diag}(0, 1, \dots, 1)\). 절편을 벌하지 않는 ridge 해 \((\bX\T\bX + \lambda\mathbf{D})^{-1}\bX\T\by\)5.5
\(t\)제약 꼴의 크기: \(\lVert\bbeta\rVert_2^2 \le t\), \(\lVert\bbeta\rVert_1 \le t\)5.5
\(\tilde{x}_{ij}\), \(\hat\sigma_j\)표준화한 feature 값 \(x_{ij}/\hat\sigma_j\)와 \(j\)번째 feature의 표준편차(분모 \(n\))5.6
\((a)_+\)\(\max(a, 0)\)5.9

결정 트리

기호뜻처음
\(s\)분할점. 노드의 조건 \(x_j < s\)가 참이면 왼쪽 자식으로 간다6.2
\(R_m\), \(J\)트리가 나눈 영역(잎 하나에 대응하는 feature 공간의 조각)과 영역 수, \(m = 1, \dots, J\)6.3
\(\hat{y}_{R_m}\)영역 \(R_m\)의 예측값(회귀는 훈련 관측값의 평균, 분류는 가장 많은 클래스)6.3
\(n_m\), \(c_m\)영역 \(R_m\)에 드는 훈련 관측값 수, 그 영역에 줄 상수(최소화하는 변수)6.3
\(R_1(j, s)\), \(R_2(j, s)\)분할이 만드는 두 반평면 \(\{\bx \mid x_j < s\}\), \(\{\bx \mid x_j \ge s\}\). 노드 안에서는 그 노드의 영역과의 교집합6.4
\(v\)노드(의사코드에서 나눌 노드, 가지치기에서 접는 내부 노드)6.4
\(T\), \(T_0\), \(\lvert T\rvert\)트리(부분 트리), 크게 키운 트리, 잎 노드 수. \(T \subset T_0\)는 \(T_0\)의 가지를 쳐 얻은 부분 트리6.6
\(\alpha\)비용 복잡도 파라미터 \(\alpha \ge 0\). \(\RSS{} + \alpha\lvert T\rvert\)를 최소화하는 \(T\)를 고른다6.6
\(T_v\), \(\RSS(v)\), \(\RSS(T_v)\)\(v\)를 뿌리로 하는 부분 트리, \(v\)를 잎 하나로 둘 때의 RSS, \(T_v\)의 잎들의 RSS 합6.6
\(\alpha_v\)\(v\)를 접을 때 잎 하나당 RSS 증가 \((\RSS(v) - \RSS(T_v))/(\lvert T_v\rvert - 1)\). 가장 약한 고리의 기준6.6
\(\hat{p}_{mk}\)영역 \(R_m\)의 훈련 관측값 가운데 클래스 \(k\)의 비율6.7
\(Q(R)\), \(n_1\), \(n_2\)영역 \(R\)의 불순도(일반), 두 반평면에 드는 훈련 관측값 수. 분할 기준은 \(n_1Q(R_1(j, s)) + n_2Q(R_2(j, s))\)6.8
\(D_m\), \(G_m\), \(E_m\)영역 \(R_m\)의 엔트로피 \(-\sum_k \hat{p}_{mk}\log\hat{p}_{mk}\)(자연로그), 지니 지수 \(\sum_k \hat{p}_{mk}(1 - \hat{p}_{mk})\), 오분류율 \(1 - \max_k \hat{p}_{mk}\)6.8

앙상블

기호뜻처음
\(\mathcal{Z}\), \(\mathcal{Z}^{*b}\)부트스트랩하는 원래 데이터(관측값 \(n\)개)와 그 \(b\)번째 부트스트랩 표본(같은 크기, 복원추출)6.11
\(B\), \(b\)부트스트랩 표본 수이자 bagging·random forest의 트리 수, boosting의 단계 수와 그 첨자 \(b = 1, \dots, B\)(슬라이드 boosting의 \(t\), \(T\))6.11
\(\hat\theta\), \(\hat\theta^{*b}\), \(\bar\theta^{*}\)원래 데이터의 추정값, \(b\)번째 부트스트랩 표본의 추정값, 그 \(B\)개의 평균(슬라이드·ISL의 \(\hat\alpha\))6.11
\(\SE_B(\hat\theta)\)부트스트랩 표준오차. \(\hat\theta^{*b}\) \(B\)개의 표본표준편차(분모 \(B - 1\))6.11
\(\hat f^{*b}\), \(\hat f_{\text{bag}}\)\(b\)번째 부트스트랩 표본으로 훈련한 모형, bagging 모형 \(\tfrac1B\sum_b \hat f^{*b}(\bx)\)(분류는 다수결)6.13
\(\delta_b(\bx)\)\(b\)번째 모형의 오차 \(\hat f^{*b}(\bx) - f(\bx)\)(슬라이드의 \(\epsilon_b\))6.14
\(E_{\text{single}}\), \(E_{\text{comb}}\)모형 하나의 기대 제곱오차를 \(B\)개에 걸쳐 평균한 것, 결합한 모형의 기대 제곱오차. \(\E_{\bx}\)는 입력에 대한 기댓값6.14
\(\rho\)두 모형 예측 사이의 상관계수6.14
\(m_{\text{try}}\)random forest가 분할마다 무작위로 고르는 후보 feature 수(슬라이드·ISL의 \(m\))6.16
\(h_b\), \(H\)AdaBoost의 \(b\)번째 기저 분류기(값은 \(\pm1\), 레이블 \(y_i \in \{-1, +1\}\)), 최종 분류기 \(H(\bx) = \operatorname{sign}(F_B(\bx))\)6.18
\(w_b(i)\)\(b\)번째 단계에서 \(i\)번째 훈련 관측값의 가중치(슬라이드의 \(D_t(i)\))6.18
\(\mathrm{err}_b\), \(\alpha_b\)가중 오분류율(슬라이드의 \(\epsilon_t\)), 분류기 가중치 \(\tfrac12\log\big((1 - \mathrm{err}_b)/\mathrm{err}_b\big)\). 비용 복잡도 \(\alpha\)와 다르다6.18
\(F_b(\bx)\)AdaBoost가 \(b\)단계까지 더한 점수 \(\sum_{b' \le b}\alpha_{b'}h_{b'}(\bx)\), \(F_0 = 0\)6.18
\(\hat f^{b}\), \(e_i\)회귀 boosting의 \(b\)번째 트리(별표 없음), 지금 모형의 잔차(슬라이드의 \(f_t\), \(r_t(i)\))6.21
\(\lambda\), \(d\)boosting의 축소 파라미터(작은 양수), 트리 하나의 분할 수(상호작용 깊이)6.21

서포트 벡터 머신

기호뜻처음
\(\beta_0\), \(\bbeta\)(제7장)초평면 \(\beta_0 + \bbeta\T\bx = 0\)의 절편과 법선 벡터(절편을 뺀 계수). 7.3절부터는 절편이 없다: \(\hat{y} = \operatorname{sign}(\bbeta\T\bx)\), \(\bbeta \in \R^p\)7.2
\(M\)(제7장)마진. 분리 초평면에서 가장 가까운 훈련 관측값까지의 거리. 원문제의 해에서는 \(1/\lVert\bhbeta\rVert\)7.2
\(r\)(제7장)점 \(\bx\)에서 결정 경계 \(\bbeta\T\bx = 0\)까지의 부호 있는 거리 \(\bbeta\T\bx/\lVert\bbeta\rVert\)7.3
\(\bx_\perp\), \(\bx_\parallel\)\(\bx\)의 결정 경계에 수직인 성분(\(\bbeta\)와 나란함)과 경계 위의 성분7.3
\(c\)(제7장)\(\bbeta\)에 곱하는 양의 상수(슬라이드 s13의 \(\alpha\))7.4
\(L(\bx, \boldsymbol\mu, \boldsymbol\lambda)\), \(\mathbf{g}\), \(\mathbf{h}\)일반 제약 최적화의 라그랑주 함수 \(f(\bx) + \boldsymbol\mu\T\mathbf{g}(\bx) + \boldsymbol\lambda\T\mathbf{h}(\bx)\)와 등식 제약 \(\mathbf{g}(\bx) = \mathbf{0}\)·부등식 제약 \(\mathbf{h}(\bx) \le \mathbf{0}\). 7.5절에서만 쓴다(슬라이드의 \(\mathcal{L}\))7.5
\(\lambda_i\), \(\boldsymbol\lambda\), \(\hat\lambda_i\)부등식 제약의 라그랑주 승수(\(\lambda_i \ge 0\))와 쌍대문제의 해. 늘 첨자를 붙이거나 굵게 쓴다7.5
\(\mu_i\), \(\boldsymbol\mu\)7.5절에서는 등식 제약의 승수(부호 제한 없음), 소프트 마진에서는 \(\xi_i \ge 0\)의 승수(\(\mu_i \ge 0\))7.5
\(L_{\mathrm{P}}\), \(L_{\mathrm{D}}\)SVM 원문제의 라그랑주 함수와 \(\bbeta\)(와 \(\boldsymbol\xi\))를 없앤 쌍대 목적함수 \(L_{\mathrm{D}}(\boldsymbol\lambda)\)(ESL 12.2의 표기, 슬라이드의 \(\mathcal{L}\))7.6
\(\mathcal{S}\), \(\mathcal{S}_+\), \(\mathcal{S}_-\)서포트 벡터의 첨자 집합, 그 가운데 양성·음성 클래스의 것(슬라이드의 \(S^+\), \(S^-\))7.7
\(\xi_i\), \(\boldsymbol\xi\)슬랙 변수 \(\xi_i \ge 0\). 최적에서 \(\max(0, 1 - y_i\bhbeta\T\bx_i)\)7.9
\(C\)(제7장)비용 파라미터 \(C > 0\). 크면 위반에 엄하고 마진이 좁다(ISL 9.2의 예산 \(C\)와 뜻이 반대)7.9
\(s\), \(ys\)(제7장)선형 점수 \(\bbeta\T\bx\)와 정답과의 곱(마진). 슬라이드 s32 이후의 \(\hat{y} \in \R\)와 \(y\hat{y}\)7.12
\(\boldsymbol\phi(\bx)\)입력 변환(흔히 더 높은 차원으로 보내는 사상. 슬라이드의 Ф, \(\phi\))7.15
\(K(\bx, \bx')\)커널. 변환된 공간의 내적 \(\boldsymbol\phi(\bx)\T\boldsymbol\phi(\bx')\). 늘 인자 둘을 붙인다7.16
\(d\)(커널)다항식 커널 \((1 + \bx\T\bx')^d\)의 차수7.16
\(\gamma\)방사 커널 \(\exp(-\gamma\lVert\bx - \bx'\rVert^2)\)의 파라미터 \(\gamma > 0\). 클수록 국소적이고, 정규분포에 견주면 \(1/(2\sigma^2)\)7.17

비지도학습

기호뜻처음
\(K\), \(k\)(제8장)K-평균의 군집 수와 군집 첨자8.2
\((i, i')\)관측값 쌍의 두 첨자(슬라이드의 \(i\), \(j\))8.3
\(\lVert\cdot\rVert_1\), \(\lVert\cdot\rVert_2\)\(\ell_1\)·\(\ell_2\) 노름. 두 관측값의 차에 쓰면 맨해튼 거리와 유클리드 거리(슬라이드의 \(L_1\), \(L_2\))8.3
\(d(\cdot, \cdot)\)(제8장)두 관측값 또는 두 군집 사이의 거리. 늘 인자 둘을 붙인다8.3
\(\mathcal{G}\), \(\mathcal{H}\), \(\mathcal{G}_k\)군집(관측값 첨자의 집합). 크기는 \(\lvert\mathcal{G}\rvert\)8.4
\(\ell\), \(\tau_\ell\), \(\tau\)병합 군집화의 단계와 그 단계의 거리 임곗값(단조 증가), 덴드로그램을 자르는 높이8.4
\(d_{\mathrm{SL}}\), \(d_{\mathrm{CL}}\)단일 연결·완전 연결로 잰 두 군집 사이의 거리8.4
\(\boldsymbol\mu_k\)(제8장)군집 \(k\)의 중심점(그 군집에 든 관측값의 평균)8.6
\(r_{ik}\)할당. 관측값 \(i\)가 군집 \(k\)에 들면 1, 아니면 0(\(\sum_kr_{ik} = 1\))8.6
\(J\)(제8장)K-평균의 목적함수(군집 내 제곱합) \(\sum_i\sum_kr_{ik}\lVert\bx_i - \boldsymbol\mu_k\rVert^2\)8.6
\(n_k\)(제8장)군집 \(k\)에 든 관측값의 수 \(\sum_ir_{ik}\)8.6
\(q\)(제8장)줄인 차원(embedding의 차원, 남기는 주성분 수), \(q \ll p\)(슬라이드 s27의 \(d\), s37의 \(k\))8.9
\(f\), \(\mathbf{z}_i\)(제8장)embedding \(f\colon \R^p \to \R^q\)와 그 좌표 \(\mathbf{z}_i = f(\bx_i)\)8.9
\(\rho(\bx_i, \bx_{i'})\)MDS에 주어지는 두 관측값의 비유사도8.10
\(R(a, b)\)MDS의 왜곡 함수. embedding 거리 \(a\)가 비유사도 \(b\)에서 어긋난 정도(슬라이드의 \(R(\alpha, \beta)\))8.10
\(\bar{\bx}\)표본평균 벡터 \(\tfrac1n\sum_i\bx_i\)8.10
\(\tilde{\bx}_i\), \(\tilde{\bX}\)중심화한 관측값 \(\bx_i - \bar{\bx}\), 그것을 행으로 쌓은 \(n \times p\) 행렬(절편 열이 없다)8.12
\(\hat{\boldsymbol\Sigma}\)(제8장)표본공분산행렬 \(\tfrac1n\tilde{\bX}\T\tilde{\bX}\)(분모 \(n\))8.12
\(\lambda_j\)(제8장)\(\hat{\boldsymbol\Sigma}\)의 \(j\)번째 고윳값 \(\lambda_1 \ge \dots \ge \lambda_p \ge 0\). \(j\)번째 주성분의 분산이고, 단위 길이 제약의 라그랑주 승수다8.11
\(\mathbf{U}_q\)정규직교 열 \(q\)개의 \(p \times q\) 행렬. PCA에서는 \(\mathbf{U}\)의 앞 \(q\)개 열8.11
\(\mathbf{u}_j\), \(\mathbf{U}\)\(j\)번째 고유벡터(적재 벡터, 길이 1. 슬라이드의 \(\mathbf{x}\)), 그것을 열로 쌓은 \(p \times p\) 직교행렬8.13
\(\boldsymbol\Lambda\)고윳값의 대각행렬 \(\operatorname{diag}(\lambda_1, \dots, \lambda_p)\). \(\hat{\boldsymbol\Sigma} = \mathbf{U}\boldsymbol\Lambda\mathbf{U}\T\)8.13
\(z_{ij}\)\(i\)번째 관측값의 \(j\)번째 주성분 점수 \(\mathbf{u}_j\T\tilde{\bx}_i\)8.13
\(\mathrm{PVE}_j\)\(j\)번째 주성분의 설명된 분산 비율 \(\lambda_j/\sum_{j'}\lambda_{j'}\)8.15

기호 충돌과 약속

  • 굵은 글씨는 벡터와 행렬에만 쓴다. 이탤릭 대문자 \(X\), \(Y\)는 확률변수(random variable)이고, 굵은 \(\bX\)와 \(\by\)는 데이터를 모은 행렬과 벡터다.
  • \(K\)는 이름에 K가 든 방법에서만 쓴다. K-최근접 이웃(K-nearest neighbors, KNN)의 이웃 수와 K-fold 교차검증(K-fold cross-validation)의 fold 수다. stagewise 반복 횟수는 \(T\), 클래스(class) 수는 \(\lvert\mathcal{C}\rvert\)로 쓴다(softmax의 합처럼 바깥에 클래스 첨자 \(k\)가 따로 있으면 합은 \(\sum_{l \in \mathcal{C}}\)로 적는다). 한 장에 둘이 겹치면 한쪽에 \(K_{\text{fold}}\)처럼 첨자를 단다. 예외: 제7장의 커널 \(K(\bx, \bx')\)는 늘 인자 둘이 붙은 함수라 허용한다.
  • 맨 글자 \(p\)는 feature 수에만 쓴다. 확률(밀도)은 \(p_\theta(x)\), \(p(y \mid \bx)\)처럼 늘 첨자·인자와 함께 쓰고, p-값(p-value)은 글자로 쓴다. 선형회귀(linear regression)의 행렬 크기는 \(p\)와 \(p+1\)로만 적는다.
  • \(n\)은 훈련 데이터(training data)의 크기, \(M\)은 시험 데이터(test data)의 크기이고, 필기체 \(\mathcal{M}_k\)는 모형(model)이다.
  • \(i\)는 관측값 첨자, \(j\)는 feature와 파라미터 성분의 첨자, \(k\)는 클래스 첨자(1.10)이자 부분집합 크기(3.2)다. 두 \(k\)는 쓰이는 장이 다르다. 슬라이드의 클래스 첨자 \(i\)·\(j\)도 본문은 \(k\)로 쓴다. 클래스에 대한 합은 바깥에 \(k\)가 따로 있을 때(softmax, 베이즈 정리의 분모)만 첨자를 \(l\)로 쓰고, 불순도처럼 바깥 \(k\)가 없으면 \(\sum_{k \in \mathcal{C}}\)로 쓴다(제6장).
  • 괄호 인자가 붙은 \(\mathcal{N}(\mu, \sigma^2)\)은 정규분포(normal distribution), 첨자 0이 붙은 \(\mathcal{N}_0\)은 KNN의 이웃 집합이다.
  • \(I(\cdot)\)와 \(\bI\), \(\mathsf{Tr}\)와 \(\operatorname{tr}\), \(e_i\)와 \(r\)은 글꼴과 모양으로 가른다(뜻은 위 표). 지수함수는 \(\exp(\cdot)\)로 쓴다.
  • 평균제곱오차(mean squared error, MSE)는 첨자가 붙으면(\(\MSE_{\mathsf{Te}}\)) 데이터 위의 평균이고, 괄호 인자가 붙으면(\(\MSE(\hat\theta)\)) 추정량(estimator)의 기대 제곱오차다.
  • \(L(\theta)\)는 가능도(likelihood), \(\ell(\theta)\)는 로그가능도(log-likelihood)이고, \(f_L\)의 L은 linear다. 필기체 \(\mathcal{L}\)은 손실함수(loss function)다(슬라이드는 가능도에도 썼다). 인자 없는 \(\sigma\)는 표준편차(standard deviation)이고, 시그모이드는 늘 인자를 붙여 \(\sigma(s)\)로 쓴다.
  • \(\bX\)는 늘 절편(intercept) 열을 포함하고, \(\bbeta\T\bx\)는 절편을 흡수한 꼴이다(2.4). 다만 판별분석(discriminant analysis)과 나이브 베이즈(naive Bayes)의 \(\bx\)는 절편 성분 없이 feature \(p\)개만 담는다(4.10). 괄호는 \(\E[\cdot]\), \(\Var(\cdot)\)로, 조건 막대는 \(\mid\)로 통일했다.
  • \(\alpha\)는 제4·5장에서 학습률(learning rate)이다(제6장은 아래). 슬라이드가 사전확률(prior probability)에 쓴 \(\alpha\)는 ISL처럼 \(\pi_k\)로 적고, 원주율 \(\pi\)와는 첨자로 가른다.
  • 제5장의 \(\bbeta\)는 절편을 뺀 계수(coefficient)이고, 절편까지 묶을 때는 2.4절처럼 \(\bbeta'\)로 적는다. \(\lambda\)는 규제(regularization)의 강도이고, 위 첨자 R·L은 ridge·lasso의 머리글자다(위험(risk) \(R(f)\), 가능도 \(L\)과 무관). \(t\)는 4.15절에서는 임곗값(threshold), 제5장에서는 제약의 크기다. \(\ell_1\), \(\ell_2\), \(\ell_q\)는 노름(norm)의 이름으로, 늘 괄호 인자가 붙는 로그가능도 \(\ell(\theta)\)와 아래 첨자로 가른다.
  • 제6장에서 \(m\)은 결정 트리(decision tree)가 나눈 영역(region)의 첨자다(3.6절에서는 fold 첨자였다. 제6장에서 fold는 말로 쓴다). 분할 조건의 \(s\)는 분할점(cutpoint)이고(제4장의 점수와 다르다), \(T\)는 트리(3.4절의 stagewise 반복 횟수와 다르다), \(\alpha\)는 비용 복잡도 파라미터(제4·5장의 학습률과 다르다), \(n_m\)은 영역의 관측값 수(제4장의 클래스별 관측값 수 \(n_k\)와 다르다), \(D_m\)은 엔트로피(entropy)다(제5장의 \(\mathbf{D}\)와 다르다). 쓰이는 장이 달라 겹치지 않는다. 그림의 축 이름은 feature라 \(X_1\), \(X_2\)로, 분할 조건과 경계식은 값이라 \(x_1 < 0\)처럼 소문자로 쓴다. 뒷부분(6.11–6.22)도 앞부분과 겹치지 않게 슬라이드 기호를 바꿨다. 반복의 첨자와 수는 트리 \(T\) 대신 \(b\), \(B\), 관측값의 가중치(weight)는 엔트로피 \(D_m\)과 겹치지 않게 \(w_b(i)\), random forest의 후보 수는 \(m_{\text{try}}\)다. 맨 글자 \(\alpha\)는 비용 복잡도에만 쓰고 AdaBoost의 분류기(classifier) 가중치는 늘 첨자를 붙여 \(\alpha_b\)로, 부트스트랩(bootstrap)으로 추정하는 파라미터는 \(\theta\)로 쓴다. \(\lambda\)는 제5장에서는 규제의 강도, 제6장에서는 boosting이 새 트리를 줄여 더하는 비율이다.
  • 제7장의 SVM은 슬라이드를 따라 절편이 없다(\(\hat{y} = \operatorname{sign}(\bbeta\T\bx)\), \(\bbeta \in \R^p\)). 2.4절처럼 절편을 흡수한 꼴이 아니라 원점을 지나는 경계이고, 절편을 둔 표준형은 7.6절의 보충이다(그림의 점대칭 예시 데이터에서는 두 꼴의 해가 같다). \(\mathcal{L}\)은 손실이므로 슬라이드가 \(\mathcal{L}\)로 적은 라그랑주 함수는 \(L\), \(L_{\mathrm{P}}\), \(L_{\mathrm{D}}\)로 쓰고, \(\hat{y}\)는 예측 레이블이므로 슬라이드의 실수 \(\hat{y}\)는 점수 \(s\)로 쓴다. 라그랑주 승수 \(\lambda_i\), \(\mu_i\)는 늘 첨자를 붙이거나 굵게 써서 규제 강도 \(\lambda\)(제5장), 평균 \(\mu\)와 가르고, 맨 글자 \(\alpha\)는 쓰지 않는다(s13의 상수는 \(c\)). \(M\)은 마진(시험 데이터 수와 다르다), \(r\)은 경계까지의 거리, \(C\)는 비용 파라미터(ISL 9.2의 \(C\)와 뜻이 반대)이고, \(K(\cdot, \cdot)\)는 인자 둘이 붙은 커널이다. 슬라이드 s49의 클래스 수 \(K\)는 \(\lvert\mathcal{C}\rvert\)로, s44의 훈련 데이터 수 \(N\)은 \(n\)으로 쓴다.
  • 제8장은 관측값을 아래 첨자로 \(\bx_i \in \R^p\)(\(i = 1, \dots, n\)), 원래 차원(dimension)을 \(p\), 줄인 차원을 \(q\)로 쓴다(슬라이드의 위 첨자 \(\mathbf{x}^{(i)}\), \(N\), \(d\)·\(D\)·\(k\)). \(K\)는 K-평균의 군집(cluster) 수다. \(\lambda_j\)는 고윳값(eigenvalue)이자 단위 길이 제약의 승수라 제5장의 규제 강도 \(\lambda\), 제7장의 승수 \(\lambda_i\)와 장이 다르고, \(\rho\)는 비유사도(제6장의 상관계수와 다르다), \(R(a, b)\)는 인자가 둘인 왜곡(distortion) 함수(위험 \(R(f)\)와 다르다), \(J\)는 K-평균의 목적함수(제6장의 영역 수와 다르다)다. \(\tilde{\bx}_i\)는 평균을 뺀 값이고(5.6절의 \(\tilde{x}_{ij}\)는 표준화(standardization)한 값), \(\tilde{\bX}\)에는 설계행렬(design matrix) \(\bX\)와 달리 절편 열이 없다. 고유벡터(eigenvector)는 데이터와 겹치지 않게 \(\mathbf{u}_j\)로 쓴다(슬라이드의 \(\mathbf{x}\)).

예제 데이터

여러 절에서 되풀이해 쓰는 데이터를 여기서 한 번 소개한다. 변수 이름은 원래 표기대로 쓴다.

데이터내용과 변수쓰인 절
Advertising시장 200곳의 판매량과 매체별 광고 예산(ISL 2.1). 반응 Sales, feature TV, Radio, Newspaper1.3, 2.1, 2.4,
2.8, 2.10
Income30명의 소득 Income을 교육 연수 Years of Education과 근속 연수 Seniority로 설명하는 ISL 모의 데이터. 참 \(f\)를 알아 \(\hat{f}\)과 직접 견줄 수 있다1.3, 1.4, 1.7
Credit400명의 카드 잔액 balance와 feature 10개(ISL 3.3). 양적: 나이 age, 카드 수 cards, 교육 연수 education, 소득 income, 신용 한도 limit, 신용 등급 rating. 질적: 주택 소유 own, 학생 여부 student, 혼인 여부 status, 지역 region(East·West·South). 제5장의 그림은 원자료로 다시 계산했다2.9, 3.1, 3.2,
3.3, 3.6, 5.6,
5.8, 5.11
Auto자동차 392대의 연비 mpg와 마력 horsepower(ISL 3.3). 다항회귀의 예2.10
Default신용카드 고객 10,000명의 연체 여부 default와 월 카드 잔고 balance, 연 소득 income, 학생 여부 student(ISL 4장). ISL의 모의 데이터로 연체율은 약 3%다4.1, 4.2, 4.3,
4.15
Weather14일 동안의 날씨 조건 Outlook(Sunny·Overcast·Rainy), Temp(Hot·Mild·Cool), Humidity(High·Normal), Windy(True·False)와 그날 골프를 쳤는지 Play Golf(Yes·No). 범주형 feature만 있는 작은 예4.14
CIFAR-1010개 클래스(airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truck)의 32×32 컬러 이미지 6만 장. 지도학습의 예1.1
ISL 그림 2.9참 \(f\)를 아는 모의 데이터(입력 \(X\) 하나). 선형회귀와 유연성이 다른 smoothing spline 둘의 훈련·시험 MSE를 견준다1.7
ISL 그림 6.5·6.8\(n = 50\), \(p = 45\)이고 계수가 모두 0이 아닌 선형 모형의 모의 데이터. ridge 회귀와 lasso의 편향·분산·시험 MSE를 견준다. 이 책의 그림은 같은 설정으로 다시 뽑았고, 그림 5.9(b)는 계수를 둘만 0이 아니게 바꾼 것이다5.7, 5.10
Hitters메이저리그 타자의 1986–87년 기록과 연봉(ISL 8.1, ISLR 패키지). 연봉 Salary가 빠진 선수를 빼면 263명이다. 반응은 log Salary(자연로그, Salary는 천 달러 단위). 이 책이 쓴 feature는 Years(경력 햇수), Hits(지난해 안타 수)와 지난해 기록 AtBat, HmRun, Runs, RBI, Walks, Putouts, Assists. 6.6절과 6.22절은 훈련 132명·시험 131명으로 나눴다6.2, 6.3, 6.4,
6.6, 6.8, 6.22
Heart가슴 통증으로 온 환자 303명의 심장병 여부 HD(Yes·No, 원자료의 열 이름은 AHD)와 feature 13개(ISL 8.1.2). 범주형 ChestPain(typical·asymptomatic·nonanginal·nontypical), Thal(normal·fixed·reversable)과 Age, Sex, RestBP, Chol, Fbs, RestECG, MaxHR, ExAng, Oldpeak, Slope, Ca. 결측을 빼면 297명이고, 6.9절과 6.16·6.18·6.22절은 훈련 150명·시험 147명으로 나눴다6.9, 6.16,
6.18, 6.22
ISL 5.2의 두 자산 수익두 자산의 수익 \(X\), \(Y\)를 분산 1과 1.25, 공분산 0.5인 정규분포에서 100쌍 뽑은 예시 데이터. 수익의 분산을 가장 작게 하는 투자 비율(참값 0.6)을 부트스트랩으로 추정한다6.11
1차원 회귀 예시\(x\)는 0과 1 사이 균등분포, \(y = \sin(2\pi x) + x + \epsilon\), \(\epsilon \sim \mathcal{N}(0, 0.4^2)\)인 관측값 50개. 트리 하나와 bagging, 회귀의 boosting을 견준다6.13, 6.21
10차원 회귀 예시feature 10개가 0과 1 사이에 고르게 퍼지고 반응이 그 가운데 셋에만 달린 관측값 100개. bagging과 random forest 트리 사이의 상관을 잰다6.14
AdaBoost 장난감 예슬라이드의 점 열 개(양성 다섯, 음성 다섯, feature 둘). stump 셋으로 AdaBoost를 세 단계 돌린다6.18, 6.20
점대칭 분리 가능 예시양성 10점을 \(\mathcal{N}((-1, 1)^\top, 0.85^2\bI)\)에서 뽑고(경계 쪽을 비움) 음성 10점은 그 거울점 \(-\bx_i\)로 둔 예시 데이터. 원점에 대해 점대칭이라 절편 없는 SVM과 절편을 둔 SVM의 해가 같다. 7.8절은 양성 점 하나를 더했다7.1, 7.2, 7.4,
7.6, 7.7, 7.8
점대칭 겹침 예시양성 15점을 \(\mathcal{N}((-0.9, 0.9)^\top, \bI)\)에서 뽑고 음성 15점은 그 거울점으로 둔, 두 클래스가 겹치는 예시 데이터. 소프트 마진과 \(C\)의 효과를 본다7.9, 7.10, 7.11,
7.16
1차원 예시양성 8점은 \(-1\)과 1 사이, 음성 12점은 양쪽 바깥(\(\pm1.6\)과 \(\pm3\) 사이)에 고르게 뽑은 예시 데이터. \((x, x^2)\)로 보내 선형으로 가른다7.15
ISL 9.6.2 규칙의 비선형 예시2차원 표준정규 200점 가운데 100점에 2를 더하고 50점에서 2를 빼, 가운데 50점(양성)을 음성 150점이 양쪽에서 둘러싸게 만든 예시 데이터(ISL 9.6.2 실습의 생성 규칙). 훈련 100점·시험 100점7.15, 7.17
Old Faithful미국 옐로스톤의 간헐천 Old Faithful의 분출 272회. 분출 시간 eruptions와 다음 분출까지의 시간 waiting(둘 다 분, R의 faithful). 두 변수를 표준화해 PRML 그림 9.1을 다시 그리고(그림 8.3) 그림 9.2의 \(J\)를 다시 계산했다(8.7절)8.5, 8.7, 8.8
USArrests1973년 미국 50개 주의 인구 10만 명당 체포 수 Murder, Assault, Rape와 도시 인구 비율 UrbanPop(ISL 12.2, R의 USArrests). 표준화해 PCA를 했고, 8.12절은 표준화하지 않은 경우와 견준다8.12, 8.14,
8.15
Wish의 나라 유사도학생들이 매긴 12개국 쌍의 유사도의 평균(Wish 1971, R 패키지 smacof의 wish). 7에서 빼 비유사도로 바꿔 고전적 MDS를 했다8.10, 8.14
다섯 인물의 거리슬라이드가 든 「심슨 가족」 인물 다섯 쌍의 거리(표 8.1). 계층적 군집화의 손 계산 예8.3, 8.4
병합 군집화 예시세 중심 둘레에서 넷씩 뽑은 2차원 예시 데이터 12점. 덴드로그램과 연결 방식을 본다8.4
덩어리와 사슬 예시18점짜리 덩어리 둘을 9점의 사슬이 잇는 2차원 예시 데이터 45점. 단일 연결의 사슬 현상을 본다8.4
덩어리 넷 예시크기(80, 40, 60, 70점)와 퍼짐이 다른 2차원 덩어리 넷의 예시 데이터 250점. K-평균의 극값과 군집 수를 본다8.7, 8.8
상관된 2차원 예시평균 \((3.5, 5)\), 표준편차 \((1, 2)\), 상관계수 0.8인 이변량 정규분포에서 뽑은 예시 데이터 200점. 8.14절의 회귀 비교는 앞 25점을 쓴다8.11, 8.12,
8.13, 8.14

판권

제목
기계학습과 딥러닝 I — 강의 정리본
원 강의
Machine Learning & Deep Learning I, 서울대학교 데이터사이언스대학원, 2026 가을. 강의 Joonseok Lee
교재
ISL = James, Witten, Hastie, Tibshirani, An Introduction to Statistical Learning, 2nd ed., Springer, 2021 · PML = K. Murphy, Probabilistic Machine Learning: An Introduction, MIT Press · DL = Goodfellow, Bengio, Courville, Deep Learning, MIT Press, 2015
참고
ESL = Hastie, Tibshirani, Friedman, The Elements of Statistical Learning, 2nd ed., Springer, 2009 — 보충 설명에서 인용(제4·6·7·8장) · PRML = C. M. Bishop, Pattern Recognition and Machine Learning, Springer, 2006 — 6.14절의 bagging 분석, 제8장의 K-평균과 PCA
정리
이시헌
판 이력
2026-09-21 초판 조판 — Lecture 2–4 반영(제1–3장)
2026-09-23 Lecture 5 반영 — 제4장 신설(4.1–4.8)
2026-09-29 Lecture 6 반영 — 제4장 보강(4.9–4.15)
2026-10-09 Lecture 7 반영 — 제5장 신설(5.1–5.11). 앞붙이가 2쪽 늘어 제1–4장의 쪽번호가 2씩 밀렸다
2026-10-10 「기호와 표기」를 책 끝(판권 앞)으로 옮기고 부록 표제지를 두었다. 장의 쪽번호가 6씩 앞당겨졌다
2026-10-11 Lecture 8 반영 — 제6장 신설(6.1–6.10, 결정 트리)
2026-10-14 Lecture 9 반영 — 제6장 보강(6.11–6.22, 앙상블)
2026-10-15 실습(Lab)을 싣지 않기로 해(사용자) 부록 표제지를 뺐다. 기호와 표기와 판권이 2쪽 당겨졌다
2026-10-18 Lecture 10 반영 — 제7장 신설(7.1–7.19, 서포트 벡터 머신). 차례가 한 쪽 늘어 제1–6장의 쪽번호가 2씩 밀렸다
2026-10-22 Lecture 11 반영 — 제8장 신설(8.1–8.15, 비지도학습)
조판
HTML·CSS(Paged Media), 수식 KaTeX, 본문 Noto Serif KR · 제목 IBM Plex Sans KR

조판 2026-10-22 · 전체 193쪽 · 기준 렌더러 Chrome 155.0.8059.85