[단단한 머신러닝] 3장 선형 모델

환공지능·2022년 3월 22일
0

3장 선형 모델

3.1 기본 형식

dd개의 속성을 가지는 샘플 x=(x1;x2;x3;...xd)x = (x_1; x_2; x_3; ... x_d)이 있고, xix_ixxii번째 속성을 가지는 값이라고 가정한다면, Linear Model은 속성들의 선형 조합을 통해 예측하는 함수를 학습하는 모델이라고 정의 가능함.

f(x)=w1x1 + w2x2 + ...+wdxd + bf(x) = w_1x_1~+~w_2x_2~+~...+w_dx_d~+~b

일반적으로는 벡터 형태로 된 다음의 수식을 사용함.

f(x)=wTx + bf(x) = w^Tx ~+~b

위 식에서 w=(w1;w2;...;wd)w=(w_1; w_2; ...;w_d)이며 wwbb를 학습한 후 모델이 결정되게 됨.

💡 선형 모델은 다음과 같은 특징 가지고 있음.

  • 매우 간단하고 모델을 만들기 쉬움.
  • 해석 능력이 뛰어남.

3.2 선형 회귀

Linear Regression은 최대한 정확하게 실제 데이터를 예측하는 선형 모델을 학습하는 것을 목표로 함.

데이터 세트 DD{(x1,y1),(x2,y2),...,(xm,ym)}\{(x_1, y_1), (x_2, y_2), ... , (x_m, y_m)\}으로 정의하고, 여기서 xix_i(xi1;xi2;...;xid)(x_{i1}; x_{i2}; ...; x_{id})으로 정의함.

🔎 선형 회귀는 다음과 같은 함수를 학습함.

f(xi)=wxi+b을 통해 f(xi)yi를 얻는다.f(x_i) = wx_i + b을~통해~ f(x_i) \approx y_i를~얻는다.

위의 식에서 wwbbf(x)f(x)yy의 차이를 어떻게 측정하느냐에 달려 있음. 평균 제곱 오차(MSE)는 회귀 문제에서 가장 자주 사용하는 성능 측도이므로 MSE를 최소화하는 방법을 사용할 수 있음.

(w,b)=argmin(w,b)i=1m(f(xi)yi)2(w*, b*) = \arg\min_{(w,b)} \sum_{i=1}^{m} (f(x_i) - y_i)^2
=argmin(w,b)i=1m(f(xi)wxib)2= \arg\min_{(w,b)} \sum_{i=1}^{m} (f(x_i) - wx_i-b)^2

평균 제곱 오차를 최소화하는 방법으로 모델의 해를 구하는 방법을 최소제곱법(Least Square Method)라고 부르며, 선형 회귀에서 최소제곱법은 샘플과 유클리드 거리의 합이 가장 작은 하나의 직선을 찾는 것을 목표로 함.

wwbb의 해를 찾는 것은 MSE를 최소화하는 과정이며, 이를 선형 회귀 모델의 최소제곱 파라미터 예측(Parameter Estimation)이라고 부름.

💡 이때, 위의 식을 미분하여 다음과 같은 식을 얻을 수 있으며,

E(w,b)w=2(wi=1mxi2i=1m(yib)xi){\partial E(w,b) \over \partial w} = 2(w\sum_{i=1}^{m}x_i^2 - \sum_{i=1}^{m}(y_i -b)x_i)
E(w,b)w=2(mbi=1m(yiwxi)){\partial E(w,b) \over \partial w} = 2(mb - \sum_{i=1}^{m}(y_i - wx_i))

미분하여 0인 값을 만들어 wwbb의 최적해(Optimum Solution)의 닫힌 해(Closed-Form Solution)을 구할 수 있으며 다음과 같음.

w=i=1myi(xixˉ)i=1mxi21m(i=1mxi)2w = \frac{\sum_{i=1}^{m}y_i(x_i - \bar x)}{\sum_{i=1}^{m}x_i^2 - \frac{1}{m}(\sum_{i=1}^{m}x_i)^2}
b=1mi=1m(yiwxi)b = \frac{1}{m} \sum_{i=1}^{m}(y_i - wx_i)

3.3 로지스틱 회귀

만약 우리가 해결해야 하는 문제가 분류 문제라면 단조 미분 가능 함수 하나를 찾아내어 분류 문제의 실제 레이블 yy와 선형 회귀 모델의 예측값을 연결해 주기만 하면 됨.

결과값이 y{0,1}y \in \{0,1\}인 이진 분류 문제에서 선형 회귀 모델이 생성한 예측값 z=wT+bz = w^T + b가 실수일 때 우리는 실수 zz의 값을 0/1 값으로 변환해 주어야 하며 가장 이상적인 방법은 단위 계단 함수를 사용하는 것임.

단위 계단 함수

