Linear Models for Classification : 로지스틱 회귀,GDA, 나이브 베이즈

November·2024년 12월 24일
post-thumbnail

Logistic regression

Classification문제 : class를 예측하는 것

linear regression을 확장해서 분류 문제에 쓰겠다 ← sigmoid 함수를 추가해서 확장

logistic function으로 sigmoid function 함수를 사용함

⇒ 모든 x값에 대해 0~1 사이의 값과 맵핑됨.

왜 sigmoid function 인지? 시그모이드 함수를 미분한 형태가 굉장히 단순하다 !

g’(x) = g(x)(1-g(x))

Likelihood of β

linear regression의 error function에 해당하는 함수가 여기선 likelihood, 즉 샘플들의 Likelihood를 높이는 방식을 찾겠다

Gradient ascent

likelihood를 최대화하기 위해서 gradient ascent를 사용하겠다!

그래디언트 디센트와의 차이점은 얘는 값의 최댓값을 찾는다는 점이고, 파라미터 β 를 업데이트할 때 + 를한다는 점이다

iterative optimization algorithm for finding local maxima

  • β 초기화
  • 수렴할 때까지 β 업데이트

ℓ(β)= log L(β)

Newton’s method

파라미터를 반복적으로 업데이트하는 방법 말고 더 빨리 찾는 방법

Find a zero of a function

tangent 라인을 계속 따라가면서 x축과의 교차점(x-intercept)찾음 ⇒ 함수를 0으로 만드는 지점과 가까워진다

A fast way to find f(β )=0

So, use it to find ℓ’(β) = 0 ⇒ likelihood 함수를 미분한 값= 0을 찾는 걸 사용하자

ℓ의 Maxima 는 ℓ’(β) = 0 을 의미함 ⇒ 이걸 찾는데 Newton’s method를 이용하자

Newton’s method: c = b - f(b) / f’(b)

행렬에 위 식을 적용하기 위해서 계산과정에 Hessian Matrix가 쓰인다

장점) 빠른 수렴

단점) Hessian Matrix를 구하는건 비싸다

Discriminative learning algorithm vs Generative learning algorithm

discriminative는 해당값 p(y|x)을 직접적으로 찾는다. 따라서 경계 decision boundary를 잘 찾는 것이 중요

generative는 먼저 각 클래스에 대한 모델을 정의하고 그 다음 p(y|x)를 계산한다

bayse rule

  • Posterior probability p(y|X)
    실험 진행 후 관측하는 데이터가 y일 확률 ⇒ 베이즈룰을 적용하여 계산
  • Prior p(y)
    실험 전부터 모델이 갖고 있는 선험적 확률
  • Likelihood (probability density) p(X|y)
    실험을 통해 얻어지는 값으로 어떤 모델에서 해당 데이터가 나올 확률

주어진 샘플에 대해 seabass vs salmon을 구분할 때 Posterior probability(사후확률) 계산

p(X | y = 1): seabass의 밝기(X)에 대한 확률 밀도 함수

p(X | y = 0): salmon의 밝기(X)에 대한 확률 밀도 함수

두 조건부 확률 밀도를 비교하는 것만으로는 classification 문제를 해결하기에 충분하지 않음

농어와 연어의 사전 확률(Prior)이 다르다면, 단순히 밝기 밀도를 비교하는 것만으로는 정확한 분류가 불가능. 예를 들어, 농어가 연어보다 훨씬 많이 출현한다면, 밝기 밀도가 같더라도 농어일 확률이 더 높아질 수 있다.

We need Prior !

조건부 확률 P(A|B)P(B) = P(B|A)P(A) 라는걸 기억하자

베이즈 룰을 적용하여 posterior probabilities를 구함

p(y = 1 | X) = p(X | y = 1)p(y=1) / p(X)

Generative learning algorithm

예측을 하기 위해선,

p(y|x) = p(x|y)p(y) / p(x) by Bayse rule

Posterior distribution

p(x) = p(x | y = 1)p(y = 1) + p(x | y = 0)p(y = 0)

p(y | x)의 최댓값을 구하는 것!

💡

Q1. How is the linear regression transformed into logistic regression? For what purpose?
Use sigmoid function for the classification

Q2. Why is the gradient ascent algorithm used in logistic regression instead of gradient descent?
The goal is to increase the likelihood of each point being produced from the distribution

Q3. Explain the concept of generative learning algorithm (comparing to discriminative learning algorithm)
Not directly compute p(y|x) instead. Compute it through the likelihoods (p(x|y)) and the prior (p(y))

Gaussian discriminant analysis (GDA)

generative learning algorithm의 예시

p(x|y)가 multivariate normal distribution을 따른다는 가정이 필요

multivariate normal distribution은 뮤(평균), 공분산(covariance) 값에 따라 분포가 달라진다.

뮤(평균) : 분포의 위치를 정함

