본문 바로가기

Machine Learning

Chapter3 : Machine Learning - Logistic Regression, Softmax, LDA, QDA

 

안녕하세요 오늘은 수학적으로 배운 머신러닝에 대해서 리뷰할까 합니다.

수학적으로 소개되는 만큼 다소 어렵고 이해가 오래 걸리니 차근차근 이해하면서 공부하는 것이 중요했습니다.

Logistic Regression

출처 : Metacode 강의자료


로지스틱 회귀의 핵심은 입력 X가 커질수록

양성 클래스일 확률 $P(y=1 | X)$가 어떻게 변하는지를 모델링하는 것입니다.

이때 확률 자체를 바로 직선으로 표현하지 않고 오즈(odds)와 logit을 통해

선형식과 연결함으로써 분류 문제를 안정적으로 다룰 수 있습니다.

확률: $P(y = 1 \mid X = x)$

오즈: $\text{odds}(x) = \dfrac{P(y=1 \mid x)}{1 - P(y=1 \mid x)}$


로짓: $\text{logit}(x) = \log \left( \dfrac{P(y=1 \mid x)}{1 - P(y=1 \mid x)} \right)$


로지스틱 회귀에서는 아래와 같이 이 로짓이 선형 결합이 되도록 가정합니다.

 

$\text{logit}(x) = w_0 + w_1 x_1 + \cdots + w_p x_p = w^\top x$

 


Sigmoid와 logit

 

시그모이드 함수는 어떤 실수 입력이 들어와도 결과를 0과 1 사이로 압축해 주기 때문에

“양성일 가능성”처럼 확률 해석이 필요한 분류 문제에 잘 맞습니다.

그래서 로지스틱 회귀는 선형결합 $w^\top X$를 만든 뒤, 이를 시그모이드에 통과시켜 최종 확률로 바꾸는 것입니다.

시그모이드 함수:

$\sigma(z) = \dfrac{1}{1 + e^{-z}}$

이를 이용해 양성 클래스일 확률을

$P(y=1 \mid X) = \sigma(w^\top X) = \dfrac{1}{1 + e^{-w^\top X}}$

와 같이 표현합니다.

즉, 로지스틱 회귀는 확률을 직접 직선으로 맞추는 모델이라기보다,

확률의 비율을 변환한 값을 선형적으로 설명하는 모델이라고 이해하는 편이 정확하다고 할 수 있습니다.

 


로지스틱 회귀는 어떻게 학습될까

 


로지스틱 회귀의 파라미터는 보통 최대우도추정(MLE)을 통해 학습합니다.

각 샘플 i에 대해 $x_i, y_i \in \{0,1\}$ 라고 하면, 로지스틱 회귀는

$P(y_i = 1 \mid x_i) = \sigma(w^\top x_i)$

$P(y_i = 0 \mid x_i) = 1 - \sigma(w^\top x_i)$

로 두고, 데이터 전체에 대한 우도(likelihood)를

$L(w) = \prod_{i} \left[ \sigma(w^\top x_i) \right]^{y_i} \left[ 1 - \sigma(w^\top x_i) \right]^{1-y_i}$ 로 정의합니다.

실제로는 계산 편의를 위해 로그를 취한 로그우도(log-likelihood)를 최대화합니다.

$\ell(w) = \log L(w) = \sum_{i} \left[ y_i \log \sigma(w^\top x_i) + (1 - y_i) \log (1 - \sigma(w^\top x_i)) \right]$

이 과정을 “현재 파라미터가 주어졌을 때 정답 데이터가 가장 그럴듯하게 보이도록” 

w를 조정하는 과정이라고 볼 수 있습니다.

 

 

다중분류와 Softmax

 

로지스틱 회귀가 주로 이진분류에 쓰인다면,

클래스가 세 개 이상인 다중분류에서는 softmax regression이 사용됩니다.

softmax는 각 클래스에 대한 점수 z_k를 확률처럼 변환하고, 모든 클래스 확률의 합이 1이 되도록 만듭니다.

소프트맥스 함수:
$p_k = P(y = k \mid x) = \dfrac{\exp(z_k)}{\sum_{j=1}^{K} \exp(z_j)}$

여기서 보통 $z_k = w_k^\top x$ 와 같이 클래스별 선형결합을 사용합니다.

다중분류 학습에는 cross-entropy loss를 사용하는데요,

원-핫 인코딩된 정답 벡터를 $y_i $(예: $y_i = [0,0,1,0,\dots]$)라 하고,

softmax 결과를 $\hat{p}_i$라 하면, cross-entropy loss는

$L_{\mathrm{CE}}=-\sum_i \sum_{k=1}^K y_{i,k}\log \hat p_{i,k}$

으로 정의됩니다. 정답 클래스에 높은 확률을 줄수록 이 값이 작아지기 때문에,

다중분류에서 표준적으로 사용됩니다.

 


LDA(Linear Discriminant Analysis)와 QDA(Quadratic Discriminant Analysis)

 

LDA와 QDA도 소개해 보겠습니다.

LDA는 각 클래스가 “비슷한 모양의 정규분포”라고 보고, 선형(직선/초평면) 경계로 나누는 분류기이고,

QDA는 각 클래스가 “자기만의 모양을 가진 정규분포”라고 보고, 곡선(이차식) 경계로 나누는 분류기입니다.

 

두 방법 모두 클래스별 분포를 가정해 posterior probability가 가장 큰 클래스로 분류하는데요,

LDA는 각 클래스가 공통된 공분산을 가진 가우시안 분포라고 가정합니다.

$f_k(x) = \dfrac{1}{(2\pi)^{p/2} |\Sigma|^{1/2}} \exp \left( -\dfrac{1}{2} (x - \mu_k)^\top \Sigma^{-1} (x - \mu_k) \right)$

모든 클래스에 대해 같은 $\Sigma$를 사용하면, posterior의 로그가 x에 대해 선형식이 되고,

이를 통해 선형 결정경계를 얻습니다. 이때 클래스 k의 판별함수는

$\delta_k(x) = x^\top \Sigma^{-1} \mu_k - \dfrac{1}{2} \mu_k^\top \Sigma^{-1} \mu_k + \log \pi_k$ 와 같은 형태가 되고

최종 분류는 $\hat{y} = \arg\max_k \delta_k(x)$ 로 이루어집니다.

QDA는 클래스마다 다른 공분산 $\Sigma_k$를 허용합니다.

$f_k(x) = \dfrac{1}{(2\pi)^{p/2} |\Sigma_k|^{1/2}} \exp \left( -\dfrac{1}{2} (x - \mu_k)^\top \Sigma_k^{-1} (x - \mu_k) \right)$ 이 경우 판별함수는

$\delta_k(x) = -\dfrac{1}{2} x^\top \Sigma_k^{-1} x + x^\top \Sigma_k^{-1} \mu_k - \dfrac{1}{2} \mu_k^\top \Sigma_k^{-1} \mu_k - \dfrac{1}{2} \log |\Sigma_k| + \log \pi_k$

와 같이 이차식(quadratic)이 되어, 결정경계도 곡선 형태가 됩니다.

마찬가지로 $\hat{y} = \arg\max_k \delta_k(x)$ 를 사용해 분류합니다.