y={0, z<00.5, z=01, z>0y = \begin{cases}0, ~z<0\\0.5, ~z=0 \\ 1, ~z>0 \end{cases}

위의 경우 예측값 zz가 0보다 클 경우 양성값으로 0보다 작을 경우 음성값으로 주어지며, 임계값인 0이면 임의로 판별함. 하지만 단위 계단 함수는 불연속적이므로 미분이 불가능한 바 대체 함수를 찾아야 함.

시그모이드 함수

y=11+ezy = \frac{1}{1+e^{-z}}

Sigmoid Function은 zz값을 0이나 1에 근사한 yy값으로 전환하고, output이 z=0z=0 근처에서 급격하게 변화함.

🔎 z=wT+bz = w^T + b를 대입하면 다음과 같은 식을 얻을 수 있음.

y=11+e(wT+b)y = \frac{1}{1+e^{-(w^T + b)}}

🔎 양변에 lnln을 취하면

lny1y=wT+b\text{ln} \frac{y}{1-y} = w^T + b

만약 yy를 샘플 xx가 양성값이 가능성으로 본다면 1y1-y는 반대로 음성값일 가능성이 되며 이 둘의 비교값을 아래와 같이 표현하며 Odds라고 부름.

y1y\frac{y}{1-y}

즉 Odds는 xx가 양성값일 상대적 가능성을 나타내며 오즈에 대하여 로그를 취한 값을 Log Odds 또는 Logit이라고 부름.

Logestic Regression

위의 식에서 알 수 있는 것은 로지스틱 함수는 사실상 선형 회귀 모델의 예측 결과값을 사용하여 실제 데이터의 Log Odds에 근사한다는 것임. 선형 회귀 모델의 결과값을 통해 근사한 값을 구하는 이 문제는 명칭은 '회귀'이지만 사실상 일종의 '분류' 학습법임을 주의할 것!

💡 분류 모델로써 로지스텍 회귀 모델이 갖는 장점

  • 직접적으로 모델을 만들고 사전 데이터 분포에 대한 가정이 필요하지 않기 때문에 가설 분포가 부정확해서 일으킬 수 있는 문제를 피할 수 있음
  • '클래스'를 예측할 뿐 아니라 근사 확률에 대한 예측도 제공

만약 yy를 사후확률 p(y=1x)p(y=1|x)로 본다면,

lnp(y=1x)p(y=0x)=wT+b,ln\frac{p(y=1|x)}{p(y=0|x)} = w^T + b,
p(y=1x)=ewT+b1+ewT+bp(y=1|x) = \frac{e^{w^T + b}}{1+e^{w^T + b}}

따라서

p(y=0x)=11+ewT+bp(y=0|x) = \frac{1}{1+e^{w^T + b}}

결국 우리는 Maximum Likelihood Method를 통해 wwbb를 추측할 수 있으며 데이터 세트를 {(xi,yi)i1m}\{(x_i, y_i)_{i-1}^m\}이라고 정의하고 로지스틱 회귀 모델이 Log-Likelihood를 최대화한다고 한다면

l(w,b)=i=1mln p(yixi;w,b)l(w,b) = \sum_{i=1}^{m}ln~p(y_i|x_i; w,b)

즉, 각 샘플이 실제 레이블에 속할 확률이 높으면 높을수록 좋다는 것을 의미함.

3.4 선형 판별 분석(LDA)

LDA(Linear Discriminant Analysis)는 전통적인 선형 학습법으로 이진 분류 문제에서 Fisher가 가장 먼저 사용했기 때문에 '피셔 판별 분석'이라고도 부름.

LDA의 아이디어는 매우 간단한데, 훈련 데이터 세트를 정하고 샘플을 하나의 직선 위에 투영시켜, 같은 클래스에 속하는 샘플들을 가능한 한 가까운 투영점에 놓고, 서로 다른 클래스에 속한 샘플들은 투영점에서 최대한 먼 위치에 위치하도록 하여 투영된 위치에 따라 데이터의 클래스를 분류하는 방법임.

💡 LDA란?
데이터 분포를 학습해 결정 경계(Decision Boundary)를 만들어 데이터를 분류(Classification)하는 모델

3.5 다중 분류 학습

다중 분류 문제를 이진 분류 문제로 분해하여 해결할 수 있음. 여기서 관건은 1) 어떻게 다중 분류 문제를 분해할 것인가와 2) 어떤 방식으로 다수의 분류기를 앙상블할 것인가가 될 것임.

💡 가장 전형적인 분해 전략

  • 일대일 One vs. One. OvO
  • 일대다 One vs. Rest. OvR
  • 다대다 Many vs. Many. MvM

3.6 클래스 불균형 문제

앞서 소개한 분류 학습법은 모두 하나의 공통 기본 가설이 있음.

"서로 다른 클래스의 훈련 샘플들의 수가 같다"

그러나 만약 서로 다른 클래스의 훈련 샘플 수의 차이가 크다면 학습 과정이 매우 복잡해질 것임. Class Imbalance는 분류 문제에서 서로 다른 클래스의 훈련 샘플 수에 큰 차이가 있는 상황을 의미함.

💡 자주 사용되는 해결 방안은 Rescaling

  • 직접 훈련 세트 내의 음성값 샘플을 Undersampling. 일정한 음성값을 제외하여 양성, 음성값 수를 최대한 비슷하게 만든 후 학습
  • 훈련 세트 내의 양성값 샘플을 Oversampling. 양성 샘플 수를 늘려 양성, 음성 샘플 수의 비율을 비슷하게 만든 후 학습 진행
  • 원래 훈련 세트에 기반하여 학습하지만, 학습된 분류기를 사용하여 예측할 때는 결정 과정을 진행하는 Threshold-Moving 방식

.
.
.

Reference

profile
데이터사이언티스트 대학원생

0개의 댓글