Posts List

[Data Mining] 7. Classification - Logistic regression


Logistic regression

위 그림과 같은 sample이 있다고 하자. 예를 들면 공부시간(X)과 시험합격여부(y) 데이터를 표현했다고 할 수 있다. 시험합격여부를 분류하기 위해 취할 수 있는 가장 단순한 분석방법은 선형회귀를 취해보는 것이다. 그럼 어느정도는 쓸 수 있을 것이다. 예를 들어 sample값이 점선보다 크면 Pass, 작으면 Fail으로 분류할 수 있기 때문이다. 하지만 실제로 공부시간이 많을수록 시험합격확률은 분명 높아지기 때문에(빨간점) 위 그림의 점선(선형회귀)으로는 제대로 분류를 예측 할 수가 없다.


그럼 만약에 이렇게 0~1 사이의 값을 갖는 비선형함수가 있다면 어떨까? 0→1로 전환되는 지점을 설정할 수만 있다면 위 문제는 쉽게 해결 할 수 있다. 이와 같은 비선형 함수를 logistic 함수라하며, 이 함수를 이용해 분류문제를 해결하는 방법이 바로 Logistic regression이다.

Logistic regression의 출력은 확률이다. (ex. P(study = 10) = 1.0)

로지스틱 회귀모형은 아래와 같이 종속변수의 종류에 따라 3가지로 나뉘는데, 이번 챕터에서는 아래 3가지 회귀모형의 원리에 대해서 자세히 다룬다.

  • 이분로지스틱회귀(binary logistic regression)
     : 종속변수가 2개의 범주를 가질 때 (ex. 불량/정상, 질병 유/무 등)
  • 명목로지스틱회귀(nominal logistic regression)
     : 종속변수가 3개 이상이며, 범주간의 순서가 없을 때(ex. A/B/C불량, 사과/배/수박 등)
  • 서열로지스틱회귀(ordinal logistic regression)
     : 종속변수가 3개 이상이며, 범주간의 순서가 있을 때(ex. 1/2/3등급)

1. 이분(binary) 로지스틱 회귀

가장 기본이 되는 회귀모형이다. 종속변수가 0 vs. 1, 즉 2개의 범주인 경우이며, 독립변수가 종속변수일 확률 (Pi = P{Yi=1})을 예측한다.

사실 위의 성적 예제를 이해했다면 이분 로지스틱 회귀문제를 거의다 이해했다고 할 수 있다. 우리는 출력값 Pi가 확률이길 원하는데 선형함수(Pi = β0 + β1X)는 확률이 아닌 선형적으로 증가하는 함수이다. 그렇기 때문에 우리에게 필요한 것은 선형함수를 확률함수로 변환시킬 로짓변환이며, 로짓변환을 거친 함수는 로지스틱 회귀모형이 된다.

로짓변환 : 선형함수 y 를 0-1사이 값을 갖는 log(y/(1-y))로 변환하는 것


위 식은 y=1일 확률을 계산하기 위한 로지스틱함수며, 0~1사이 값을 갖는다.
(이런 형태의 함수를 sigmoid 함수라고 한다. 인공신경망 때도 등장하니 기억해두자.)

위 식을 잘 살펴보면 선형회귀식이 exponential 함수에 삽입된 것을 알 수 있고, 로지스틱회귀함수의 형태는 회귀계수 β0와 β1으로 변형시킬 수 있다. 즉, 로지스틱회귀모형은 이 두 파라미터(β0, β1)를 추정하는 회귀모형이다.

※ 만약 독립변수가 많다면(다중로지스틱회귀) 동일한 방법으로 (Pi = β0 + β1X1 + ... βnX1)을 로짓변환하면(exponential 함수에 대입하면) 된다.

