
안녕하세요 오늘은 수학적으로 배운 머신러닝에 대해서 리뷰할까 합니다.
수학적으로 소개되는 만큼 다소 어렵고 이해가 오래 걸리니 차근차근 이해하면서 공부하는 것이 중요했습니다.
Logistic Regression

로지스틱 회귀의 핵심은 입력 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)$ 를 사용해 분류합니다.