5 minute read

Logistic Regression이란?Permalink

보통 설명변수와 반응변수의 관계를 생각할 때, 선형회귀 알고리즘에 익숙한 우리는 반응변수 Y 를 수치형으로 생각한다.

하지만 만약 출력값인 Y​가 범주형이라면 우리는 입력값 X​를 넣어 여러 클래스 중 알맞은 클래스로 Y​를 분류하는 것을 기대할 것이다.

다시말해, input 으로 X값을 집어넣어 Y값을 수치로 예측하는 것이 아닌, input 으로 X를 집어넣었을 때 Y는 어떻게 분류되는지에 대해 알아보고자 하는 것이다.

선형회귀에서의 작업Permalink


단순 선형회귀에서 기존에 우리가 했던 작업은 yi=β0+β1Xi+ϵi​ 라는 회귀식에서 출발한다.

위의 식은 기존 모집단의 회귀식 Y=β0+β1X​ 에서 관측값에 대한 오차 ϵ​ 을 추가한 것인데 우리는 이 오차에 대한 가정을 N(0,σ2)​을 따른다고 하기 때문에 회귀계수 추정을 위한 관측값들의 추정 회귀식에서기댓값을 취하면 E[Yi]=β0+β1Xi​가 된다.

한편 여기서 Xi​들은 상수이므로 (관측값) Yi​의 분산역시 σ2​으로 주어진다.

따라서 yi​는 X=xi​로 주어질 때 평균이 β0+β1Xi​ 이고 분산이 σ2​인 확률변수이다

그렇다면 이 회귀식에서 적절한 해석은 어떻게 해야하는가?

intercept인 β0y=0일때의 Y의 평균값이며 β1xi 가 1단위 증가할 때 E[Y]의 변화량이다 (위식에서 X가 범주형 변수인 경우에는 β1에 대한 해석은 X=0or1일 때 평균값의 차이이다!)

즉, 단순선형회귀에서는 데이터들의 추세를 가장 잘 표현해주는 직선이다.

여기서 우리는 단순선형회귀에서 적절한 β값을 찾기 위한 강력한 idea인 최소제곱법 ni=1(y^yi)2을 이용하는데 자세한 과정은 생략하겠다.

이 과정을 거친 후의 회귀식은 식(1)과 같이 해석이 굉장히 직관적이며 β0,β1로만 이루어진 경우에는 시각적으로도 이해하기 쉽다.

그러나 y가 범주형일 때 적절한 회귀 직선을 그어 input의 x값으로 y를 분류하는 것은 꽤 애매한 작업일 수 있다.

그 이유는 기존 선형회귀처럼 직선을 그으면 주어지는 X의 값의 범위 제한이 없다면 Y값의 범위는 이론적으로 (,) 가 되는데 실제 우리의 목적은 y의 클래스를 분류하는 것이기때문에 0과 1을 분류하기 위한 적당한 경계값(Y)을 찾기 어렵기 때문이다.


그림 1. 범주형 데이터에 대해 선형회귀 모델을 적용하는 경우

위 그림에서 보듯이 y가 범주형인 데이터에 선형회귀 모델을 fitting 시킨 후 그래프를 그리니 해석하기가 애매하다.

따라서 범주형 데이터에 해석을 진행할 때 좀 더 용이할 수 있게 기존 선형회귀 모델이 아닌 다른 모델을 생각해보는 게 자연스럽다. 그렇기에 데이터를 보는 관점을 조금 뒤집어 보자.

우선 여기서의 Yi​​​​ 에 을 우리는 확률(probability)이란 관점으로 바라보도록 하자.

여기서 Y​​는 두가지 경우밖에 없기 때문에 P(Yi=1)​​​을 πi​라고 하면P(Yi=0)​은 자연스럽게 1πi​가되며 그렇다면 E[Yi]​는 자연스럽게 πi​​가 된다.

그러면 우리는 E[Yi]=πi​​​ 라는 식을 얻었는데, 앞서 단순 선형회귀에서의 E[Yi]=β0+β1Xi 의 식과 연결시킨다면 πi=β0+β1Xi 가 되며 이 식은 왠지 어색해보인다.

왜냐하면 범위가 너무 맞지 않기 때문이다. 따라서 우리는 위 식의 우변의 범위를 한정시켜서 좌변의 식 즉, 확률로써 바라본 E[Y]와의 관계를 만들어 적절한 β값을 추정하여 분류를 알맞게 하는 모델을 만들 수 있다.

승산(Odds)에 대하여Permalink

우리는 πi=β0+β1Xi​이 식에서 좌변과 우변을 알맞게 조정하기 위해 우선 승산에 대한 개념을 알아야한다.

승산(Odds)이란 간단히 임의의 사건 A​​가 발생하지 않을 확률 대비 일어날 확률의 비율을 뜻하는 개념이다.

예로 성공과 실패의 경우밖에 없는 어떤 게임 A​에서 성공확률은 p​라고 할 때 Odds는 p1p​ 이다.


그림 2. p값에 따른 Odds의 변화

이 odds는 위 그림과 같이 p​​가 0에 수렴한다면 0​​로 p​​가 1로 수렴한다면 ​​로 발산할 것이다.

이런 승산비가 왜 중요한 것인가?

우리가 알고자하는 π​가 임의의 x​일 때 odds의 개념을 대입한다면

odds=π(X=x)1π(X=x) 로 표현 가능하다.

이 odds에 log를 취하면 어떻게 될까? log(odds)log(π(X=x)1π(X=x))이 되는데 이 함수는 아래 그림에서 보듯 범위가 ( )가 된다.


그림 3. p값 변화에 따른 log(Odds)의 변화