(부록) 위 표기법은 주로 머신러닝을 연구하는 사람들이 즐겨쓰는 표기법이며 이해하기가 쉽다. 반면 통계학에서는 위 표기보다 아래의 표기를 더 즐겨쓴다. 이 표기법은 한눈에 이해하긴 힘들지만 해석하기가 편한 장점이 있다. (X가 1단위 증가할 때 exp(β1)의 승산비를 가진다.)
(회귀계수 해석에 대한 더 자세한 내용은 Deep play님의 글에 잘 설명되어 있다.)

 


이제 회귀계수의 추정 방법에 대해서 알아보자.

로지스틱회귀모형을 구하려면 결국 β0와 β1을 추정해야하는데, 선형회귀처럼 최소자승법을 적용하기는 어렵다. (P가 정규분포가 아닌 베르누이분포를 따르기 때문) 그래서 오차를 최소화 하는 방법이 아닌 likelihood를 최대화 하는 최우추정법을 통해 추정한다. (maximum likelihood estimation) 

※ likelihood를 왜 최대화해야 하는지 잠깐 살펴보자. likelihood는 P(y | β)로 표현되며, 해석하면 「회귀 계수가 β일때 y일 확률」이다. 즉, P(y | β)를 최대화 시키는 β를 찾으면 y도 잘 예측한다는 의미이다.

최우추정을 하기 전에 베르누이 확률밀도 함수로부터 likelihood를 계산하는 함수를 아래와 같이 계산할 수 있다. (conditional 확률 = Π 현재 사건이 일어날 확률 x 이전 사건의 확률)

L = Πi=1~n f( yi ) = Πi=1~n Pi yi( 1 - Pi )1-yi

위 likelihood 함수를 최대화 하는 것이 어렵기 때문에 양변에 log를 취해서 아래와 같이 최종 우도함수(likelihood function)를 도출할 수 있으며, 이를 최대화시키면 로지스틱회귀계수인 β0와 β1를 구할 수 있다.

log L = Σi=1~n yi ( β0 + β1X1 ) - Σi=1~n log(1 + eβ0 + β1X1)

※ 베르누이(Bernoulli)분포 : 사건의 결과가 성공/실패로 나뉘며, 성공이면 확률변수 X=1, 실패면 X=0을 가질 때 이 확률 변수를 베르누이확률변수라 한다. 이 베르누이 확률변수로 이루어진 확률분포를 베르누이 분포라 한다. 참고로 베르누이 확률밀도함수는 아래와 같다.
fi(yi) = P{Yi = yi} = Piyi(1-Pi)1-yi, yi = 0, 1

※ 잠깐 최우추정법에 대해 짚고 넘어가자.

확률밀도함수는 기본적으로 x의 함수다. 하지만 x와 평균, 표준편차가 주어지면 평균과 표준편차의 함수가되며 이 함수를 likelihood function 이라고 한다. likelihood함수는 그림과 같이 위로 convex한 3차원 그래프를 그리게 되는데 이 그래프의 최대점을 찾는 것이 최우(maximum likelihood)추정법이다. 즉, likelihood를 최대로 하는 평균과 표준편차를 찾는 것이다.


2. 명목(nominal) 로지스틱 회귀

이제 종속변수가 3가지 이상이면서 순서 없는 범주를 예측하는 경우를 생각해보자. 예를 들어 A/B/C불량 처럼 순서가 없는경우인데, 이 때는 명목 로지스틱 회귀(nominal logistic regression)로 접근할 수 있다. 

위 식은 이분 로지스틱 회귀에서의 로짓변환식이다. 이 식을 잘 보면 참일 확률(P)과 거짓일 확률(1-P)의 비율이다. 

이 아디이어의 연장선으로 명목 로지스틱 회귀에서는 참/거짓 두 사건 확률을 비교하는 것이 아니라, 기준이 되는 사건과 비교대상의 사건확률을 비교한다. 예를 들면 3번째 사건이 일어날 확률 P3 vs. 1번째 사건이 일어날 확률 P1, 혹은 P3 vs. P2를 비교하는 것이다. 이런 로짓 함수를 기준범주 로짓모형(Baseline-category Logit model)이라 부르며, 명목 로지스틱회귀 모형은 아래와 같다. 

