본문 바로가기
  • Fearless
기계학습/ML

[ML개론] (7) Logistic Regression & sigmoid function

by Albatross 2022. 2. 1.
반응형

일전에 살펴봤듯이 Decision Boundary는 Class를 구분짓는 기준선을 의미한다. Optimized Classification에서는 P(Y=y1|X)=P(Y=y2|x)가 되는 X가 decision boundary의 역할을 한다. 

Decision Boundary에서 Bayes Risk, 즉 내가 특정 class를 선택했을 때 해당 선택이 틀릴 확률은 반반이 된다. Decision Boundary는 Logistic Regression을 활용하면 필연적으로 존재할 수 밖에 없다. 그런데 만약 P(Y|X)를 linear한 형태로 채택한다면 Bayes risk는 하늘색 영역처럼 엄청 높아진다. 그러나 빨간/초록색 곡선과 같이 curve를 채택하면 Bayes Risk는 매우 낮아질 것이다. 우리는 이 curve를 sigmoid function이라 부른다. 

 

신용등급을 심사하는 경우가 있다고 가정하자. 우리는 T(1)/F(0)으로 양분되는 class C에 대해 판단을 내려야한다. 이 때 주어진 feature는 continuous variable인 A15다. 

왼쪽 그림을 보면 Y=0, 즉 신용등급 평가 탈락자는 대략 x<=1이다. 다시 말해 P(X<=1|Y=0)이 매우 높음을 확인할 수 있다. 물론 P(X<=1|Y=1) 또한 높은 수치를 기록하고 있으나 전자의 경우 거의 1이다. X를 log화하여 exponential한 증가세를 linear하게 변화할 수 있다. 이 때 우리는 둘간의 차이를 더욱 명확하게 파악할 수 있다. 

 

일단 dataset을 통해 Y를 추정(분류)해야하니까 그 방법으로서 linear regression을 활용한다. 그러나 Y=0 or 1인 discrete한 상황 속에서 linear regression을 활용한다는 것이 다소 우습다. 실제로 좌측상단의 그림의 빨간점이 선형회귀를 통해 도출한 prediction인데 크게 어긋나는 것을 볼 수 있다. 게다가 X와 P(Y|X)가 정비례한다는 data 습성 때문에 특정 지점을 벗어나면 P(Y|X)가 1을 넘어서게 되니 discrete outcome에 대한 분류를 하기엔 적절치 못하단 것을 알 수 있다. 

이에 대비해 logistic regression을 활용한 경우인 초록색 점들을 보자. 참고로 가시성을 높이기 위해 log화했다. linear regression을 했을때의 decision boundary는 8 부근이고, logistic은 5 부근이다. logistic regression을 활용하면 linear에 비해 Y=0 & X=5~8인 dataset에 대해 error가 발생한다. 그러나 Y=1 & X=5~8인 dataset은 잘 분류될 것이다. 그 대소를 비교해봤을 때 error가 더 적다는 사실을 확인할 수 있다. 

 

여기서 정리하자면, linear regression과 logistic regression의 차이는 sigmoid function의 존재 여부에 있다. 후자 또한 regression을 통해 input data X를 class Y에 fit시킨다는 점에선 전자와 유사하지만, sigmoid function을 통해서 Y를 '확률'로 바꿔준다. 즉 P(Y|X)를 [0,1]에 존재하도록 만들어준다는 점에서 linear regression과 큰 차이가 존재한다. 또한 상술했듯이 sigmoid function이 nonlinear하기 때문에 bayes risk를 최소화할 수 있다. 

 

sigmoid function은 특정 Y구간 내로 제한되어있고 미분가능하며 real function이며 모든 input에 대해 정의되었으며 그리고 1차 도함수가 양수여야만 한다. 이러한 조건을 충족하는 여러 함수가 존재하는데 그 중 우리는 logistic function을 채택한다. logistic function을 사용했을 때 미분을 구하기 쉽기 때문에 이를 선호한다. 미분은 optimization에 있어서 필수과정이기 때문이다. 

 

좌측 그림은 logistic function의 역함수인 logit function이다. 역함수의 관계에 놓여있기 때문에 logit function에서의 X값은 logistic function에서의 p값이다. 마찬가지로 Y값은 X(feature)가 된다. 우리는 x = log(p/1-p)의 형태의 sigmoid function을 구하게된다.

그러나 sigmoid함수가 우리의 dataset에 fit하지 않는 경우가 많기 때문에 이를 classifier로 사용하기 위해선 그 크기(*a)와 위치(+b)를 조절해줄 필요가 있다. 이전 포스팅의 linear regression에서 확인했듯이 ax2+ax1(x1=1)의 형태로 변형하고 행렬의 곱인 X*theta 형태로 변형한다. 이제 우리는 classifier를 최적화하기 위해 theta를 regression의 방법을 통해 구한다.

 

위 수식이 이해하기에 불편함이 있어 위 그림으로 다시 정리해보았다. 여지껏 우리가 무엇을 구하기 위해 달려왔는지 다시 상기해보자. 

