1. Classification

Regression 이 주어진 입력에 대해 연속적인 숫자값을 예측하는 것이라면, Classification 은 주어진 데이터를 몇 개의 그룹으로 분류를 하는 것이다. 메일이 스팸 메일인지 아닌지 분류하는 문제가 예이다.
이진분류를 위해서는 이전에 regressions 에서 정의한 함수와는 다른 함수를 정의해야 한다.
2. Logistic Regression
하지만 갑자기 새로운 걸 배우려면 머리가 아프니깐 기존에 아는 것에서부터 차근차근 발전시켜 보자. Logistic regression은 우리가 앞서 공부한 Linear regression 의 확장 버전이다. 즉, 회귀를 분류 문제에 사용하는 것이다.

Linear regression 에서 사용했던 이 식을 기억하는가? 이 식에 g(x) 라는 새로운 함수를 씌워보자. 함수 g(x) 는 시그모이드 함수라고 한다.



그래프에서도 볼 수 있듯이 모든 값이 0과 1사이의 값으로 매핑된다. 1에 가까우면 1로, 0에 가까우면 0으로 분류하는 원리이다. 따라서 이는 classification. 특히 이진 분류에 유리하다.
Logistic Regression 을 널리 사용하는 또 다른 이유가 있다. Linear Regression 에서 cost function 의 최솟값을 찾기 위해 미분을 이용했던 것을 기억하는가? 이렇듯 미분은 다양한 계산에 사용되는데, 시그모이드 함수의 미분값은 단순해서 쉽게 사용할 수 있다는 장점이 있다.

3. Gradient ascent
Linear regression 에서는 cost function 의 최솟값을 찾기 위해 Gradient descent 를 사용했다면, Logistic regression 에서는 likelihood function 의 최대값을 찾기 위해 Gradient ascent 를 이용한다.
🍋 Likelihood of ß

P(y=1|x;ß)는 독립변수 x 가 주어졌을 때 종속변수 y가 1일 확률을 의미한다. 이때 ß는 모델의 파라미터로서, 각 독립 변수 x에 대응하는 가중치를 나타낸다. 왼쪽의 두 식을 한번에 표현하면 오른쪽의 식이 된다.
m개의 독립적인 훈련 데이터가 있다고 가정하면 likelihood function은 다음과 같다.

데이터가 독립이기 때문에 모든 데이터 포인트 i에 대해 각각의 $p(y_i|x_i;\beta)$ 값을 곱해서 조건부 확률을 표현할 수 있다. $p(y_i|x_i;\beta)$ 부분에 아까 합쳐 놓은 식을 대입하면 된다.
🍋 Gradient ascent

Gradient ascent는 함수의 local maxima 를 찾기 위한 반복적인 최적화 알고리즘이다. Gradient ascent 에서는 descent 와 달리 + 를 이용해서 파라미터를 업데이트 해준다.

빨간 상자 부분을 정리하면 최종적으로 $(y-g(\beta^Tx))x_j$ 가 된다. 이를 다시 ß 업데이트 식에 대입하면 완성!

4. Newton's method
Newton's method 는 gradient ascent 보다 최적의 파라미터를 조금 더 빨리 찾을 수 있는 방법이다. 목표는 f(x)=0 이 되는 x를 찾는 것이다.