이 J-1개의 로그함수를 마찬가지로 최우추정법을 J-1번 수행하면 J-1개의 파라미터 (α, β) 쌍을 구할 수 있다.

※ 위 식을 보다 직관적으로 풀어보면 왜 J-1개 방정식이 나오는지 알 수 있다.
    - log(P1 / PJ) : 범주 1과 J를 비교하는 모델
    - log(P2 / PJ) : 범주 2와 J를 비교하는 모델
    -  ...
    - J-1개 모든 logit 함수 결과의 합 = 1



실제로 3개 종속변수를 분류하는 명목로짓모형을 구현하면 위와 같이 2개의 로짓모형이 만들어 지는 것을 확인할 수 있다.

3. 서열(ordinal) 로지스틱 회귀모형

이분(binary) 혹은 명목(nominal) 로지스틱 회귀는 서로 다른 두 사건이 일어날 확률을 비교했었다. 

만약 범주에 순서가 있다면,(ex. 품질등급 1/2/3등급) 각 사건을 비교하는 것 보다 누적확률로 모형을 표현했을 때 효과적이다. 품질등급 1등급이 될 확률이 낮으면 2등급, 더 낮으면 3등급으로 분류할 수 있는 것과 같은 개념이다. 이런 개념으로 범주를 분류하는 것이 서열 로지스틱 회귀모형이며, 아래와 같은 누적 로짓 모형(cumulative logit model)을 사용한다. 

위 수식을 살펴보면 분자에는 누적확률, 분모는 1-누적확률로 구성되어 있다. 

특이한 점은 명목 로지스틱 회귀에서는 범주 별로 파라미터 α, β를 모두 다르게 추정했는데, 서열 로지스틱 회귀 모형은 확률이 누적되는 방향(기울기)가 같기 때문에 β를 범주에 관계없이 일정하다고 가정한다. 

각 범주의 확률은 위와 같이 계산할 수 있는데, 수식의 설명보다는 예제를 한번 보도록 하자.

위 예제는 어떤 통신장치의 잡음과 소리의 손실에 따라 수집된 고객 만족도 데이터이다. 위 데이터로 서열 로지스틱모형을 추정하면 아래와 같다.

보다시피 만족도 3개 범주를 분류하기 위해 2개의 모델이 도출되었는데 두 모델의 상수만 다르고 독립변수 2개의 회귀계수는 같은 값을 공유하고 있는 것을 확인할 수 있다.

그리고 추정된 모형을 토대로 P1, P2, P3를 구할 수 있고, 가장 큰 확률을 가지는 범주로 예측 결과를 도출할 수 있다.


(부록) Link function

모든 분류 회귀모형에는 link function이라는 옵션이 있다. link function은 logit function처럼 선형함수를 0-1 사이의 값을 갖는 함수로 변환해주는 함수이다.

Logistic regression에서는 logit변환을 통해 회귀 모형을 구했다. 

하지만 logit변환 외에도 다양한 방법으로 선형함수를 0~1의 값을 갖게 하는 변환 함수들이 있는데, 'regression link function'으로 검색하면 아래와 같이 다양한 함수를 확인할 수 있다. 즉, 선형함수를 0~1로만 변환시킬 수 있다면 logit변환이 아니더라도 얼마든지 분류문제에 확인할 수 있다는 것이다.

  • gompit → gomperts function
  • probit → 확률누적분포함수
  • normit → 정규누적분포함수
여러 변환함수가 있음에도 굳이 logit변환을 사용하는 이유는 해석이 용이하기 때문이다.

앞서 잠깐 언급했지만, 로짓 함수는 위와 같은데, 위 함수를 해석하면 X가 1단위 변동이 생기면 y=1일 확률은 exp(β)만큼 증가(=승선비)하는 것을 알 수 있다. 반면, gompit / probit / normit과 같은 다른 변환함수는 이런 해석이 불가능하다.

댓글 쓰기

0 댓글