공분산 행렬(표준편차)의 값에 따라 분포의 타원형 모양이 결정되며, 이는 두 변수의 상관관계에 따라 기울기가 달라집니다.

x|y = 0 ~ N(m,q)

x|y = 1 ~ N(m,q) 각각 정규 분포를 따른다.

Log likelihood of GDA

Step1: 파라미터 값을 구한다

Step2: testing data가 주여졌을 때 대입해서 p(x|y=1) , p(x|y=0), p(y)를 구함

Step3: Posterior probability 확률 계산 ⇒ p(y = 0|x), p(y = 1|x) 둘 중에 더 큰걸 사용하거나 threshold 정해서 그거보다 큰 값을 택하는 걸로해도 됨

관찰 1: 두개의 가우시안은 같은 모양과 방향의 contour를 갖는다 ⇒ covariance matrix를 공유하기 때문

관찰 2: Straight line ⇒ decision boundary

관찰 3: 만약 data point가 경계의 한 side에 있다면 predict = 1, 그렇지 않으면 predict = 0

GDA vs Logistic regression

같은 데이터셋에 대해서 다른 decision boudary를 리턴

GDA는 관찰data가 정규분포를 따른다는 가정을 할 수 있을 때만 사용 가능 ⇒ 가정할 수 있다면 Logistic regression보다 더 빠른 메소드(반복 없음, 평균과 공분산만 계산하면 됨)

하지만 보통은 가정하기 어려움 ⇒ 실제론 임의의 data set을 사용할 경우엔 Logistic regression 사용

Naive Bayes

단순하지만 강력한 분류 모델 ⇒ text classification에 좋은 방법

x: discrete-valued (NOT continuous, real-valued)

feature vector

50만개의 단어 사전에서 이메일에 해당 단어가 나타났으면 1, 그렇지 않으면 0

50만개의 feature vector에 대해서 2^50k -1 개의 파라미터를 고려해야함.

(-1을 해주는 이유는 다 0일때, 즉 아무단어도 포함되지 않는 경우를 빼줌)

너무 많은 파라미터를 피하기 위해서 generative algorithm을 취함 ⇒ p(x|y) 모델링

여기엔 가정이 필수적 x’s are conditionally independent given y

특정 단어가 이메일에 나타날 확률은 독립적이다 ⇒ 다른 단어가 이메일에 나타날 확률에 영향을 미치지 않는다

이 가정에 기반해서 Naive bayes classifier를 사용할 수 있음

연속적으로 일어나는 사건을 ,(콤마) 로 표현

p(x1,x2,…,x50000 | y)

p(x1|y)p(x2|y,x1) … p(x50000 | y,x1,…,x49999) By chain rule

p(x1|y)p(x2|y)p(x3|y) …p(x50000|y) By Naive Bayes assumption

⇒ 각각의 x는 독립적이여서 condition을 정의하지 않아도 됨. 즉, given y만 남는다.

장점: 단순하기 때문에 적용하기 쉬움, no gradient ascent ⇒ efficient

Joint likelihood

spam ⇒ y=1, normal ⇒ y=0

p(xi = 1 |y = 1) : i번째 단어가 spam에 나타날 확률

p(xi = 1 |y = 0) : i번째 단어가 normal에 나타날 확률

p(y = 1): 스팸이 몇개인지, 노멀이 몇개인지 비율

x가 dicrete-valued가 아니라 continuous하면 어떨까?

예) “ewha” 단어가 몇번이나 나타났는가?

구간화 Discretization ⇒ 버킷을 만들어서 구간화

연속적 데이터(예: 키, 나이와 같이 연속적인 수치형 데이터)가 주어질 경우 이를 이산형(범주형)으로 변환하는 과정이 필요

Laplace smoothing

확률이 0 이되는 것을 피하기 위한 방법

의도적으로 분자(numerator)에 1을 더하고, 분모에는 K를 더함

K는 x가될 수 있는 값들의 개수

예시에선 x가 스팸, 노멀 두가지 경우가 가능해서 2를 더해줌

각 단어들에 +1을 해주면 전체 분모는 개수만큼 더해진다

Multinomial event model

이메일이 포함하고 있는 단어만 보겠다 ⇒ feature vector가 4개의 단어로만 구성, 각 단어의 index값 포함

n_i = |V| i번째 이메일에 포함된 단어의 개수

i : 이메일 자체의 인덱스

j : 단어에 대한 인덱스

Q1:Do GDA and Naïve Bayes have in common? Explain.
Both try to find the distribution of each class parameterized by
mean and covariance (or the fraction of each word appearing in
spam or normal emails) first and compute p(y|x)

Q2: What is Laplace Smoothing? Why is it needed?
Good way to handle unseen data (not in observed data)
In this way, we can assign tiny probability (closer to 0) to such ca
ses rather than 0/0

0개의 댓글