1) initial guess 값을 하나 정한다. 그래프에서는 b로 표현하였다.
2) (b,f(b)) 에서 tangent line 을 긋는다.
3) tangent line의 x절편을 c로 표시한다.
4) 이번엔 (c,f(c)) 에서 tangent line 을 긋는다.
5) 이 과정을 계속 반복하면서 f(a)=0 으로 만드는 a 값을 찾는다.
이러한 newton's method 를 likelihood function 에 적용 해보자. Likelihood function 의 최댓값을 구하기 위해서는 L'(ß)=0 인 ß 를 찾아야 한다. 이때 newton's method 를 적용하는 것이다. Newton's method 에서 $c=b-\frac{f(b)}{f'(b)}$ 로 표현한 것처럼 ß 값을 업데이트 할 때는 다음의 식을 사용한다.

Hessian matrix를 통해 두 번 미분을 계산해 주면 이러한 식이 완성된다.

Newton's method 는 Gradient ascent 보다 빠르지만, 행렬이 커지면 $H^{-1}$ 를 계산하는 비용이 많이 들어 비효율적이다.
🍋 Hessian Matrix


Hessiana matirx 는 convex 모양은 더 convex 하게, bell 모양은 더 bell 하게 만들어준다.
5. Generative learning algorithm

Discriminative learning algorithm 은 데이터의 분포를 학습하지 않고 입력 데이터 X와 레이블 Y 간의 관계를 바로 학습한다. 입력 X가 주어졌을 때 어떤 클래스 Y에 속하는지에 대한 확률을 구하는 것이다. 분류의 경계를 학습하는 것이 목적이다.
반면, generative learning algorithm은 각 클래스에 속하는 데이터가 어떻게 분포되어 있는지를 학습하여 각 클래스에 대한 모델을 먼저 정의한다. 이 모델은 입력 데이터 X의 분포뿐만 아니라 클래스 Y의 분포도 함께 학습한다.
🍋 Bayes rule
Feature x (밝기)에 따라 클래스를 분류 (1: seabass, 0: salmon) 하는 예시를 생각해 보자.
- Posterior probailty :
Posterior probability는 데이터를 관찰한 후에 특정 사건이 일어날 가능성을 말한다.
p(y=1|X)와 p(y=0|X) 즉, x 가 y=1 일 확률과 y=0 일 확률을 계산해 두 값을 비교하여 seabass 인지 salmon 인지 판단한다.
- Likelihood :
하지만, p(y=1|X)와 p(y=0|X) 를 직접적으로 계산을 직접적으로 할 수는 없다. 대신 likelihood인 p(X|y=1)와 p(X|y=0)를 계산할 수 있다. Likelihood는 주어진 클래스 y(예: seabass 또는 salmon)일 때, 해당 특징 X(특정 밝기)가 나타날 확률을 나타낸다. 예를 들어, seabass일 때 특정 밝기의 확률 분포를 알고 있다면, 그 값이 Likelihood 이다. 즉, 특정 클래스에서 특징이 얼마나 자주 발생하는지 측정한 값이다.
- Prior probability
하지만 likelihood 를 계산하는 것만으로는 분류를 완료하기에 충분하지 않다. p(X|y=1)과 p(X|y=0)는 단순히 주어진 클래스(예: seabass 또는 salmon)에서 해당 특징 X(밝기)가 나타날 확률이다. 하지만 각 클래스가 얼마나 자주 발생하는지 p(y=1)과 p(y=0)를 고려하지 않았다. 예를 들어, salmon이 더 적다고 가정하면 p(y=1)=0.7, p(y=0)=0.3로 계산할 수 있다.
p(y=1|X) 만 일단 계산해보면, 다음과 같다.

결론은 정확한 분류를 위해서는 prior probability 를 고려해야 한다는 것이다.

이제 베이즈 정리를 generative learning algorithm 에 적용해보자.

p(y|x) 를 계산할 수 있다면, p(y=1|x) 와 p(y=0|x) 를 각각 계산하여 더 큰 값을 만드는 y 값을 선택한다. 이 과정을 식으로 간단히 계산하면 아래와 같다. 분모에 있는 p(x) 는 항상 같으니 계산하지 않아도 된다. 어차피 크기 비교만하는 거니깐!

6. GDA (Gaussian discriminant analysis)
GDA는 generative learning algorithm의 한 종류이다. GDA는 각 클래스가 multivariate normal distribution (다변수의 정규 분포) 을 따른다고 가정한다.
🍋 Multivariate normal distribution
여러 변수들이 함께 정규분포를 따르는 분포이다. 다차원 공간에서의 확률 분포로, 1차원 정규분포를 다차원으로 확장한 형태이다.

µ (mean vector) 는 평균벡터로 각 변수의 평균값이다. σ (Covariance Matrix) 는 변수 간의 분산 및 상호 관계를 나타내는 대칭 행렬이다. 이 두 가지 주요 파라미터를 변형하면 어떤 변화가 나타나는지 살펴보자.


행렬의 a 값을 감소시키면 bandwidth 가 줄고, height 가 증가한다. 반면, a 값을 증가시키면 bandwidth 가 늘어나고, height 가 줄어든다. 행렬의 b 값은 증가할수록 모양이 양옆으로 압축된다.


b값이 음수가 되면 모양의 방향이 바뀐다. b값의 절댓값이 증가할수록 모양이 양옆으로 압축된다. µ 값은 위치를 결정한다.
GDA는 연속적인 값을 가지는 특성 x에 대해 확률 분포를 기반으로 분류 작업을 수행하는 모델이다. 각 클래스에 대한 분포를 학습하고, 새로운 데이터가 주어졌을 때 해당 데이터가 어느 클래스에 속할지 예측한다. 따라서 주어진 데이터가 특정 클래스일 조건부 확률인 p(x|y)와 p(y)를 추정하는 것으로 시작한다.
y는 Bernoulli 분포 (이항분포) 를 따른다고 가정한다.

x는 y 값에 따라 정규분포를 따른다고 가정한다. y=0일 때는 평균 $µ_0$ 을 갖는 정규분포를 따르고, y=1일 때는 평균 $µ_1$을 갖는 정규분포를 따른다. 공분산 행렬 σ는 두 클래스에서 동일하다고 설정한다. 다르게 설정하는 것도 가능하다.

GDA 의 log likelihood 는 주어진 데이터에 대해 모델의 파라미터를 추정하는 데 사용된다. 이때 추정하려는 파라미터는 $\phi$, , ,

우리의 목표는 likelihood function 을 최대화하는 것이다. 이 과정을 MLE (Maximize likelihood estimation) 이라고 한다.
Step 1: MLE 를 이용해 파라미터 $\phi$, , , 를 계산한다.

$\phi$의 식에서 나오는 I는 Indicator function 이라고 한다. 괄호 안의 식이 참이면 1을, 거짓이면 0을 반환하는 boolean function이다.
Step 2: 1단계에서 계산한 파라미터들을 기반으로, 테스트 데이터에 대해 클래스별 조건부 확률 p(x∣y=0)와 p(x∣y=1)을 계산한다. prior probability 인 p(y) 도 계산한다.

Step 3: 베이즈 정리를 사용해 posterior probabililty 을 계산한다. likelihood 와 prior probability를 곱해서 계산한다.

최종적으로 GDA가 새로운 데이터 포인트를 분류하는 방식은 2가지가 있다.
1) argmax 방법 : p(y=0|x) 와 p(y=1|x)의 값을 계산하여 더 큰 값을 선택할 수 있다.
2) threshold 방법: 기준치를 정해서 해당 값을 넘는지 여부로 분류를 한다.
🍋 GDA 그래프 읽기

