2026 가을 · 서울대학교 데이터사이언스대학원
기계학습과 딥러닝 I
Machine Learning & Deep Learning I
강의 정리본
서울대학교 데이터사이언스대학원 「Machine Learning & Deep Learning I」(2026 가을, Joonseok Lee) 강의를 내용의 흐름에 따라 장 단위로 다시 엮은 정리본이다. 강의 한 회가 한 장이 되지 않는다. 큰 주제가 바뀌는 자리에서 장을 나누었으므로, 한 장이 강의 두 회를 묶기도 하고 강의 한 회가 두 장에 걸치기도 한다. 어느 강의가 어느 장으로 갔는지는 「강의와 장」에 모았다.
강의 슬라이드를 한 장씩 따라가며 풀어 쓴 화면용 해설서는 따로 있다(guidebook/lectureNN.html).
한국어를 먼저 쓴다. 개념어는 각 장에서 처음 나올 때 지도학습(supervised learning)처럼 영어를 함께 적고, 그 뒤로는 한국어만 쓴다. 약어는 처음에 한 번 풀어 쓴 뒤 약어로 쓴다. 현장에서 영어 그대로 통용되는 용어(feature, one-hot encoding 등)는 영어로만 적었다. 용어와 기호는 책 전체에서 하나로 통일했으며, 기호는 책 끝의 「기호와 표기」에 모았다.
수식 번호는 장마다 새로 매긴다 — 식 (2.3)은 제2장의 세 번째 번호 붙은 식이다. 그림과 표도 같다.
모든 장은 홀수 쪽에서 시작한다. 한 장만 인쇄할 때는 아래 범위를 쓴다(장 앞의 빈 쪽은 범위에서 뺐다). 책 끝의 「기호와 표기」는 장마다 늘어나므로 함께 적었다.
| 장 | 제목 | 쪽 | 쪽수 |
|---|---|---|---|
| 제1장 | 지도학습의 틀 | 13–25 | 13 |
| 제2장 | 선형회귀 | 27–46 | 20 |
| 제3장 | 모형 선택 | 47–58 | 12 |
| 제4장 | 분류 | 59–81 | 23 |
| 제5장 | 과적합과 규제 | 83–100 | 18 |
| 제6장 | 결정 트리와 앙상블 | 101–137 | 37 |
| 제7장 | 서포트 벡터 머신 | 139–160 | 22 |
| 제8장 | 비지도학습 | 161–181 | 21 |
| 기호와 표기 | 183–192 | 10 |
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)은 뺐다.
| 회 | 날짜 | 강의 | 이 책의 자리 |
|---|---|---|---|
| L01 | 9/2 수 | Course Introduction | 싣지 않음 — 슬라이드 미보유 |
| 제1부 기계학습의 기초 · Part I Machine Learning Foundations | |||
| L02 | 9/14 월 | Introduction to Supervised Learning | 제1장 지도학습의 틀 — 전체(1.1–1.10) |
| L03 | 9/16 수 | Linear Regression I | 제2장 선형회귀 — 2.1–2.8 |
| L04 | 9/21 월 | Linear Regression II | 제2장 선형회귀 — 2.9–2.10 · 제3장 모형 선택 — 전체(3.1–3.6) |
| L05 | 9/23 수 | Classification I (Logistic regression) | 제4장 분류 — 4.1–4.8 |
| L06 | 9/28 월 | Classification II (Bayes Classifiers) | 제4장 분류 — 4.9–4.15 |
| Lab 1 | 9/30 수 | Machine Learning with Python | 싣지 않음 — 실습 |
| L07 | 10/7 수 | Overfitting & Regularization | 제5장 과적합과 규제 — 전체(5.1–5.11) |
| L08 | 10/12 월 | Decision Trees | 제6장 결정 트리와 앙상블 — 6.1–6.10 |
| L09 | 10/14 수 | Ensemble Methods and Boosting | 제6장 결정 트리와 앙상블 — 6.11–6.22 |
| L10 | 10/19 월 | Support Vector Machines | 제7장 서포트 벡터 머신 — 전체(7.1–7.19) |
| L11 | 10/21 수 | Unsupervised Learning | 제8장 비지도학습 — 전체(8.1–8.15) |
| Lab 2 | 10/26 월 | Regularization, Trees, Ensembles, Clustering | 싣지 않음 — 실습 |
| — | 10/28 수 | 중간고사 | 제1부(제1–8장) 범위 |
| 회 | 날짜 | 강의 | 이 책의 자리 |
|---|---|---|---|
| 제2부 딥러닝의 기초 · Part II Fundamentals of Deep Learning | |||
| L12 | 11/2 월 | Nearest Neighbors & Softmax Classifiers | 제9장 선형 분류기에서 신경망으로 — 앞부분 |
| L13 | 11/4 수 | Neural Networks | 제9장 선형 분류기에서 신경망으로 — 뒷부분 |
| L14 | 11/9 월 | Convolutional Neural Networks | 제10장 합성곱 신경망 |
| L15 | 11/11 수 | Training Neural Networks I | 제11장 신경망의 훈련 — 앞부분 |
| L16 | 11/16 월 | Training Neural Networks II | 제11장 신경망의 훈련 — 뒷부분 |
| Lab 3 | 11/18 수 | PyTorch & NN Basics | 싣지 않음 — 실습 |
| L17 | 11/23 월 | Sequential Data & RNN I | 제12장 순차 데이터와 순환 신경망 — 앞부분 |
| L18 | 11/25 수 | RNN II (LSTM, Seq2seq) | 제12장 순차 데이터와 순환 신경망 — 뒷부분 |
| L19 | 11/30 월 | Attention & Transformers I | 제13장 attention과 Transformer — 앞부분 |
| L20 | 12/2 수 | Transformers II | 제13장 attention과 Transformer — 뒷부분 |
| Lab 4 | 12/7 월 | Attention & Transformers | 싣지 않음 — 실습 |
| — | 12/14 월 | 기말고사 | 제2부(제9–13장) 범위 |
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부가 그대로 물려받는다.
중간고사(10/28) 범위
The Supervised Learning Framework
데이터로부터 배운다는 것을 정확히 말하면 무엇이고, 잘 배웠는지는 무엇으로 재는가? 이 장은 지도학습(supervised learning)을 네 단계로 세운 뒤, 한 단계씩 채워 가며 이 물음에 답한다. 잘 배웠는지는 배울 때 보지 못한 데이터에서 얼마나 틀리는지로 재며, 그 틀림이 함수를 복잡하게 할수록 줄다가 다시 느는 까닭을 밝히는 것이 장의 한가운데를 차지한다. 책의 첫 장이므로 앞 장에서 가져오는 것은 없고(확률의 기초는 안다고 보며, 기호는 책 끝의 「기호와 표기」를 따른다), 재배치도 없다. 강의 순서를 그대로 따랐고, 네 단계를 차례로 알리는 이정표 슬라이드(s15·s19·s22·s24)는 1.4–1.7절의 제목이 대신한다.
이 장의 구성
원천 Lecture 2 (2026-09-14) 슬라이드 4–39 · 읽기 ISL 2.1–2.2
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장에서 다룬다. 그때까지 이 책은 지도학습만 다룬다.
L02 s09, s39
기계학습은 데이터 기반 접근이다. 이 말을 지도학습에 맞춰 네 단계로 풀어 놓은 것이 이 책 전체의 뼈대인 지도학습 틀(supervised learning framework)이다. 강의의 예는 \(x\) 하나로 \(y\)를 맞히는 \(f(x) = ax\)다.
그림 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 모형 설계 | 문제와 데이터의 유형에 맞는 \(f\)의 형태는 무엇인가 | 1.3, 1.4, 1.10 | 제2장, 제4장, 제6–7장, 제9–10장, 제12–13장 |
| 2 목표 정의 | 「\(y \approx f(x)\)」를 어떤 양으로 재는가 | 1.5 | 2.3–2.4절, 제4장 |
| 3 훈련 | 훈련 데이터로 파라미터를 어떻게 찾는가 | 1.6 | 2.5절, 제4장, 제9장, 제11장 |
| 4 예측·평가·선택 | 처음 보는 데이터에서 얼마나 맞는가, 무엇을 고르는가 | 1.7–1.10 | 제3장, 제4장, 제5장 |
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})\)가 더 나을 것이다.
여기서 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\)를 잡으면 이 가정은 저절로 성립한다(보충).
\(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의 모의 데이터다).
그러면 이상적인 \(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)를 그대로 계산할 수는 없다. 우리가 가진 것은 \(X\)와 \(Y\)의 분포가 아니라 유한한 관측값뿐이기 때문이다. 게다가 실제 데이터에는 \(x\)가 정확히 4인 관측값이 거의 없다. 그러니 조건부 기댓값을 데이터로 추정하는 길은 두 가지다. 하나는 \(x = 4\) 근처의 관측값을 평균하는 것으로, 이 발상은 1.10절에서 분류 방법의 모습으로 다시 나온다. 다른 하나는 \(f\)의 형태를 미리 정해 두고 그 안에서 데이터에 가장 잘 맞는 것을 고르는 것이다. 다음 절에서 보듯, 이 두 길이 모형을 설계하는 두 방식에 대응한다(보충).
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절에서 다시 쓴다.
비모수 모형(non-parametric model)은 \(f\)의 함수 형태(functional form)를 명시적으로 가정하지 않는다. 대신 데이터 점에 되도록 가까우면서도 너무 거칠거나 구불구불하지 않은 \(f\)의 추정값(estimate)을 찾는다. 모수 모형에는 \(f\)를 추정하려고 고른 함수 형태가 참 \(f\)와 크게 다를 위험이 있다. 비모수 방법은 형태를 사실상 가정하지 않으므로 이 위험을 아예 피한다. 그러나 문제를 파라미터 몇 개로 줄이지 못하므로, 정확한 추정을 얻으려면 관측값이 매우 많이 필요한 경향이 있다. 표 1.2에 두 방식을 견주었다.
| 모수 모형 | 비모수 모형 | |
|---|---|---|
| 형태 가정 | 한다(예: 선형 \(f_L\)) | 명시적으로 하지 않는다 |
| 추정할 것 | 파라미터 유한 개(선형이면 \(p + 1\)개) | 함수 자체 |
| 장점 | 문제가 쉬워지고 해석하기 쉽다 | 형태를 잘못 고를 위험이 없다 |
| 대가 | 고른 형태가 참 \(f\)와 크게 다를 수 있다 | 관측값이 매우 많이 필요하다 |
| 이 장의 예 | 식 (1.3)의 선형회귀, 그림 1.3(b) | 그림 1.5의 곡면, KNN(1.10절) |
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장에서 분류 문제의 형태로 다시 나온다.
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}\)은 우리가 가진 훈련 데이터로 만든 추정이어서, 훈련 데이터가 달라지면 \(\hat{f}\)도 달라진다. 1.9절에서 이 흔들림이 분산이라는 이름을 얻는다.
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절에서 답한다.
같은 일을 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도 같은 방법으로 그렸다.
아니다. 그림 1.5(b)와 그림 1.4의 가장 유연한 모형이 보여 주듯, 훈련 데이터를 외울수록 훈련오차는 줄지만 시험오차는 오히려 커질 수 있다. 모형은 시험오차로 평가한다. 시험 데이터를 따로 확보하기 어려울 때 시험오차를 추정하는 방법은 3.5–3.6절에서 다룬다.
L02 s30–s31 · ISL 2.1.3
모형을 고를 때는 서로 당기는 기준 사이에서 균형을 잡아야 한다. 강의는 이것을 모형 선택의 세 가지 트레이드오프(trade-off)로 정리했다(표 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부의 지도인 셈이다.
어떤 feature가 중요한지 알아내는 추론이 목적이면 그림 1.6의 왼쪽 위 방법이, 예측만이 목적이면 오른쪽 아래 방법이 유리해 보인다. 그러나 과적합 때문에 예측에서도 덜 유연한 방법이 이기는 일이 흔하다.
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]\)이면 다음이 성립한다.
식 (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절에서 한다.
그림 1.7은 그림 1.4의 예시 데이터에서 세 항을 따로 계산해 그린 것이다(보충). 선형 모형은 분산이 작지만 편향이 커서 시험 MSE가 크다. 가장 유연한 모형은 편향이 거의 0이지만 분산이 커서 시험 MSE가 다시 커진다. 두 효과가 맞물리는 중간에서 시험 MSE가 가장 작다. 이것이 U자의 이유다.
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.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, KNN)이다. 질의(query) 이미지가 들어오면 레이블이 붙은 훈련 데이터에서 그것과 가장 비슷한 이미지 \(K\)개를 찾아 그 레이블을 쓴다. 무엇을 비슷하다고 볼지, 곧 유사도(similarity)를 어떻게 잴지는 여기서 정하지 않는다.
이를 확률의 말로 적으면 다음과 같다.
\(\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은 이 「근처의 평균」을 클래스의 비율로 바꾼 것이다(보충).
KNN은 비모수 모형(1.4절)의 좋은 예다. 훈련 데이터를 모두 기억해 두었다가 질의마다 그 데이터에서 직접 답을 낼 뿐, 선형회귀처럼 모수 모형을 적합하지 않는다. 그래서 형태를 잘못 가정할 위험은 없지만 관측값이 많이 필요하다는 비모수 모형의 대가도 그대로 진다(보충). \(K\)를 어떻게 정하는지는 3.5절에서 다루고, KNN과 이미지 분류는 제9장에서 다시 만난다.
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절로 보냈다.
이 장의 구성
원천 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에서 왔다.
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장을 맺는다).
| 질문 | 답하는 곳 |
|---|---|
| 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 |
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\)은 그것을 데이터로 어림한 값이다. 이 구분이 이 장 전체의 표기 약속이다.
\(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\)는 적합한 직선에서 관측값이 벗어난 양이라 데이터에서 계산된다.
여기서 \(\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)\)를 지나게 만드는 값이다.
RSS를 \(\hat\beta_0\)와 \(\hat\beta_1\)의 함수로 보고, 각각에 대한 편미분(partial derivative)을 0으로 놓는 1계 조건(first-order condition)을 푼다.
(보충) 1계 조건을 만족하는 점이 최소인 까닭은 이렇다. RSS는 \((\hat\beta_0, \hat\beta_1)\)에 대한 이차식이고, \(x_i\)가 모두 같지만 않으면(\(\sum_i (x_i - \bar x)^2 \gt 0\)) 위로 열린 그릇 모양이라 바닥이 한 점뿐이다. 2.5절에서 행렬로 다시 확인한다.
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절에서 세우는 가정이 바로 이 점에서 어긋난다.
L03 s11 · ISL 3.1.3
최소제곱 직선은 어떤 데이터에서든 하나 나온다. 그 직선이 데이터에 얼마나 잘 맞는지는 따로 재야 한다. 잣대는 두 종류다. 하나는 잔차의 크기를 \(y\)의 단위로 재고, 다른 하나는 \(y\)의 흩어짐 가운데 설명한 비율을 잰다.
잔차표준오차(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}} $$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로 답한다.
L03 s15–s24
지금까지는 선형 모형을 데이터에 맞추는 데 최소제곱법을 그냥 적용했을 뿐, 왜 그 방법인지는 설명하지 않았다. 일반적으로 원하는 것은 \(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절에서 나온다.
확률변수(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절에서 한다.
가능도(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)도 피한다.
함수는 극대(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장에서 다룬다.
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\)가 되도록 한 줄로 쓴 것이다.
MLE는 표본에서 1이 나온 비율이다. 동전을 던져 앞면이 나온 비율로 앞면이 나올 확률을 어림하는 직관과 같다. 표본이 모두 0이거나 모두 1이면 정류점이 \(0 \lt \theta \lt 1\) 안에 없고 MLE는 경계값 0 또는 1이 되는데, 식 (2.9)는 이때도 맞는다.
연속형의 예로 정규분포(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절에서 이름을 붙인다.
\(\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계 조건을 손으로 풀 수 없어서, 정류점을 찾는 일을 수치적 방법에 맡긴다.
L03 s34 (앞당김), s26–s28 · ISL 3.2.1
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\)로 쓴다.
선형회귀의 기본 가정은 \(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\)가 커질수록 퍼짐이 커지는 데이터는 이 둘째 가정을 어긴다.
식 (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} $$평균이 선형이고(\(\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)\))과 분모가 다르다.
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).
RSS를 \(\bbeta\)로 미분해 0으로 놓는다. 이 계산을 행렬 미분(matrix derivative)으로 한 번에 한다.
슬라이드는 곱의 미분법으로 두 인자를 차례로 미분해 \(-\bX^\top(\by - \bX\bbeta) - (\by - \bX\bbeta)^\top\bX\)를 얻는다. 둘째 항은 첫째 항의 전치라서 gradient를 열벡터로 맞춰 적으면 같은 벡터가 되고, 합하면 위의 \(-2\bX^\top(\by - \bX\bbeta)\)다.
이 연립방정식을 정규방정식(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절에서 말한 닫힌 형태의 해가 이것이다.
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절의 판정을 최소화 쪽으로 뒤집은 것이다.
적합한 \(\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\)으로 적었다.
L03 s36–s39
2.5절까지로 추정하는 법은 갖추었다. 이제 그 추정이 얼마나 좋은지 묻는다. 추정량 \(\hat\theta = \hat\theta(x_1, \dots, x_n)\)은 데이터의 함수다. 데이터가 확률적으로 뽑히므로 \(\hat\theta\)도 확률변수이고, 같은 방식으로 표본을 거듭 뽑을 때마다 다른 값을 낸다. 그 값들의 분포를 \(\hat\theta\)의 표본분포(sampling distribution)라 한다. 좋은 추정량이란 표본분포의 중심이 참값(true value)에 있고 퍼짐이 작은 것이다(그림 2.6).
슬라이드는 추정량 2를 「inconsistent estimator」라 하고, 좋은 추정량을 「consistent (low variance) and unbiased」라 했다. 여기서 consistent는 「분산이 작은」이라는 뜻으로 쓴 것이다. 통계학에서 일치성(consistency)은 표본 크기 \(n \to \infty\)일 때 추정량이 참값으로 확률수렴하는 성질이며, 분산이 작다는 것과 다른 개념이다. 이 책은 슬라이드의 뜻대로 「분산이 작은(큰)」으로 옮긴다.
추정량 \(\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\)을 평균적으로 조금 작게 잡는다는 것은 이제 그것이 편향 추정량이라는 말로 바꿔 쓸 수 있다. 이 셋 사이에는 간단한 관계가 있다.
\(\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\)뿐이다.
시험점 \(\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)\) 세 곡선으로 갈라지는 까닭이 여기 있다.
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에서 \(\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)\)이다.
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으로 간다.
최소제곱 추정량은 불편이다. 그렇다면 불편추정량 가운데 가장 좋은가? 이에 답하는 것이 가우스-마르코프 정리(Gauss–Markov theorem)다. 슬라이드는 「MLE가 최량 불편추정량(best unbiased estimator)이다. 곧 MLE보다 분산이 작은 다른 추정량은 없다」고 요약했는데, 정확히는 두 진술을 합친 것이다.
계수 하나 \(\hat\beta_j\)의 분산만 보려면 \(\mathbf{a}\)를 \(j\)번째 성분만 1인 벡터로 두면 된다. 정리가 말하는 것은 불편추정량들 사이의 순위뿐이다. 편향을 조금 허용하는 대신 분산을 크게 줄이는 추정량은 MSE(식 (2.17))로는 최소제곱 추정량보다 나을 수 있다. 특히 다음 절에서 보듯 식 (2.19)의 분산이 매우 커지는 경우가 있는데, 이때 계수를 작게 눌러 분산을 줄이는 규제(regularization)가 제5장의 주제다.
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배다.
| 계수 | 추정값 | |
|---|---|---|
Intercept | \(\hat\beta_0\) | 2.939 |
TV | \(\hat\beta_1\) | 0.046 |
radio | \(\hat\beta_2\) | 0.189 |
newspaper | \(\hat\beta_3\) | −0.001 |
TV | radio | newspaper | sales | |
|---|---|---|---|---|
TV | 1.0000 | 0.0548 | 0.0567 | 0.7822 |
radio | 1.0000 | 0.3541 | 0.5762 | |
newspaper | 1.0000 | 0.2283 | ||
sales | 1.0000 |
표 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\)가 어떻게 변할지는 말해 주지 않는다.
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로 된 수치 열로 바꾼다.
주택 소유 여부 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달러로 추정된다.
범주형 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)이라 한다.
| 모형 | 계수 | |
|---|---|---|
| own (2.21) | Intercept | 509.80 |
own[Yes] | 19.73 | |
| region (2.22) | Intercept | 531.00 |
region[South] | −18.69 | |
region[West] | −12.50 |
표 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이다. 변수가 가질 수 있는 값마다 이진 변수를 하나씩 두고, 그중 정확히 하나만 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한 예다.
| Team | Points | Team_A | Team_B | Team_C | Points |
|---|---|---|---|---|---|
| A | 25 | 1 | 0 | 0 | 25 |
| A | 12 | 1 | 0 | 0 | 12 |
| B | 15 | 0 | 1 | 0 | 15 |
| B | 14 | 0 | 1 | 0 | 14 |
| B | 19 | 0 | 1 | 0 | 19 |
| B | 23 | 0 | 1 | 0 | 23 |
| C | 25 | 0 | 0 | 1 | 25 |
| C | 29 | 0 | 0 | 1 | 29 |
one-hot encoding은 수준 수만큼 열을 만들고, 가변수 코딩은 하나 적게 만든다. 절편이 있는 선형회귀에 one-hot 열을 그대로 넣으면 세 열의 합이 절편 열과 같아져 위에서 본 문제가 생긴다. 그래서 선형회귀에서는 한 열을 빼거나(그러면 가변수 코딩이 된다) 절편을 뺀다. 두 방식이 담는 정보는 같고, 차이는 절편과 함께 쓰느냐에 있다.
그럼에도 one-hot encoding이라는 이름을 여기서 익혀 둘 까닭이 있다. 분류(classification) 문제에서는 정답을 one-hot 벡터로 나타내 softmax가 내놓는 확률과 맞대고(제4장·제9장), 단어처럼 수준이 아주 많은 범주는 one-hot으로 적은 다음 embedding으로 바꾼다(제12장).
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)이다.
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\)에 따라 변한다.
| 계수 | 추정값 | |
|---|---|---|
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\)의 여덟 배가 넘는다.
이로써 표 2.1의 남은 두 질문에 답할 수 있다. 다섯째 질문(관계는 선형인가)에는 가법 선형 모형으로는 모자란다고 답한다. 그 잔차에 체계적인 무늬가 남기 때문이다(ISL 그림 3.5). 여섯째 질문(매체 사이에 시너지가 있는가)에는 TV와 Radio 사이에 시너지가 있다고 답한다. 상호작용 항 하나를 넣자 \(R^2\)이 89.7%에서 96.8%로 올랐다.
상호작용 항의 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\)는 거기에 흡수되어 적합이 달라지지 않지만, 없으면 상호작용 계수의 뜻이 변수의 원점에 따라 달라진다.
곱할 수 있는 것은 서로 다른 두 변수만이 아니다. 같은 변수를 여러 번 곱할 수도 있다. 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차 계수가 양수라 적합 곡선은 위로 열린 포물선이다.
5차 곡선의 양 끝 요동은 차수를 높인다고 늘 좋은 것이 아님을 보여 준다. 훈련 데이터에는 더 잘 맞지만, 관측값이 드문 곳에서 데이터의 우연한 굴곡까지 따라가는 것은 1.7절의 과적합(overfitting)의 조짐이다. 차수 같은 선택을 데이터로 정하는 법은 3.5절의 검증 데이터(validation set)가, 요동 자체를 억누르는 법은 제5장이 다룬다.
이 장의 뒤 절반에서 \(\bX\)의 열은 얼마든지 늘릴 수 있게 되었다. 가변수, 상호작용 항, 거듭제곱 항을 넣어도 모형은 계수에 대해 선형이고 식 (2.16) 하나로 적합한다. 그렇다면 무엇을 남길 것인가? 열이 늘수록 2.5절의 가역 조건이 깨질 위험, 2.8절의 공선성, 그리고 방금 본 과적합이 함께 커진다. 이 질문이 다음 장의 출발점이다.
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절이 그 물음에 답하는, 강의의 질문과 답의 짜임을 살렸다.
이 장의 구성
원천 Lecture 4 (2026-09-21) 슬라이드 20–41 · 읽기 ISL 3.2.2, 5.1, 6.1
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을 다룬다. 먼저 왜 골라야 하는지부터 본다.
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절에서 다시 만난다.
슬라이드는 이어서 묻는다. 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 때문에 선택 결과가 갈리는 것을 보게 된다.
ISL 3.2.2의 물음을 조금 바꾼 다음 셋이 이 장의 출발점이다.
ISL은 첫째 물음에 F-검정(F-test)으로, 셋째 물음에 결정계수(coefficient of determination) \(R^2\)처럼 적합도(goodness of fit)를 재는 값으로 답한다. 이 강의는 그 길 대신 부분집합을 직접 고르는 알고리즘 쪽으로 간다. 부분집합을 고르면 좋은 이유는 셋이다.
세 이유는 1.8절에서 모형 선택(model selection)의 트레이드오프(trade-off) 가운데 하나로 든 간결성을 구체적으로 풀어 쓴 것이다. 모든 변수를 쓰는 블랙박스(black box) 모형보다 적은 변수로 된 단순한 모형을 흔히 더 낫게 여긴다는 것이었다. 이 장의 나머지는 그 선호를 계산할 수 있는 절차로 바꾸는 일이다.
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\)개인 모형 가운데 가장 좋은 것을 가리킨다.
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단계는 사정이 다르다.
크기별 최선 모형의 훈련 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절의 출발점이다.
첫째는 계산량(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)이 늘면 살펴야 할 공간이 지수적으로 넓어진다」는 한 뿌리에서 나온다.
L04 s27–s31 · ISL 6.1.2
단계적 선택(stepwise selection)은 모형을 한 번에 feature 하나씩만 바꿔 가며 훨씬 적은 모형을 살펴본다. 전진 단계적 선택(forward stepwise selection)은 feature가 없는 모형에서 출발해 feature를 하나씩 더한다. 단계마다 적합을 가장 크게 개선하는 feature를 더하고, 모든 feature가 들어갈 때까지 계속한다.
최적 부분집합 선택과 다른 곳은 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가 바닥나면 멈추는 절차다.
대신 계산량이 크게 준다. 영모형 하나에 더해 \(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절)을 함께 담은 모형이 된다.
| feature 수 | 최적 부분집합 선택 | 전진 단계적 선택 |
|---|---|---|
| 1 | rating | rating |
| 2 | rating, income | rating, income |
| 3 | rating, income, student | rating, income, student |
| 4 | cards, income, student, limit | rating, income, student, limit |
후진 단계적 선택(backward stepwise selection)은 그 거울상이다. feature \(p\)개를 모두 담은 완전 모형(full model)에서 출발해, 가장 덜 쓸모 있는 feature를 한 번에 하나씩 뺀다.
후진 단계적 선택도 \(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은 둘을 섞은 방식도 소개한다. 전진 단계적 선택처럼 feature를 하나씩 더하되, 새 feature를 더할 때마다 더 이상 적합을 개선하지 않는 feature가 있으면 뺀다. 한번 뽑힌 feature를 뺄 수 있게 해서 최적 부분집합 선택에 더 가까이 다가가면서도, 계산량은 단계적 선택 수준으로 묶어 두려는 것이다.
L04 s32–s34
단계적 선택은 feature를 고정하되 계수는 다시 적합했다. 전진 stagewise 선택은 한 걸음 더 나아가 앞 단계에서 적합한 계수까지 고정한다. 단계마다 feature 하나를 더하되 그 feature의 계수 하나만 적합한다. 대신 같은 feature를 여러 번 뽑을 수 있게 해서, 앞서 적합한 계수를 나중에 보정할 길을 열어 둔다.
여기서 \(\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\)다.
그림 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)으로 기울기만 맞추기 때문이다. 고정하고 거듭 뽑는 방식으로 다시 적합한 결과에 다가갈 수는 있어도, 그 결과와 같아진다는 보장은 없다.
세 방법은 얼마나 탐욕적인가로 줄 세울 수 있다. 탐욕 알고리즘(greedy algorithm)은 단계마다 그 자리에서 가장 좋아 보이는 선택을 하고, 한번 내린 결정을 되돌리지 않는 알고리즘이다. 단계적 선택은 한번 더한 feature를 뺄 수 없다는 점에서 탐욕적이지만, 각 feature의 계수는 바뀔 수 있다. stagewise 선택은 한번 적합한 계수조차 바꿀 수 없다는 점에서 더 탐욕적이고, 보정할 길을 열어 두려고 같은 feature를 거듭 더할 수 있게 한다. 최적 부분집합 선택은 크기마다 처음부터 다시 찾으므로 탐욕적이지 않다. 탐욕적일수록 한 단계의 계산은 싸지지만, 가장 좋은 모형에 이른다는 보장은 약해진다. 표 3.2가 이 비교를 모은 것이다. stagewise처럼 앞의 적합을 고정한 채 잔차에 작은 보정을 거듭 쌓아 가는 발상은 제6장에서 다룰 boosting에서 다시 만난다.
| 최적 부분집합 | 단계적(전진·후진) | 전진 stagewise | |
|---|---|---|---|
| 앞서 고른 feature | 크기마다 새로 고른다 | 유지한다(후진은 뺀 채로 둔다) | 유지한다 |
| 앞서 적합한 계수 | 모두 다시 적합 | 모두 다시 적합 | 고정, 새 계수 하나만 적합 |
| 같은 feature 다시 뽑기 | — | 하지 않는다 | 허용한다 |
| 후보 하나의 적합 | 최소제곱 전체 | 최소제곱 전체 | 계수 하나, 식 (3.3) |
| 적합하는 모형 수 | \(2^p\) | \(1 + p(p+1)/2\) | \(1 + pT\) |
| 크기별 최선 보장 | 있다(훈련 RSS 기준) | 없다 | 없다 |
L04 s36–s39 · ISL 5.1.1, 6.1.3
세 알고리즘이 모두 비워 둔 마지막 단계로 돌아가자. \(\mathcal{M}_0, \dots, \mathcal{M}_p\) 가운데 어느 것이 가장 좋은가? RSS가 가장 작은 것, \(R^2\)가 가장 큰 것이라고 답하고 싶지만, 훈련 데이터에서 잰 이 값들로는 답할 수 없다. feature를 모두 담은 모형이 언제나 RSS가 가장 작고 \(R^2\)가 가장 크기 때문이다.
feature 집합 \(S \subset S'\)이면, \(S'\)로 적합한 모형의 훈련 RSS는 \(S\)로 적합한 모형의 훈련 RSS보다 크지 않다. 따라서 \(R^2\)는 줄지 않는다.
슬라이드의 말로는 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 수가 다른 모형들 가운데서 고르는 데 알맞지 않다. 시험오차를 추정할 다른 데이터가 필요하다.
모형 평가(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)에 필요한 값도 훈련 부분에서만 계산한다.
많은 기계학습(machine learning) 모형에는 훈련을 시작하기 전에 정해 두어야 하는 값이 있다.
훈련이 데이터에서 추정하는 파라미터(parameter), 예컨대 선형회귀(linear regression)의 계수와 달리, 훈련을 시작하기 전에 정해 두는 값을 하이퍼파라미터라 한다. 두 가지가 있다.
하이퍼파라미터 가운데 일부는 직관으로 정할 수 있지만, 데이터로 정하는 쪽이 대개 더 낫다. 방법은 모형 훈련과 똑같다. 하이퍼파라미터 조합마다 모형을 훈련하고 평가해서 가장 좋은 것을 고른다. 이 평가에도 훈련 중에 보지 않은 관측값이 필요하다. 이유는 앞과 같다. 훈련에 쓴 데이터로 평가하면 가장 복잡한 후보가 늘 이긴다. 그렇다고 시험 데이터를 쓸 수는 없다. 시험 데이터는 실제 시험 말고는 쓰지 않는다. 그래서 훈련 데이터의 일부를 다시 떼어 검증 데이터(validation set)로 두고, 하이퍼파라미터는 이것으로 고른다.
3.2–3.4절의 3단계가 바로 이 일이다. 모형 크기 \(k\)(stagewise라면 \(T\))를 하이퍼파라미터로 본다. 훈련 부분만으로 선택 알고리즘을 돌려 후보 \(\mathcal{M}_0, \dots, \mathcal{M}_p\)를 만들고, 검증 데이터에서 오차가 가장 작은 크기 \(k\)를 고른다. 고른 \(k\)로는 아래 다섯 단계의 4단계에서 훈련 데이터와 검증 데이터 전체에 선택과 적합을 다시 한다.
데이터를 훈련·검증·시험의 세 부분으로 나눠 하이퍼파라미터를 고르고 최종 성능을 재는 표준 절차는 다섯 단계다(그림 3.5).
시험 데이터는 4단계가 끝날 때까지 쓰지 않는다. 4단계에서 검증 데이터까지 합쳐 다시 훈련하는 것은, 하이퍼파라미터가 정해진 뒤에는 검증 데이터를 따로 둘 까닭이 없으므로 가진 데이터를 최대한 쓰려는 것이다. 5단계의 시험오차가 이 모형의 성능으로 보고할 값이다. 학습률 같은 학습 하이퍼파라미터도 제4장부터 이 절차로 고르고, 제11장의 학습률 스케줄링(learning rate scheduling)에서 다시 다룬다.
슬라이드는 이 절차에 「Cross Validation」이라는 제목을 달았지만, 한 번 나눈 검증 데이터로 고르는 이 방법은 엄밀히 말해 검증 데이터 방법(validation set approach)이다(ISL 5.1.1). 나누기를 되풀이하는 교차검증(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로 나눈다. 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로 나누는 것은 3.5절의 훈련 데이터와 검증 데이터를 합친 부분이다. 시험 데이터는 여전히 따로 떼어 두고, 교차검증으로 하이퍼파라미터를 고른 뒤 다섯 단계의 4–5단계를 그대로 밟는다. 3.5절의 누수 주의도 fold마다 그대로 적용된다. fold를 나누기 전에 전체 데이터로 feature를 골라 두면, 검증 fold의 정보가 이미 훈련에 들어간 것이다.
그림 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)으로 잰 패널도 있는데, 슬라이드는 이를 뺐다.
그림 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) 정도도 이렇게 교차검증으로 고른다.
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절로 옮겼다.
이 장의 구성
원천 Lecture 5 (2026-09-23) 슬라이드 3–38 · Lecture 6 (2026-09-28) 슬라이드 3–39 · 읽기 ISL 4.1–4.5
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)으로 확률을 추정한다.
이 장의 예제는 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 데이터의 변수와 이름만 같다.
가장 쉬운 방법부터 보자. 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)가 하나뿐인 직선이 따라가지 못한다.
슬라이드는 이진 반응의 선형회귀가 분류기로서 쓸 만하고 선형판별분석(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절에서 세운다.
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 근처로 보내는 함수가 필요하다.
\(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\)이다.
레이블 \(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가 하나면 점, 둘이면 직선이다.
식 (4.3)을 뒤집으면 모형의 다른 얼굴이 보인다. 사건이 일어날 확률 \(\theta\)에 대해 \(\theta/(1 - \theta)\)를 오즈(odds)라 하고, 그 로그를 로그 오즈(log odds)라 한다. 2.3절의 베르누이 분포처럼 양성 확률을 \(\theta = p(y = +1 \mid \bx)\)로 적고 \(s = \bbeta^\top\bx\)라 두자.
로지스틱 회귀는 로그 오즈가 입력에 선형인 모형이다. 확률은 입력에 대해 S자로 굽지만 로그 오즈로 바꾸면 선형이 된다. feature가 여럿인 경우를 ISL은 다중 로지스틱 회귀(multiple logistic regression)라 부르는데(ISL 4.3.4), 처음부터 벡터로 적었으므로 식 (4.2)–(4.5)는 \(p\)가 몇이든 그대로이고 파라미터는 절편을 포함해 \(p + 1\)개다. 슬라이드도 「\(\bx\)와 \(\bbeta\)가 \((p+1)\)차원일 뿐 기본 꼴은 그대로다」라고 정리한다. 뒤 절들의 유도도 모두 이 벡터 꼴로 한다.
L05 s13–s14 · ISL 4.3.1–4.3.4
Default 데이터에서 feature가 잔고 \(x\) 하나일 때 점수는 \(\beta_0 + \beta_1 x\)이고, 추정한 계수는 표 4.1과 같다. 계수를 추정하는 방법은 4.4절에서 보고, 여기서는 읽는 법을 본다.
| 추정값 | |
|---|---|
| 절편 \(\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 오른다).
슬라이드는 \(e^{s}/(1 + e^{s})\) 꼴로 계산하는데, 분자와 분모를 \(e^{s}\)로 나누면 \(\sigma(s)\)와 같다.
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)이 있으면 이 조건이 결과를 바꾼다.
Default 데이터에서 학생 여부 하나만 넣으면 student[Yes]의 계수가 0.4049로 학생이 더 연체하는 것처럼 보이지만(ISL 표 4.2), 잔고·소득과 함께 넣으면 −0.6468로 같은 잔고·소득이라면 학생이 덜 연체한다(ISL 표 4.3). 학생은 대체로 잔고가 크고 잔고가 크면 연체하기 쉬워서, 잔고를 고정하지 않은 비교에는 잔고의 효과가 섞여 든다.
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)을 세운다.
\(\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장에서 다룬다.
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을 견주어도 같은 답이다.
기계학습(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 정보를 쓰지 않는다. 다음 절이 그 정보를 쓴다.
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).
로지스틱 회귀에서는 \(\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\)이면 거리가 매번 커져 발산한다. 학습률이 너무 작으면 느리고 너무 크면 바닥을 지나쳐 튀어 나간다.
슬라이드는 세 가지 문제를 든다. 첫째, 손실 곡면이 볼록하지 않을 수 있다. 골과 봉우리가 여럿이면 주변에서만 가장 낮은 극값(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).
셋째, 느리다. 한 번 갱신할 때마다 모든 관측값의 gradient를 계산해 더하므로, 관측값이 수백만 개면 한 걸음의 계산량(computational cost)이 매우 크다. 이 문제를 다음 절이 푼다.
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\)번의 갱신이다.
슬라이드는 이 과정을 1.2절의 네 단계로 다시 정리한다. 3단계가 한 번에 푸는 일에서 되풀이하는 훈련 루프(training loop)로 바뀐다(그림 4.7). 훈련 관측값을 모형에 넣어 예측하고(3-1), 예측을 정답 레이블(ground truth label)과 비교해 지금 얼마나 틀렸는지 재고(3-2), 그 손실로 파라미터를 고친다(3-3). 대부분의 훈련 데이터에서 예측이 정답에 가까워질 때까지 이를 되풀이한다. 비교하는 규칙이 손실함수이고 로지스틱 회귀에서는 로그 손실이며, 되풀이해 손실을 줄이는 일이 최적화로서 닫힌 해가 없으면 경사하강법이나 SGD를 쓴다. 표 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 loss)이 갱신을 거듭하며 약 4.6에서 0.35 근처까지 내려가는데, 원래 값은 위아래로 들쭉날쭉하다. 파라미터를 미니배치로만 갱신하고 그림에 찍힌 손실도 그 미니배치에서 잰 값이기 때문이다. 그림 4.8이 예시 데이터로 같은 모습을 재현한다. 미니배치에서 잰 손실은 크게 요동하지만, 전체 데이터의 손실은 갱신 횟수로 견주면 배치 경사하강법과 거의 같은 속도로 내려간다. 그런데 SGD의 갱신 한 번은 관측값 2,000개가 아니라 32개로 계산하므로 계산량이 약 1/60이다(보충). 언제 멈출지 묻는 슬라이드에 발표자 노트는 「안정될 때이지만 정의하기 어렵고 휴리스틱(heuristic)에 기댄다」고 답한다. 훈련 손실만으로는 과적합(overfitting)을 알 수 없으므로, 실제로는 3.5절의 검증 데이터에서 잰 손실이 더 줄지 않을 때 멈춘다. 이것이 제5장의 조기 종료(early stopping)다.
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\)에 대해 분자와 분모에 같은 수를 곱한다.
두 확률의 분모가 같아지고 분모는 두 분자의 합이다. 여기서 \(\bbeta/2\)와 \(-\bbeta/2\)를 각각 \(\bbeta_{+1}\), \(\bbeta_{-1}\)로 부르면(슬라이드의 \(\beta_1'\), \(\beta_{-1}'\)) 클래스 \(k\)의 확률은 \(e^{\bbeta_k^\top\bx}\)를 모든 클래스에 대해 더한 값으로 나눈 것이 된다. 각 클래스가 자기 파라미터 벡터를 하나씩 가지므로, 이 꼴은 클래스가 몇 개든 그대로 쓸 수 있다.
클래스 \(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가 계산의 예다.
두 성질을 덧붙인다(보충). 첫째, 클래스가 둘이면 \(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 분류기가 이 손실을 그대로 쓴다.
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)이고, 곡선이 겹친 꼬리가 어떤 분류기로도 피할 수 없는 오류다.
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.18)의 로그를 풀면 \(\log(\pi_1/\pi_{-1})\)이라는 같은 양이 모든 입력에 더해지므로, 사전확률은 경계를 사전확률이 작은 클래스 쪽으로 민다(그림 4.10). 드문 클래스로 분류하려면 그만큼 강한 증거가 필요하다는 뜻이다.
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)에 넣는다.
부호 안은 \(x\)의 이차식이다. \(x^2\)의 계수가 \(1/(2\sigma_{-1}^2) - 1/(2\sigma_1^2)\)이라, 두 분산이 다르면 이 항이 남는다.
이제 두 평균과 두 분산을 데이터로 추정한다. 레이블이 주어졌을 때 입력의 로그가능도는 두 클래스의 합으로 갈린다.
$$\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\)이다.
두 클래스의 분산이 같다고, 곧 \(\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).
분산을 클래스마다 따로 두면 식 (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가 낫다.
L06 s18–s23 · ISL 4.4.2
feature가 \(p\)개면 각 클래스의 입력이 다변량 정규분포(multivariate normal distribution)를 따른다고 둔다(슬라이드는 입력 차원을 \(d\)로 적었다).
\(\boldsymbol\mu\)는 \(p\)차원 평균 벡터, \(\boldsymbol\Sigma\)는 \(p \times p\) 공분산행렬이다. 대각 성분은 각 feature의 분산, \((j, j')\) 성분은 \(X_j\)와 \(X_{j'}\)의 공분산(covariance)이라 대칭이다. \(\lvert\boldsymbol\Sigma\rvert\)는 행렬식(determinant)이다.
\(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차원 그림과 등고선 그림은 두 클래스의 밀도 언덕을 한 그림에 겹쳐 그린 것이다.
LDA는 모든 클래스가 공분산행렬 \(\boldsymbol\Sigma\)를 함께 쓴다고 가정한다. 사전확률을 곱한 밀도의 로그를 펼쳐 보자(보충).
를 클래스 \(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절).
슬라이드의 예(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) 차이를 무시하므로, 데이터의 타원이 기울어 있으면 경계가 어긋난다.
L06 s24–s25 · ISL 4.4, 4.5.1
사후확률을 곧바로 추정하는 로지스틱 회귀가 있는데 왜 판별분석을 쓰는가. 슬라이드는 세 가지 이유를 든다(ISL 4.4).
두 방법은 생각보다 가깝다. 두 클래스의 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)에서 본 대로 「선형」은 계수에 대한 말이기 때문이다.
L06 s33–s39 (앞당김) · ISL 4.4.4
생성 분류기는 클래스별 입력 분포 \(p(\bx \mid y = k)\)를 어떻게 모형화하느냐로 갈린다. 판별분석이 다변량 정규분포를 썼다면, 나이브 베이즈는 조건부 독립(conditional independence)을 가정한다.
레이블이 주어지면 입력의 성분들이 서로 독립이라고 본다(슬라이드는 입력 차원을 \(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).
슬라이드의 예제는 날씨 조건 넷과 그날 골프를 쳤는지를 적은 14일 치 Weather 데이터다(표 4.3). 사전확률은 Play Golf의 비율(9/14, 5/14)이고, 모든 feature가 범주형이라 각 조건부 확률은 클래스 안의 빈도로 추정한다. 클래스별 빈도를 센 빈도표(frequency table)를 그 클래스의 날 수로 나누면 가능도표(likelihood table)가 된다(표 4.4).
| Outlook | Temp | Humidity | Windy | Play Golf |
|---|---|---|---|---|
| Rainy | Hot | High | False | No |
| Rainy | Hot | High | True | No |
| Overcast | Hot | High | False | Yes |
| Sunny | Mild | High | False | Yes |
| Sunny | Cool | Normal | False | Yes |
| Sunny | Cool | Normal | True | No |
| Overcast | Cool | Normal | True | Yes |
| Rainy | Mild | High | False | No |
| Rainy | Cool | Normal | False | Yes |
| Sunny | Mild | Normal | False | Yes |
| Rainy | Mild | Normal | True | Yes |
| Overcast | Mild | High | True | Yes |
| Overcast | Hot | Normal | False | Yes |
| Sunny | Mild | High | True | No |
| feature | 값 | Yes (9일) | No (5일) |
|---|---|---|---|
| Outlook | Sunny · Overcast · Rainy | 3/9 · 4/9 · 2/9 | 2/5 · 0/5 · 3/5 |
| Temp | Hot · Mild · Cool | 2/9 · 4/9 · 3/9 | 2/5 · 2/5 · 1/5 |
| Humidity | High · Normal | 3/9 · 6/9 | 4/5 · 1/5 |
| Windy | False · True | 6/9 · 3/9 | 2/5 · 3/5 |
입력이 {Sunny, Hot, High, False}일 때 두 클래스의 \(\pi_k\prod_j p(x_j \mid y = k)\)를 표 4.4로 계산한다.
슬라이드는 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을 만나면 합이 무한대로 튀는 것이 앞의 영빈도 문제다.
| 로지스틱 회귀 | LDA | QDA | 나이브 베이즈 | |
|---|---|---|---|---|
| 전략 | 판별 | 생성 | 생성 | 생성 |
| \(p(\bx \mid y = k)\) | 다루지 않음 | 정규분포, 공분산 공유 | 정규분포, 클래스별 공분산 | 성분끼리 독립 |
| 로그 오즈 | 일차식 | 일차식 | 이차식 | 성분별 함수의 합 |
| 훈련 | 경사하강법(4.6절) | 평균·공분산·비율 | 평균·공분산·비율 | 빈도·비율 |
L06 s28–s31 (뒤로) · ISL 4.4.2
분류기를 세웠으면 1.2절의 넷째 단계로 넘어가 분류기가 얼마나 좋은지 재야 한다. 4.1절의 Default 데이터(그림 4.1)에 잔고와 학생 여부로 LDA를 맞추고 그 예측을 실제 연체 여부와 대조한 것이 표 4.6이다. 예측한 클래스와 실제 클래스를 교차해 센 이런 표를 혼동행렬(confusion matrix)이라 한다(슬라이드에는 이름이 없다).
| 실제 No | 실제 Yes | 합 | |
|---|---|---|---|
| 예측 No | 9,644 | 252 | 9,896 |
| 예측 Yes | 23 | 81 | 104 |
| 합 | 9,667 | 333 | 10,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)다.
표 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\)를 낮추는 쪽을 「더 보수적」이라 한 것은 조금만 의심스러워도 연체로 보고 대비한다는 뜻이다.
어느 \(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\)다. 임곗값을 고르는 일은 결국 손실을 고르는 일이다.
그러니 임곗값 하나에서 잰 지표(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 − 참 양성률로 세로축에 들어 있다.
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절로 옮겼다.
이 장의 구성
원천 Lecture 7 (2026-10-07) 슬라이드 3–39 · 읽기 ISL 6.2
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) 구간이고, 검증 손실이 가장 낮은 때부터가 과적합 구간이다.
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을 향해 내려간다. 오른쪽 구간의 과적합은 이 발산과 함께 깊어진다.
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)에 쓴 것이다.
그림 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에서 왼쪽 구간이 덜 훈련한 과소적합, 오른쪽 구간이 과적합이고, 그 사이에서 검증 손실이 평평한 곳이 멈추기에 알맞다(보충). 그러면 두 질문이 남는다.
과소적합과 과적합이라는 말을 그림 5.2에서는 모형 용량의 문제로, 그림 5.1에서는 훈련을 얼마나 오래 했느냐의 문제로 썼다. 두 질문이 이 두 축에 하나씩 대응한다. 1.2절의 네 단계로 말하면 첫째 질문은 3단계(훈련)를 언제 끝내느냐이고, 둘째 질문에 답할 규제는 목적함수(objective function)에 벌점을 더해 2단계(목표)를 바꾼다. 멈출 때와 규제의 세기는 둘 다 4단계의 검증(3.5–3.6절)으로 고른다(보충).
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이라, 어느 지표로 멈추느냐에 따라서도 멈출 때가 다르다.
조기 종료는 갱신 횟수를 하이퍼파라미터로 보고 검증 데이터로 고르는 일이다(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와 이어진다고 알려져 있다(두 강의 전이라 예고만 한다).
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로는 최소제곱 추정량보다 나을 수 있다」고 예고했다. 축소 방법이 그 추정량이다.
L07 s21–s22, s26–s28 (앞당김) · ISL 6.2.1
최소제곱법(least squares)은 잔차제곱합(residual sum of squares, RSS)을 가장 작게 하는 계수를 고른다(2.1절, 2.5절). 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절에서 본다.
식 (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'\)이다.
\(\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\)이다).
(보충) 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절)가 된다.
슬라이드는 벌점항의 뜻을 이렇게 요약한다. 계수는 그것을 키워 첫 항을 줄이는 이득이 벌점보다 클 때만 커질 수 있다. 이득이 작은 계수는 작게 눌린다. 그림 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 데이터에서 다시 본다.
슬라이드는 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\)) 둘뿐이다.
같은 벌점은 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장에서 신경망을 훈련할 때 다시 만날 것이다.
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)한 뒤에 쓴다.
\(\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으로 거의 그대로다.
(보충) 이 모양은 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이 된다.
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과 비슷하다.
왜 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(\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\)이다. 잡음이 클수록, 참 계수가 작을수록 더 세게 줄여야 한다.
L07 s29–s31 · ISL 6.2.2
ridge 회귀에는 분명한 약점이 하나 있다. 3.2–3.4절의 부분집합 선택은 feature 일부만 담은 모형을 고르지만, ridge 회귀는 계수를 줄일 뿐 \(p\)개 feature를 최종 모형에 모두 남긴다. 예측에는 문제가 없어도 \(p\)가 크면 모형을 읽기 어렵다. 1.8절의 간결성(parsimony)의 문제다. lasso는 이 약점을 고친 ridge 회귀의 대안이다.
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절).
벡터 \(\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\) 벌점이라는 뜻이다.
그림 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만 읽으면 되기 때문이다.
절댓값 \(\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도 경로를 정확히 따라가는 방법으로 그리고 좌표 하강법의 해와 맞춰 보았다.
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가 쓸모 있는 까닭이다.
\(\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으로 만들지 않는 까닭이다.
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로 평평하다.
슬라이드는 \(\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에 두 방법을 모았다.
| ridge 회귀 | lasso | |
|---|---|---|
| 벌점 | \(\lambda\lVert\bbeta\rVert_2^2\), 제곱의 합 | \(\lambda\lVert\bbeta\rVert_1\), 절댓값의 합 |
| 제약 영역 | 원(고차원에서는 구) | 마름모(3차원에서는 정팔면체) |
| 닫힌 해 | 있다, 식 (5.2) | 없다 → 좌표 하강법 |
| 정규직교 설계의 해 | 같은 비율로 줄인다 | 같은 양만큼 줄이고 0에서 자른다, 식 (5.6) |
| 계수가 정확히 0이 되나 | 되지 않는다 | \(\lambda\)가 크면 된다(희소) |
| 사전분포로 읽으면 | 정규분포 | 라플라스 분포 |
| 유리한 경우 | 많은 feature가 조금씩 이바지 | 소수의 feature만 이바지 |
L07 s37–s39 · ISL 6.2.3
부분집합 선택에서 모형의 크기를 골랐듯(3.5–3.6절), ridge 회귀와 lasso에는 \(\lambda\)를 정하는 방법이 필요하다. 3.6절의 교차검증이 간단한 답을 준다.
넷째 단계는 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)과 척도가 달라 그대로 견주지 않는다.
(보충) 바닥이 얕으면 고르는 \(\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(a)) | 복잡한 쪽(그림 5.2(c)) | |
|---|---|---|
| 파라미터 수 | 적다 | 많다 |
| 모형 | 경직되어 있다 | 유연하다 |
| 복잡도 | 단순하다 | 복잡하다 |
| 결정 경계 | 매끄럽다 | 불규칙하다 |
| 규제 | 큰 \(\lambda\) | 작은 \(\lambda\) |
| 극단의 문제 | 과소적합 | 과적합 |
| 편향 | 크다 | 작다 |
| 분산 | 작다 | 크다 |
가운데 열이 없다는 것이 결론이다. 알맞은 용량은 두 극단 사이의 어딘가에 있고, 그 자리를 검증 데이터와 교차검증으로 찾는다. 「규제」 행은 조금 달리 읽는다. 규제는 파라미터 수를 직접 줄이지 않지만(ridge 회귀는 모두 남긴다) 계수의 크기를 눌러 쓸 수 있는 용량을 줄이므로, 같은 열의 다른 칸들과 효과의 방향이 같다(보충). 1.9절의 편향-분산 트레이드오프, 제3장의 모형 선택, 이 장의 조기 종료와 규제가 모두 이 표의 두 열 사이에서 자리를 고르는 일이다.
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절로 앞당겼다.
이 장의 구성
원천 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에서 왔다.
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)다.
슬라이드는 자료구조의 트리 용어를 복습으로 다뤘지만 이 책에는 처음 나오므로 정리해 두자. 트리는 재귀적으로 정의된다. 트리 하나는 서로 겹치지 않는 두 부분으로 나뉜다. 하나는 맨 위의 노드(node) 하나로, 뿌리 노드(root node)라 한다(슬라이드는 노드를 vertex라고도 적었다). 다른 하나는 그 아래에 매달린 트리 여럿으로, 각각을 뿌리의 부분 트리(subtree)라 한다. 노드와 노드를 잇는 선은 간선(edge)이고, 결정 트리에서는 가지(branch)라고도 부른다. 간선으로 이어진 두 노드 가운데 위쪽이 부모 노드(parent node), 아래쪽이 자식 노드(child node)이며, 부모가 같은 노드끼리는 형제 노드(sibling node)다. 자식이 없는 노드는 잎 노드(leaf node), 자식이 있는 노드는 내부 노드(internal node)다. 뿌리 쪽으로 거슬러 올라가며 만나는 노드는 조상(ancestor), 아래로 내려가며 만나는 노드는 자손(descendant)이다.
그림 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다.
슬라이드는 트리의 장단점을 먼저 밝힌다. 트리는 단순하고 해석하기 쉽지만, 예측 정확도(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절에서 다시 정리한다.
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을 따랐다.
트리는 그대로 읽힌다. 첫 분할이 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년 이하인 선수의 약 다섯 배를 받는다는 예측이다. 로그의 평균을 되돌린 값이라 같은 영역의 연봉을 그대로 평균한 값보다 작다.
L08 s11–s13 · ISL 8.1.1
그림 6.2의 트리는 어떻게 얻었나? 슬라이드는 트리를 만드는 일을 두 단계로 나눈다(ISL 8.1.1).
슬라이드는 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\)에 대한 것이다.
회귀 트리의 잎은 그 영역에 든 훈련 관측값의 반응 평균을 예측한다.
그림 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에서 절반 아래로 줄었다.
슬라이드는 이 평균을 최대가능도 추정(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)다.
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절에서 본다.
분할 하나는 이렇게 고른다. 모든 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 같은 값이 있다. 그래도 어느 분할이 뽑히는지는 실제와 같다.
둘째 분할부터는 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 그림 가운데 이 패널을 빼고 실었다.
슬라이드는 지금까지를 의사코드(pseudocode)로 요약한다. 6.8절의 분류 트리 요약과 견주기 쉽게 단계로 옮기면 다음과 같다.
슬라이드의 의사코드는 나눌 수 있는 모든 노드 \(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절의 큰 트리는 끝까지 키운 트리다.
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)로 돌아간다. 과적합을 줄이려면 모형을 표의 왼쪽, 단순한 쪽 열로 옮겨야 한다. 표의 위 다섯 행, 곧 모형 쪽에서 돌릴 수 있는 손잡이를 하나씩 따져 보면 셋은 트리에서 막혀 있다.
남은 것은 파라미터 수와 결정 경계(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\)으로 가르는 잎 넷의 이상적인 트리는 얻을 수 없다. 가지치기는 분할을 지울 뿐 바꾸지 못하므로 어떤 부분 트리도 그 트리가 아니다.
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\) 하나를 고르는 일과 같다.
수열은 쉽게 얻는다. 매번 잎 하나를 줄일 때 첫 항(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).
이제 슬라이드의 네 단계(ISL 알고리즘 8.1)를 모을 수 있다.
3단계는 3.6절에서 교차검증으로 하이퍼파라미터(hyperparameter)를 고르던 일 그대로이고, 5.11절에서 \(\lambda\)를 고르던 것과 같다. 슬라이드는 3단계를 「교차검증으로 \(\alpha\)를 고른다」는 한 줄로 적었지만(fold 수를 소문자 \(k\)로 썼다), fold를 하나씩 뺄 때마다 남은 훈련 데이터로 트리를 새로 키우고 가지를 쳐야 한다. \(T_0\)의 부분 트리들을 그대로 뺀 fold에 대 보면, 그 fold가 이미 \(T_0\)를 키우는 데 쓰였으므로 오차를 낮게 잰다(3.5절의 데이터 누수(data leakage)).
슬라이드는 네 단계를 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이 네 번)은 영역마다 따로 나누기 때문이다.
2단계. 가장 약한 고리부터 접은 수열은 표 6.1과 같다. \(\alpha\)가 표의 한 열의 값에 이르면 그 열의 크기가 식 (6.4)를 최소화하는 트리가 되고, 다음 열의 값에 이르기 전까지 그대로다. 크기 16과 4는 수열에 없다. 그 자리에서 접힌 노드의 부분 트리에 잎이 셋이라 잎이 한 번에 둘씩 줄었기 때문이다. 슬라이드 s28은 잎 둘을 하나씩 합치며 열두 개에서 하나까지 모든 크기를 거쳤다.
| 트리 크기 \(\lvert T\rvert\) | 17 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| \(\alpha\)(꺾이는 점) | 0 | 0.52 | 0.59 | 0.60 | 0.68 | 0.79 | 1.07 | 1.23 | 1.61 | 1.69 | 2.03 | 3.05 | 4.37 | 14.04 | 45.47 |
| 훈련 MSE | 0.1785 | 0.1863 | 0.1908 | 0.1953 | 0.2005 | 0.2065 | 0.2146 | 0.2239 | 0.2361 | 0.2489 | 0.2643 | 0.2874 | 0.3536 | 0.4600 | 0.8044 |
| 교차검증 MSE | 0.4836 | 0.4762 | 0.4715 | 0.4597 | 0.4626 | 0.4615 | 0.4666 | 0.4536 | 0.4510 | 0.4413 | 0.4447 | 0.4679 | 0.4072 | 0.5103 | 0.8127 |
| 시험 MSE | 0.3673 | 0.3491 | 0.3471 | 0.3527 | 0.3460 | 0.3495 | 0.3487 | 0.3905 | 0.3921 | 0.4033 | 0.3907 | 0.3934 | 0.3422 | 0.4156 | 0.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로 이루어진다.
이 데이터 분할에서는 시험 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는 두 자식 값의 단순 평균과 같아 예시 수치일 수 있다).
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 같은 수(그 잎에서 합병증이 생긴 비율)가 그것이다.
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)다.
$$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」라 불렀지만, 식 (6.7)은 분포 하나의 엔트로피다. 4.8절 식 (4.13)의 교차 엔트로피(cross-entropy)는 정답의 분포와 모형의 분포, 두 분포 사이의 양이다. ESL은 식 (6.7)을 「cross-entropy or deviance」라고도 부르므로 그 이름을 따른 것일 수 있다. 또 그 그래프는 두 클래스의 최댓값이 1.0이라 밑이 2인 로그다. 다음 슬라이드의 그래프(최댓값 약 0.69)와 이 책은 자연로그를 쓴다. 밑을 바꾸면 모든 값에 같은 상수가 곱해질 뿐이라 어느 분할이 뽑히는지는 바뀌지 않는다.
또 하나 널리 쓰는 불순도는 지니 지수(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).
영역의 오분류율은 다수결로 틀리는 비율 \(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절에 그런 분할이 나온다.
| 분할 | 왼쪽 자식 | 오른쪽 자식 | 오분류율 | 지니 지수 | 엔트로피 |
|---|---|---|---|---|---|
| 나누기 전 | (400, 400) | — | 0.500 | 0.500 | 0.693 |
| A | (300, 100) | (100, 300) | 0.250 | 0.375 | 0.562 |
| B | (200, 400) | (200, 0) | 0.250 | 0.333 | 0.477 |
가지치기에서는 사정이 다르다. 최종 예측의 정확도가 목표라면 가지를 칠 때는 오분류율을 쓰기도 한다(ISL 8.1.2). 6.9절의 예가 그렇게 했다.
슬라이드는 강의 끝에 분류 트리의 의사코드를 실었는데(s42), 회귀 트리의 요약(6.4절)과 나란히 놓으려고 여기로 옮겼다. 회귀의 요약에서 식 (6.3)이 식 (6.6)으로, 평균이 다수결로 바뀌었을 뿐이다. 슬라이드의 의사코드에서 자식의 예측을 적은 argmax_k(y_i = k)에는 개수를 세는 합이 빠졌고(뜻은 식 (6.5)), err 줄은 불순도를 크기로 나눈다(위의 주의). 노드끼리 견주는 문제는 6.4절의 주의 그대로다. 바로잡아 단계로 옮기면 다음과 같다.
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).
고른 트리는 이렇게 읽힌다. 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절에서 말할 트리의 불안정함이다.
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%다.
트리의 결정 경계는 늘 축에 나란한 선분으로 이루어진다. 노드의 조건이 feature 하나만 보기 때문이다. 기운 경계를 따라가려면 분할이 많이 들고, 그만큼 분산이 커진다. 어느 쪽이 나은지는 데이터를 보기 전에는 모르므로 검증 데이터나 교차검증으로 견준다(3.5–3.6절). 5.10절에서 ridge 회귀와 lasso를 견주며 내린 결론과 같다.
슬라이드는 트리의 장단점으로 강의를 맺는다(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는 트리끼리 덜 닮게 해 그 효과를 키우려 한다.
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).
참 분포에서 관측값을 더 뽑을 수는 대개 없다(s07). 그 분포는 모르고, 애초에 그것을 추정하는 것이 목표다. 그래서 모집단(population)에서 새 데이터를 거듭 얻는 대신, 원래 데이터에서 관측값을 되돌려 놓으며 거듭 뽑아 서로 다른 데이터를 만든다.
관측값 \(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\)로 센다.
(보충) 관측값 \(n\)개에 \(1/n\)씩 확률을 준 분포를 생각하자. 이 분포에서 크기 \(n\)의 표본을 뽑는 것이 곧 원래 데이터에서의 복원추출이다. 부트스트랩은 모르는 참 분포 자리에 데이터가 만든 이 분포를 놓고, 「모집단에서 데이터를 새로 뽑아 추정하기」를 컴퓨터로 흉내 낸다(ESL 7.11). 데이터가 클수록 이 분포는 참 분포에 가까워진다.
그림 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% 신뢰구간으로 쓴다.
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)이다. 한 사용자가 한 번 접속해 머무는 동안(세션) 차례로 본 아이템들은 서로 이어져 있다. 아이템을 하나씩 뽑아 섞으면 그 맥락이 사라지므로 세션 하나를 블록 하나로 삼아 뽑는다.
슬라이드는 묻는다(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%가 훈련에도 쓰인다.
두 클래스의 개수가 같고 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)와 거의 같다.
L09 s12–s13 · ISL 8.2.1
훈련 데이터 하나에서 부트스트랩 표본 \(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\)개 훈련해야 한다.
그림 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이 어떤 모형도 내려갈 수 없는 바닥이다.
슬라이드는 「각 모형의 편향은 같고 분산은 줄어든다」고 적었지만, 분산이 주는 것은 모형 하나하나가 아니라 평균한 모형 \(\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을 트리와 짝짓는 까닭이다.
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)는 들어 있지 않다.
\(E_{\text{comb}} \le E_{\text{single}}\)이다. 결합한 모형의 기대 오차는 개별 모형 기대 오차의 평균보다 크지 않다. 등호는 거의 모든 \(\bx\)에서(입력의 분포에 대해 확률 1로) \(\delta_b(\bx)\)가 \(b\)에 상관없이 같을 때, 곧 모형이 사실상 모두 같을 때 성립한다.
정리 1이 견주는 것은 \(B\)개 모형 오차의 평균이지 가장 좋은 모형 하나가 아니다. 슬라이드의 「단일 모형보다 크지 않다」를 아무 모형 하나보다 낫다는 뜻으로 읽으면 안 된다. 예컨대 \(B = 2\)이고 모든 \(\bx\)에서 \(\delta_1 = 0\), \(\delta_2 = 1\)이면 \(E_{\text{comb}} = 1/4\)이라 첫째 모형 혼자(0)보다 나쁘다. 「결합해서 잃을 것이 없다」는 평균적인 모형 하나보다 나빠지지 않는다는 뜻이다.
정리 2는 결합의 이득이 얼마나 클 수 있는지 본다(s16–s17). 1단계의 제곱을 펼치면 제곱항 \(B\)개와, 서로 다른 두 모형의 오차를 곱한 교차항(cross term)이 나온다.
둘째 항의 합은 \(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\)로 준다. 슬라이드의 결론대로 모형들이 서로 다를수록 결합의 이득이 크다.
슬라이드는 교차항을 \(\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뿐이다.
같은 이야기를 한 점 \(\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의 이득을 막는 것은 트리 사이의 상관이다.
그림 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가 낫다」가 아니다.
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이 아니라, 종류가 다른 모형을 학습한 가중치로 섞은 것이다.
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다.
부트스트랩 표본마다 트리를 키우되, 노드를 나눌 때마다 \(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\)).
그림 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).
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의 차이는 두 표본의 차이다.
L09 s26–s27 · ISL 8.2.3
boosting도 bagging처럼 여러 학습 방법에 두루 쓰는 일반적인 방법이다(s26). bagging은 원래 데이터의 부트스트랩 사본마다 모형을 하나씩, 서로 독립으로 훈련한 뒤 합쳤다. boosting은 모형을 차례로 키운다. 모형 하나하나가 앞서 키운 모형들의 정보, 곧 어디서 틀렸는지를 쓴다. 이렇게 차례로 더해 가는 개별 모형을 약한 학습기(weak learner)라 부른다.
슬라이드는 4단계의 가중치가 성능에 「비례한다」고 적었지만, 6.18절의 분류기 가중치는 성능에 비례하지 않는다. 성능이 좋을수록 커지는 함수일 뿐이고, 오분류율이 0에 가까워지면 끝없이 커진다.
(보충) boosting은 부트스트랩 표본을 쓰지 않는다. 모형마다 원래 데이터를 조금 바꾼 판, 곧 관측값의 가중치를 바꾼 데이터(6.18절)나 반응을 바꾼 데이터(6.21절)에 맞춘다(ISL 8.2.3). 그래서 boosting의 모형들은 같은 분포를 따르지 않는다. bagging이 같은 분포를 따르는 모형을 평균해 분산만 줄인다면, boosting은 앞 모형들이 못 맞춘 곳을 차례로 고쳐 가므로 편향도 줄인다(ESL 15.2).
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\)와 가른다. 둘은 아무 관계가 없다.
입력은 훈련 데이터 \(\{(\bx_i, y_i)\}_{i=1}^{n}\), \(y_i \in \{-1, +1\}\)이다.
\(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 모형이 과적합에 강한 경향이 있다고 적었다. 경향일 뿐이다. 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%)만 못하다.
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)}\)로 적었다.
식 (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절의 베이즈 분류기를 흉내 내는 일이다. 로그 손실을 최소화하는 점은 로그 오즈 그 자체라, 두 손실은 척도만 다를 뿐 모집단에서는 같은 분류를 주고 유한한 데이터에서 틀린 관측값을 다루는 방식이 다르다.
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\)다.
| 무리 | 점 | \(b = 1\) | \(b = 2\) | \(b = 3\) | \(F_3\) |
|---|---|---|---|---|---|
| 왼쪽 양성 | 2 | 0.100 | 0.071 | 0.045 | +0.15 |
| 위쪽 양성 | 3 | 0.100 | 0.167 | 0.106 | +1.15 |
| 가운데 음성 | 3 | 0.100 | 0.071 | 0.167 | −0.69 |
| 오른쪽 위 음성 | 1 | 0.100 | 0.071 | 0.045 | −0.15 |
| 오른쪽 아래 음성 | 1 | 0.100 | 0.071 | 0.045 | −1.99 |
| \(\mathrm{err}_b\) | 0.300 | 0.214 | 0.136 | ||
| \(\alpha_b\) | 0.424 | 0.650 | 0.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로 올라 그 언저리에 머문다.
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가 널리 쓰인다.
\(\lambda\)는 새 트리를 그대로 더하지 않고 줄여서 더하게 하는 축소 파라미터(shrinkage parameter)다. 학습을 일부러 느리게 해, 더 많은, 모양이 서로 다른 트리가 잔차를 나눠 맡게 한다. 제5장의 규제 강도 \(\lambda\)와는 다른 것이다. 슬라이드는 범위를 \(0 \le \lambda \le 1\)로 적었지만 \(\lambda = 0\)이면 아무것도 배우지 않는다. ISL은 0.01이나 0.001 같은 작은 양수를 쓴다. (보충) ISL은 대개 느리게 배우는 방법이 잘 된다고 덧붙인다.
그림 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)보다 낮다.
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).
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이 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를 부풀리는 경향이 있다고 알려져 있으므로, 순위를 그대로 믿기보다 대략의 무게로 읽는다.
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)을 가져온다. 슬라이드의 자리는 옮기지 않았다.
이 장의 구성
원천 Lecture 10 (2026-10-19) 슬라이드 5–8, 10–21, 23–29, 31–41, 43–50 · 읽기 ISL 9.1–9.5
L10 s05–s06 · ISL 9.1.2–9.1.3
지금까지 본 분류기(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절)에서 드러난다.
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이다.
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).
\(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\)로 묶은 까닭이 이것이다. 그러면 점수가 곧 거리다.
L10 s12–s14 · ESL 4.5.2, 12.2
식 (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\)로 적는다.
처음 세운 최적화 문제라 이것을 원문제(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\)이고, 고리를 두른 네 점이 마진 줄 위에 놓인다.
원문제는 \(\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\)는 하나뿐이다. 그러면 이 제약 있는 문제를 실제로 어떻게 푸는가? 슬라이드는 이 물음으로 다음 도구로 넘어간다.
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\)개)는 슬라이드의 꼴 그대로 둔다.
\(\bx^*\)가 극소점이면(제약이 지나치게 퇴화한 경우를 빼고) 다음을 만족하는 승수 \(\boldsymbol\mu^*\), \(\boldsymbol\lambda^*\)가 있다.
상보 여유 조건은 「승수가 0이거나, 제약이 등호로 성립한다」는 뜻이다. 7.4절의 비활성 제약은 승수가 0이고, 승수가 0이 아닌 제약은 활성이다. 7.7절에서 이것이 경계를 정하는 점들을 정확히 가려낸다. KKT 조건은 극값(local optimum, 여기서는 극소)의 필요조건이지만(슬라이드의 「local optimum」), 식 (7.5)처럼 목적함수가 볼록이고 제약이 일차식인 문제에서는 KKT 조건을 만족하는 점이 곧 전역 최적(global optimum)이다(보충). (보충) 이때 해는 라그랑주 함수를 원래 변수에 대해서는 최소로, 승수에 대해서는 최대로 만드는 안장점(saddle point)이다. 7.6절에서 승수 쪽이 최대화로 바뀌는 까닭이 이것이다.
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\)가 사라진다.
식 (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).
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절의 상보 여유 조건이다.
마진 밖의 점(\(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절에서 드러난다.
L10 s23–s24 · ISL 9.1.5, 9.2.1
분리 가능한 데이터라도 잡음(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절)이다. 앞의 것부터 본다.
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 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). 교재와 슬라이드를 함께 읽을 때 가장 헷갈리는 곳이다.
그림 7.6은 겹치는 예시 데이터 30점에 \(C = 1\)로 맞춘 결과다. 마진 밖에 18점이 있고, 마진 위에 2점, 마진 안의 올바른 쪽에 6점(\(0 < \xi_i < 1\)), 경계 너머에 4점(\(\xi_i > 1\))이 있다. 훈련 오분류는 4개이고, \(\sum_i\xi_i = 7.82\)는 그보다 크다.
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)과 같다.
목적함수는 식 (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).
| 승수 | 따라 나오는 것 | 점의 자리 | 수 |
|---|---|---|---|
| \(\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절의 잡음 점 하나가 경계를 마음대로 끌고 가지 못한다.
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절의 주의).
(보충) \(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) 강도를 고른 방법 그대로다.
L10 s31–s34 · ESL 10.6
이제 SVM을 제4장 이래의 「손실을 줄이는 모형」으로 다시 보자. 손실함수(loss function) \(\mathcal{L}(\hat{y}, y)\)는 예측(prediction)이 정답과 얼마나 다른지를 0 이상의 수로 매겨 모형에 벌을 준다(4.5절의 일반형, s31). 같으면 (거의) 0, 가까우면 미세 조정을 위해 조금, 크게 다르면 크게 벌한다. 맞혀도 조금 벌하면 점수를 더 밀어 준다.
이진 분류에서 정답은 \(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\)」처럼 기호를 붙인다.
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).
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\)만의 최소화가 남는다.
\(\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가 넷을 모은다.
| 손실 | \(ys \ge 1\)에서 | 틀린 쪽으로 | 모집단에서 최소화하는 점수 |
|---|---|---|---|
| 0-1 손실 | 0 | 1로 일정 | 베이즈 분류기(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\)로 받았다.
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\)가 경계이며 그 사이가 양성이다. 고차원의 평평한 경계가 원래 공간에서는 휜 경계가 된다.
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).
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)를 얻는다.
\(\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\)이면 다음과 같다.
(보충) 아무 함수나 커널이 되지는 않는다. 어떤 \(\boldsymbol\phi\)의 내적으로 쓸 수 있으려면 대칭이고 양의 준정부호여야 한다(ESL 12.3.1). 커널을 쓰면 늘린 공간을 다루지 않고 서로 다른 훈련 관측값 쌍마다 \(K(\bx_i, \bx_{i'})\)를 한 번씩, 모두 \(\binom{n}{2}\)번 계산하면 된다(ISL 9.3.2).
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\)와 함께 교차검증으로 고른다.
그림 7.10이 세 SVM을 견준다(s48). (a)의 선형 SVM은 7.15절에서 본 대로 경계가 없고, 모든 점이 같은 결정값 \(-1\)을 받는다. (b) 다항식 커널(\(d = 3\))과 (c) 방사 커널(\(\gamma = 1\))은 모두 가운데 무리를 감싸는 휜 경계를 만들고(ISL 9.3.2), 시험 오분류는 각각 14%와 11%다. 다항식 커널의 경계는 3차 곡선이 가운데 무리를 지나는 띠를 이루고, 방사 커널의 경계는 가운데 무리를 둘러싼 닫힌 곡선이다.
L10 s49 · ISL 9.4
SVM은 본래 이진 분류용이다(s49). 초평면의 양쪽이라는 발상이 클래스가 셋 이상인 경우로 자연스럽게 넓어지지 않는다(ISL 9.4). 클래스가 \(\lvert\mathcal{C}\rvert > 2\)개이면(슬라이드의 \(K\). 이 장의 \(K(\cdot, \cdot)\)는 커널이다) 이진 SVM 여럿을 엮는 두 방법이 있다.
클래스 수가 너무 크지 않으면 일대일을 선호한다는 것은 슬라이드의 권고다(ISL 9.4는 두 방법을 소개만 한다). (보충) 일대일은 분류기가 클래스 수의 제곱으로 늘지만 하나하나는 두 클래스만 쓰는 작고 고른 문제이고, 일대다는 분류기가 적은 대신 한 클래스 대 나머지라 두 쪽의 크기가 크게 기운다.
(보충) 4.8절의 다항 로지스틱 회귀(multinomial logistic regression)는 softmax로 모든 클래스를 한 모형에서 다뤘다. 일대다에서 점수가 가장 큰 클래스를 고르는 것(점수가 클수록 그 클래스라는 확신이 크다)은 softmax가 클래스별 점수 \(s_k\)가 가장 큰 클래스를 고르는 것과 같은 모양이다.
L10 s50 · ISL 9.5
강의는 두 방법을 견주며 끝난다(s50, ISL 9.5). 클래스가 잘 갈리면 SVM이 로지스틱 회귀보다 대체로 낫다. 슬라이드는 이어서 「반대의 경우, 곧 클래스가 겹치지 않을 때 로지스틱 회귀는 극도로 불안정하다」고 적었는데, 겹치지 않는 경우는 앞 문장의 잘 갈리는 경우와 같다. 「(SVM과 반대로) 그 경우에 로지스틱 회귀는 불안정하다」로 읽는다. 4.4절의 주의 상자에서 보았듯 선형 분리 가능한 데이터에서는 계수를 키울수록 로그가능도(log-likelihood)가 끝없이 올라 최대점이 없고, 5.5절에서는 \(\ell_2\) 벌점이 그것을 막았다. 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마다의 계수처럼 읽을 수 있는 것이 남지 않고, 점수를 확률로 읽을 수도 없다.
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부를 마치는 장이다.
이 장의 구성
원천 Lecture 11 (2026-10-21) 슬라이드 3–4, 6–24, 26–40 · 읽기 ISL 12.1–12.2, 12.4
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)의 수를 고르는 자리에서 다시 나온다.
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)이다.
벡터를 정해 둔 대표 벡터, 곧 코드북 벡터(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절).
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-평균은 군집의 평균을 내야 하므로 관측값의 좌표가 있어야 한다.
| Edna | Lisa | Marge | Selma | Patty | |
|---|---|---|---|---|---|
| Edna | 0 | 8 | 8 | 7 | 7 |
| Lisa | 0 | 2 | 4 | 4 | |
| Marge | 0 | 3 | 3 | ||
| Selma | 0 | 1 | |||
| Patty | 0 |
변수마다 단위가 다르면 거리는 값이 크게 흩어지는 변수에 휘둘린다. ISL의 예에서 온라인 쇼핑 고객을 품목별 구매 횟수로 견주면, 1년에 열 켤레씩 사는 양말이 드물게 사는 컴퓨터보다 거리를 훨씬 크게 좌우한다. 센티미터로 잰 변수를 킬로미터로 바꾸기만 해도 거리가 달라진다. 그래서 거리를 재기 전에 변수마다 표준편차(standard deviation)가 1이 되게 맞추는 표준화(5.6절)를 흔히 하지만, 그것이 좋은지는 응용에 달렸다. 8.12절에서 차원 축소의 전처리(preprocessing)로 같은 이야기를 다시 한다.
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).
이 절이 다루는 것은 병합 군집화(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\)을 단조 증가시키는 것은 덴드로그램에서 위로 갈수록 합치는 높이가 커지는 성질에 해당한다.
단계 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) | 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의 예시 데이터에서도 중심 연결로는 한 번씩 생긴다.
L11 s16–s18 · ISL 12.4.1 · ESL 14.3.6 · PRML 9.1
K-평균 군집화는 두 단계의 반복(iteration)으로 군집을 고쳐 가는 분할 군집화 알고리즘이다(s16). 군집 수 \(K\)를 정해 두고 다음을 한다.
이름의 「평균」이 (나) 단계의 평균이다(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절).
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\)이다. 슬라이드는 이 제약을 말로만 적었다.
관측값마다 제가 속한 군집의 중심점까지의 거리의 제곱을 모두 더한 것이다. 이 값을 군집 내 제곱합(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).
두 변수 묶음을 번갈아 하나씩 최적화(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절에서 다시 쓴다.
L11 s21–s22 · ISL 12.4.1 · ESL 14.3.5–14.3.6 · PRML 9.1
이 알고리즘은 늘 멈추는가(s21)? 그렇다. 두 단계 모두 \(J\)를 늘리지 않는다(8.6절). 슬라이드는 더 엄밀하게 두 사실을 덧붙인다. \(J\)는 적어도 한 관측값의 할당이 바뀔 때만 줄고, \(n\)개의 관측값을 \(K\)개 군집에 할당하는 방법의 수는 유한하다. (보충) 이 둘로 논증을 채우면 다음과 같다.
그림 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절에서 거리를 지키는 차원 축소도 같은 처방을 쓴다.
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 이하로만 준다. 그러나 슬라이드의 말대로 늘 이렇게 쉽지는 않다. 꺾임이 뚜렷하지 않은 데이터도 많다.
(보충) 「\(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은 이 방법이 다소 경험적이라고 한다.
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장이고, 그 하나하나는 데이터가 담은 정보의 일부만 보여 준다. 정보를 될 수 있는 대로 지키며 좌표의 수를 줄이는 이 일이 차원 축소다.
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'\)으로 쓴다.
거리는 비유사도의 한 경우다. 8.3절의 거리 행렬처럼 데이터 \(\bx\) 없이 \(\rho\)만 주어져도 되고, MDS는 비유사도만 쓴다(ESL 14.8). 슬라이드의 식에는 노름 안에 닫는 괄호가 하나 남는다. 식 (8.7)의 최소화에는 일반적으로 닫힌 형태의 해(closed-form solution)가 없어 반복 최적화가 필요하다. 슬라이드는 경사하강법(4.6절)을 예로 들고 「극대(local maxima)가 생길 수 있다」고 적었지만, 왜곡을 최소화하는 문제이므로 생기는 것은 극소다. 목적함수가 볼록하지 않아 극소가 여럿일 수 있으므로 결과가 시작점에 달리고, 시작점을 바꿔 여러 번 돌린다. 8.7절의 K-평균과 같은 처방이다.
\(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)에서 다룰 것이다.
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\)으로 둔 것이라 한다. 그리고 이것이 줄인 차원에서 원래 데이터의 정보, 곧 분산을 될 수 있는 대로 많이 지키는 것과 같다고 한다.
두 군데가 정확하지 않다. 첫째, 슬라이드가 유클리드 거리라 부른 \(\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를 적을 수 있다.
슬라이드의 둘째 문장은 같은 목표를 이렇게 말한다(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은 축척을 같게 그렸다.
L11 s33–s34 · ISL 12.2.1, 12.2.4
슬라이드는 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). 분산이 클수록 정보가 많다고 보기 때문이다. 분산이 큰 방향을 찾으려면 모든 방향의 분산을 담은 공분산행렬이 필요하다.
\(\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) 타원의 모양을 정했다. 그 타원의 축이 어느 방향이고 축마다의 분산이 얼마인지가 다음 절의 답이다.
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).
그림 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\)개가 한 식이 된다.
\(\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\)다.
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이라 한다.
| 변수 | \(\mathbf{u}_1\) | \(\mathbf{u}_2\) |
|---|---|---|
| Murder | 0.536 | −0.418 |
| Assault | 0.583 | −0.188 |
| UrbanPop | 0.278 | 0.873 |
| Rape | 0.543 | 0.167 |
| 고윳값 \(\lambda_j\) | 2.480 | 0.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과 부호가 같다.
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). 둘 다 데이터의 평균을 지난다. (보충) 분산 최대와 거리 최소가 같은 까닭은 피타고라스 정리다.
선형회귀(linear regression)와는 무엇이 다른가? 슬라이드는 선형회귀가 주어진 공간을 그대로 받아들이므로 제곱오차(squared error)가 늘 최소는 아니라고 한다. 「회귀선은 수직 거리의 제곱합을 최소화하지 않는다」는 뜻으로 읽는다. 2.1절의 최소제곱법(least squares)은 \(y\)를 특별한 변수로 두고 세로 방향, 곧 \(y\)축과 나란한 잔차(residual)의 제곱합을 최소화한다. PCA는 변수 사이에 구별이 없고 직선에 수직인 거리의 제곱합을 최소화한다.
그림 8.11은 같은 예시 데이터 25점에 둘을 맞춘 것이다. 최소제곱 회귀선은 평균 제곱 세로 거리가 1.674로 가장 작고, 첫째 주성분 직선은 평균 제곱 수직 거리가 0.444로 가장 작다. 회귀선의 수직 거리(0.621)는 주성분 직선보다 크고, 거꾸로 주성분 직선의 세로 거리(2.451)는 회귀선보다 크다. 두 직선은 서로 다른 기준의 최적이다. 슬라이드 그림의 「RIGHT ANGLE TO Y-AXIS」는 회귀의 잔차가 \(y\)축에 수직이라는 뜻이 아니다. 잔차는 \(y\)축과 나란하고 가로축에 수직이다. (보충) 회귀는 두 변수의 구실이 달라 \(X_1\)을 \(X_2\)로 회귀하면 또 다른 직선이 나오지만, PCA의 직선은 하나다.
L11 s40 · ISL 12.2.3–12.2.4
주성분을 데이터의 요약으로 쓴다면 몇 개면 충분한가(s40)? 간단한 답이 없다. 이 목적에는 교차검증을 쓸 수 없다. 예측할 반응이 없어 견줄 정답이 없기 때문이다(8.1절). 그래서 군집 수를 고를 때처럼(8.8절) elbow를 찾는다. 주성분 번호에 따라 고윳값이나 그것이 설명하는 분산의 몫을 그린 그림을 스크리 그림(scree plot)이라 한다(ISL 12.2.4). 슬라이드의 그림에는 이름이 없다.
(보충) 그 몫을 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\) = TV | 1.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 또는 pdf | 2.3 |
| \(L(\theta)\) | 가능도 \(L(\theta; x_1, \dots, x_n)\) | 2.3 |
| \(\ell(\theta)\) | 로그가능도(\(\log\)는 자연로그) | 2.3 |
| \(\hat{\theta}\), \(\hat{\theta}_{\text{MLE}}\) | 추정량, MLE | 2.3 |
| \(\nabla \ell(\theta)\) | \(\ell\)의 gradient | 2.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)\), 첫 열은 모두 1 | 2.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)\) | rank | 2.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)\) | 손실의 gradient | 4.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 |
여러 절에서 되풀이해 쓰는 데이터를 여기서 한 번 소개한다. 변수 이름은 원래 표기대로 쓴다.
| 데이터 | 내용과 변수 | 쓰인 절 |
|---|---|---|
| Advertising | 시장 200곳의 판매량과 매체별 광고 예산(ISL 2.1). 반응 Sales, feature TV, Radio, Newspaper | 1.3, 2.1, 2.4, 2.8, 2.10 |
| Income | 30명의 소득 Income을 교육 연수 Years of Education과 근속 연수 Seniority로 설명하는 ISL 모의 데이터. 참 \(f\)를 알아 \(\hat{f}\)과 직접 견줄 수 있다 | 1.3, 1.4, 1.7 |
| Credit | 400명의 카드 잔액 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 |
| Weather | 14일 동안의 날씨 조건 Outlook(Sunny·Overcast·Rainy), Temp(Hot·Mild·Cool), Humidity(High·Normal), Windy(True·False)와 그날 골프를 쳤는지 Play Golf(Yes·No). 범주형 feature만 있는 작은 예 | 4.14 |
| CIFAR-10 | 10개 클래스(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· | 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 |
| USArrests | 1973년 미국 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 |
조판 2026-10-22 · 전체 193쪽 · 기준 렌더러 Chrome 155.0.8059.85