우리는 이렇게 Odds의 개념을 활용하여 π값의 범위를 β0+β1Xi과 맞춰줬다!

log(π(X=x)1π(X=x)) =β0+β1Xi 식(1)

우리는 이제 위의 식을 알게 되었는데 우리는 X값에 대한 Y의 변화를 알고싶은 것이기에 이 식의 역함수 식을 구한다면

π(X=x)=11+e((β0+β1X))

라는 식을 얻게되고 이 식에서의 π(X=x)E[Y]와 같으므로

E[Y]=11+e((β0+β1X))

라는 결과에 도달하게 된다. 다시말해, Y의 결과가 0과 1밖에 없는 확률변수라고 했을 때 우리는 βX의 변화에 따라 E[Y]Y값의 기댓값의 변화를 알게됐다.

다만 식(2)만 놓고 보았을 때는 β에 대한 해석이 애매할 수 있지만 식(1)의 과정에서 β의 의미를 본다면 β의 계수는 π(X=x)의 확률을 가진 Ylog()의 영향을 주는구나라고 좀 더 직관적으로 해석이 가능하다.

즉, β값이 증가한다면 실패확률 대비 성공확률의 로그비만큼 늘어나는 것이다.

Y에 대한 이 확률밀도함수를 보통 로지스틱 함수라고 하는데 이 모양은 앞서 식의 X축과Y축을 뒤집은 모양이다.

앞서 우리가 E[Y]에 대해 적당한 변형을 찾아보자는 흐름에서 이 함수를 도출한 것과 같이 다른 함수를 선택할 수도 있지만 굳이 sigmoid 함수를 쓰는 이유는 독립변수 xx들의 각 클래스에 대한 분포가 정규분포를 따를 것으로 가정하기 때문인데 이에 대해선 추후에 다뤄보도록 하자.


그림 4.로지스틱함수

훈련과 비용함수Permalink

우리는 이제 로지스틱 회귀모델이 어떻게 나왔고 어떻게 해석하는지 살펴봤다. 이제 model을 결정했기 때문에 이 model에 대한 Error을 정의하고 이를 최소화 하는 파라미터를 결정하는 방법에 대해 살펴보자.

우리가 지금 생각하고 있는 문제는 binary classification인데, 출력은 0 혹은 1로 정해져 있다. 즉, 선형회귀 모델과 달리 Input에 대한 결과는 맞거나 틀리거나 둘 중 하나가 된다.

따라서, 우리는 정답을 맞추었을때는 Error 값을 0으로, 정답을 맞추지 못했을 때는 Error값을 가능한 크게 줄 수 있도록 하자.

P=11+e((β0+β1X)) 이 식이 우리의 model 출력함수가 되는데 , 우리가 원하는 것은 원래의 라벨 y1일 때 P의 값이 0이면 에러 값을 크게 주고, 또, 라벨 y0일 때 P​의 값이 1이면 에러 값을 크게 주는 것이다.

이것을 로그함수를 이용하여 쓸 수 있는데, 로그함수의 형태에서는 {limx0+log(x)=log(1)=0가 되기 때문에 우리는 이 xP를 대입해 생각해본다면

우리의 에러는 E(y,P)={log(P) if y=1log(1P) if y=0 이렇게 생각이 가능하다. 이러한 과정은 나름 직관적으로 이해할 수 있다.

즉 우리가 모델에 x를 input할 때 우리는 Y에 대한 확률을 계산한다. 이 과정에서 이 확률이 실제 label의 y​값과 다르면 다를수록 이 Error는 기하급수적으로 커질 것이다.

예를들어 실제 label은 0이지만 우리가 예측하는 P값이 1과 가까워지면 가까워 질 수록 오차는 로 발산하게 되는 것이다.

각 샘플에 대한 비용함수를 이렇게 정의한다면 우리는 모든 훈련샘플의 비용을 평균하여 전체 훈련세트의 비용함수를 구할 수 있고 이 비용함수는

J(θ)=1mmi[y(i)log(^pi)+(1y(i))log(1^p(i))]​ 로 정의되는데

위 식은 겁먹을 필요없이 그저 어떤 관측치의 label 이 0이라면 (1y(i))log(1^p(i))​에서 Error을 구한 후 1이라면 y(i)log(^pi)​​​에서 Error을 구한 후 모든 관측치의 Error의 평균을 구하겠다는 이야기이다.

뜬금없이 위 식에서 θ​​​가 왜 나오는지 이해가 안될 수도 있다. 내가 앞서 β​​​라고 표현한 이 prameter을 편의상 θ​​​라고 다시 표현한 것인데 위 비용함수 식에서 확률변수 P​​​​​는 θ​(앞서 β​​​라고 표현한​​)에 따라 달라지기 때문이다.

P의 표현은 원래 P(X,θ)이기 때문에 θ가 튀어나온 것이다.

안타깝게도 이 비용함수의 최솟값을 계산하는 알려진 해가 없어 정규방정식이 따로 없다.

하지만 이 함수는 볼록함수이기 때문에 경사하강법이나 최적화 알고리즘을 통해 전역 최솟값을 찾을 수 있다. 즉 우리는 위 비용함수의 편도함수를 구한 후 최솟값을 갖는 θ​​를 찾을 수 있다.

여기서 e​의 미분은 자기자신이라는 특이한 성질 때문에 편미분을 계산하는 것이 그렇게 어렵진 않은데 이부분에 있어선 기회가 된다면 다시 작성해 보겠다.

sklearn을 활용한 Logistic-model 구축Permalink

이제 Iris 데이터로 python에서 모델을 직접 만들어 보자.