- 두 클래스에 대한 가우시안 분포가 같은 모양의 원형을 띠고 있는 것은 동일한 $\sigma$ 를 공유하고 있기 때문이다.
- 보라색 선은 decision boundary 로서 이 선을 기준으로 데이터가 양쪽으로 분류된다. 경계의 한 쪽은 y=0, 다른 한 쪽은 y=1 로 예측된다.
🍋 GDA vs. Logistic regression
- 같은 데이터 셋에 대해 다른 결정 경계를 반환한다. LR은 선형 결정 경계, GDA 는 비선형적 결정 경계를 그린다.
- p(x|y) 가 가우시안 분포를 따른다면 GDA 가 효율적이다. 반복적인 계산이 필요없고 평균과 covariance 를 바로 계산하기만 하면 되기 때문이다.
- 하지만, 실제 상황에서는 데이터의 분포를 가정할 수 없는 경우가 많다. 따라서 다양한 상황에 유연하게 적용 가능한 Logistic Regression이 더 널리 쓰인다.
'AI > ML 수업 정리' 카테고리의 다른 글
| SVM (0) | 2024.10.27 |
|---|---|
| 3-1. Naive Bayes (0) | 2024.10.08 |
| 2-1. Linear Models for Regression (0) | 2024.09.20 |
| 1-2. Linear Models for Regression (0) | 2024.09.17 |
| 1-1. Introduction to Machine Learning (0) | 2024.09.14 |