첫째, 우리는 input data X의 Class Y를 classification해주는 모형을 만들려고 한다. 이는 linear regression과는 다소 다른 측면이 있다. 우선 linear regression은 Y의 범위가 없으며 input data X와 Y간의 관계를 선형으로 규정한다. 그러나 Logistic Regression은 추정하고자 하는 Y의 범위가 [0,1] 사이로 정해져있으며, input data X와 Y간의 관계가 logit function의 역함수를 따르기 때문에 비선형적이다. 

둘째, Y(class)는 0 or 1처럼 discrete한 complement 관계에 놓여있는데 우리가 Logistic Regression을 통해 구하려는 값은 Y가 아니라 P(Y|X)라는 점을 명심해야한다. 여기서 한번 헷갈리면 이 대수적인 풀이들이 모두 무용지물이 되버린다. 

셋째, X값을 Y[0,1]로 끼워넣기 위해선 fitting해주는 작업이 필요하다. 이를 위해 우리는 logit function의 역함수인 logistic function을 활용한다. 참고로 이 fitting을 도와주는 함수들을 통틀어 sigmoid function이라 부르고 대부분의 경우 logistic func이 사용되지만 상황에 따라 다양한 종류의 함수도 활용된다. 위 그림에서 logit function은 f(p) = log(p/1-p)인데 이를 역함수 취해주면 p=e^f(p)/(1+e^f(p))가 된다. p는 [0,1] 사이에 놓여있으니 이 p가 P(Y|X)가 되는 것이고, f(p)가 X의 역할을 하게 된다. 

넷째, X값과 P(Y|X)값을 regession을 통해 fitting 시켜야한다. 모든 logistic function은 위와 같은 모형을 갖고 획일화된 모형을 가진다. 그러나 우리의 dataset인 X와 P(Y|X)의 관계를 잘 설명하기 위해 fitting 해주어야하는데 이는 이전에 살펴본 regression과 똑같다. f(P) 함수가 X라고 했는데 이를 theta를 통해 adjust해주어 X값에 맞는 P(Y|X)를 조정해주면 된다.

 

 

여지껏 세번째 단계인 왜 logistic function을 활용하는지에 대해 알아보았다면, 이제 네번째 단계로 넘어가 theta를 잘 approximate하여 X와 P(Y|X)를 잘 fitting시켜보자. 

MCLE로 넘어가기에 앞서 이전에 배운 MLE를 상기해보자. 이는 기존의 trial로 theta(mean, variance)를 파악했기에 그 확률분포를 미리 알고있고, 주어진 data를 가장 잘 설명하는 theta를 다시 update해주는 방식이다. 

 

MCLE(maximum conditional likelihood estimation)은 기존 MLE에서 condition만 더 붙은 경우다. 여기서 condition은 input data인 X를 뜻한다. MLE에선 "기존 trial을 통해 theta가 k인것을 알아냈는데, 이 것을 기반으로 우리가 가진 data의 확률을 maximize하는 k hat을 찾아봐"였다면, MCLE는 "기존 trial을 통해 input data가 Xi인 상황에선 theta가 k인것을 알았으니 우리가 가진 data Y의 확률을 maximize하는 k hat을 구해봐"인 것이다. 

여지껏 계속 봐왔던 작업인 '양변에 log취하기'로 계산을 곱에서 합으로 변경해주면 위와 같은 식이 도출된다. 

 

수식이 너무 많이 등장해서 머리가 아프지만 잘 따라가보자. 

우리는 X와 P(Y|X)를 잘 matching시켜주는 theta를 찾아야한다. 그런데 이 optimized theta는 위 식을 최대화해야만 한다. 위 식을 대수적으로 해결할 수 있게 풀어쓰면 위 그림과 같다. Yi{log(mu(Xi)/(1-mu(Xi)))} + log(1-mu(Xi))가 logP(Yi|Xi,theta)다. 이 때 log(mu(Xi)/(1-mu(Xi)))는 logit function f(p)의 형태를 지니고 있고, 이는 X*theta이니 치환해준다. 또한 mu(Xi)=p이니 이는 e^(X*theta) / (1+e^(X*theat))다. 결과적으로 YiXi(theta) + log(1+e^(Xi*theta))가 logP(Yi|Xi,theta)다. 

 

여지껏 노가다해서 구한 수식을 대입하면 위와 같이 나온다. 이를 최대화하기 위해 theta로 편미분을 취해주면 아래 파란 글씨로 쓰인 수식이 도출된다. 이 수식이 0이 되는 지점이 P(Yi|Xi;theta)가 maximized되는 지점이며 이 때의 theta를 구하는 것이 logistic regression의 최종적인 목표라고 할 수 있겠다. 

 

그러나 여기서 우리는 난관에 봉착하게 된다. 이전에 올린 포스팅(https://alba-tross.tistory.com/61?category=999366)에서 봤듯이 linear regression은 closed form의 형태로 optimized theta를 도출해내는데, logistic regression의 경우 Y에 해당하는 값이 P(Yi=1|Xi,theta), 즉 logistic function이기 때문에 선형적인 계산을 할 수가 없다. 따라서 우리는 다음 글에서 살펴볼 gradient descent method를 활용한다. 

반응형