for textmining

로지스틱 회귀

|

이번 포스팅에선 범주형 변수를 예측하는 모델인 로지스틱 회귀(Logistic Regression)에 대해 살펴보려고 합니다. 이번 글은 고려대 강필성 교수님과 역시 같은 대학의 김성범, 정순영 교수님 강의를 정리했음을 먼저 밝힙니다. 로지스틱회귀의 파라메터 추정에 관해서는 이곳을 참고하시면 좋을 것 같습니다. 그럼 시작하겠습니다.

문제의식

다중선형회귀(Multiple Linear Regression)는 수치형 설명변수 $X$와 연속형 숫자로 이뤄진 종속변수 $Y$ 간의 관계를 선형으로 가정하고 이를 가장 잘 표현할 수 있는 회귀계수를 데이터로부터 추정하는 모델입니다. 이 회귀계수들은 모델의 예측값과 실제값의 차이, 즉 오차제곱합(error sum of squares)을 최소로 하는 값들입니다. 이를 만족하는 최적의 계수들은 회귀계수에 대해 미분한 식을 0으로 놓고 풀면 명시적인 해를 구할 수 있습니다. 선형회귀의 파라메터 추정과 관련해서는 이곳을 참고하시면 좋을 것 같습니다.

어쨌든 설명변수가 $p$개인 다중선형회귀의 일반 식은 아래와 같이 쓸 수 있습니다.

\[y={ \beta }_{ 0 }+{ \beta }_{ 1 }{ x }_{ 1 }+{ \beta }_{ 2 }{ x }_{ 2 }+...+{ \beta }_{ p }{ x }_{ p }+\varepsilon\]

한번 예를 들어보겠습니다. 33명의 성인 여성에 대한 나이와 혈압 데이터가 좌측 하단 표와 같이 주어졌다고 칩시다. 그러면 우리는 오차제곱합을 최소로 하는 회귀계수를 구할 수 있고 이를 그래프로 그리면 우측 하단 그림과 같습니다. 나이라는 설명변수에 대응하는 계수는 1.222로 나타났는데요, 이를 통해 우리는 나이를 한살 더 먹으면 혈압이 1.222mm/Hg만큼 증가한다는 걸 알 수 있게 됩니다.

그러면 혈압이라는 연속형 숫자 대신 범주형 변수를 이용해 위와 같은 회귀모델을 구축한다면 어떤 일이 발생할까요? 좌측 하단과 같이 나이와 암 발생여부(1이면 발병, 0이면 정상) 데이터가 주어졌다고 칩시다. 이를 위와 동일한 방식으로 회귀모델을 구축하고 그래프로 그리면 우측 하단과 같이 우스꽝스러운 모양이 될 겁니다.

위와 같은 문제가 발생하는 근본적인 이유는 종속변수 Y의 성질 때문입니다. 혈압의 경우 숫자 그 자체로 의미를 지니는 변수이지만, 암 발생여부는 그렇지 않습니다. 발병(1)과 정상(0) 사이에 중간 범주가 없을 뿐더러 심지어 정상을 1, 발병을 0으로 바꾸어도 큰 상관이 없습니다. 숫자가 아무 의미를 지니지 않는다는 얘기죠. 이처럼 Y가 범주형(categorical) 변수일 때는 다중선형회귀 모델을 그대로 적용할 수 없다는 겁니다. 이러한 문제 때문에 로지스틱 회귀 모델이 제안됐습니다.

로지스틱 함수, Odds

우선 로지스틱 함수(Logistic Function)승산(Odds)에 대해 알아보겠습니다. 로지스틱 회귀의 뼈대가 되는 아이디어이기 때문입니다.

실제 많은 자연, 사회현상에서는 특정 변수에 대한 확률값이 선형이 아닌 S-커브 형태를 따르는 경우가 많다고 합니다. 이러한 S-커브를 함수로 표현해낸 것이 바로 로지스틱 함수입니다. 분야에 따라 시그모이드 함수로도 불리기도 합니다.

로지스틱 함수는 $x$값으로 어떤 값이든 받을 수가 있지만 출력 결과는 항상 0에서 1사이 값이 됩니다. 즉 확률밀도함수(probability density function) 요건을 충족시키는 함수라는 이야기입니다. 그 식과 그래프 모양은 아래와 같습니다.

\[y=\frac { 1 }{ 1+{ e }^{ -x } }\]

승산(Odds)이란 임의의 사건 $A$가 발생하지 않을 확률 대비 일어날 확률의 비율을 뜻하는 개념입니다. 아래와 같은 식으로 쓸 수가 있습니다.

\[odds=\frac { P(A) }{ P({ A }^{ c }) } =\frac { P(A) }{ 1-P(A) }\]

만약 $P(A)$가 1에 가까울 수록 승산은 치솟을 겁니다. 반대로 $P(A)$가 0이라면 0이 될 겁니다. 바꿔 말하면 승산이 커질수록 사건 $A$가 발생할 확률이 커진다고 이해해도 될 겁니다. $P(A)$를 $x$축, 사건 $A$의 승산을 $y$축에 놓고 그래프를 그리면 아래와 같습니다.

이항 로지스틱 회귀

이제 우리는 범주가 두 개인 분류 문제를 풀어야 합니다. 앞선 챕터에서 말씀드렸듯 종속변수 $Y$가 연속형 숫자가 아닌 범주일 때는 기존 회귀 모델을 적용할 수 없습니다.

그럼 문제를 바꿔서 풀어봅시다. 회귀식의 장점은 그대로 유지하되 종속변수 $Y$를 범주가 아니라 (범주1이 될)확률로 두고 식을 세워 보자는 것입니다. 우변은 그대로 두고 좌변만 확률로 바꾸면 다음과 같습니다.

\[\begin{align*} P(Y=1|X=\overrightarrow { x } )=&{ \beta }_{ 0 }+{ \beta }_{ 1 }{ x }_{ 1 }+{ \beta }_{ 2 }{ x }_{ 2 }+...+{ \beta }_{ p }{ x }_{ p }\\=&{ \overrightarrow { \beta } }^{ T }\overrightarrow { x } \end{align*}\]

그런데 위 식에서 좌변의 범위는 0~1 사이입니다. 하지만 좌변은 음의 무한대에서 양의 무한대 범위를 가지기 때문에 식이 성립하지 않는 경우가 존재할 수 있습니다. 여기서 식을 한번 더 바꿔서, 좌변을 승산(odds)으로 설정해 보겠습니다. 아래 식처럼 쓸 수 있습니다.

\[\frac { P(Y=1|X=\overrightarrow { x } ) }{ 1-P(Y=1|X=\overrightarrow { x } ) } ={ \overrightarrow { \beta } }^{ T }\overrightarrow { x }\]

하지만 이번에도 양변의 범위가 서로 맞지 않습니다. 좌변(승산)의 범위는 0에서 무한대의 범위를 갖습니다. 하지만 우변(회귀식)은 그대로 음의 무한대에서 양의 무한대 범위입니다.

여기서 좌변(승산)에 로그를 취하면 어떻게 될까요? 로그 승산의 그래프는 아래와 같은데요. 이렇게 되면 로그 승산의 범위 또한 우변처럼 음의 무한대에서 양의 무한대가 됩니다. 이제야 비로소 좌변(승산)이 우변(회귀식)의 범위와 일치하게 되는 셈이지요.

지금까지 말씀드린 내용을 종합해 로지스틱 회귀 모델의 식을 쓰면 다음과 같습니다.

\[\log { (\frac { P(Y=1|X=\overrightarrow { x } ) }{ 1-P(Y=1|X=\overrightarrow { x } ) } ) } ={ \overrightarrow { \beta } }^{ T }\overrightarrow { x }\]

위 식 회귀계수 벡터 $β$의 의미는 이렇습니다. 예컨대 입력벡터 $x$의 첫번째 요소인 $x_1$에 대응하는 회귀계수 $β_1$이 학습 결과 2.5로 정해졌다고 칩시다. 그렇다면 $x_1$이 1단위 증가하면 범주 1에 해당하는 로그 승산이 2.5 커집니다.

위 식을 입력벡터 $x$가 주어졌을 때 범주1일 확률을 기준으로 정리해주면 다음과 같습니다. ($x$가 주어졌을 때 범주1일 확률을 $p(x)$, 위 식 우변을 $a$로 치환해 정리)

\[\begin{align*} \frac { p\left( x \right) }{ 1-p\left( x \right) } =&{ e }^{ a }\\ \\p\left( x \right) =&{ e }^{ a }\left\{ 1-p\left( x \right) \right\} \\ =&{ e }^{ a }-{ e }^{ a }p\left( x \right) \\ \\p\left( x \right) \left( 1+{ e }^{ a } \right) =&{ e }^{ a }\\ \\p\left( x \right) =&\frac { { e }^{ a } }{ 1+{ e }^{ a } } =\frac { 1 }{ 1+{ e }^{ -a } } \\ \\ \therefore P(Y=1|X=\overrightarrow { x } )=&\frac { 1 }{ 1+{ e }^{ -{ \overrightarrow { \beta } }^{ T }\overrightarrow { x } } } \end{align*}\]

최종 도출된 식은 어디서 많이 본 형태 아닙니까? 네 맞습니다. 바로 직전 챕터에서 설명드린 로지스틱 함수의 꼴과 같습니다. 이 때문에 로지스틱 회귀라는 이름이 붙은 것 같습니다.

이항 로지스틱 회귀의 결정경계

위와 같은 이항 로지스틱 모델에 범주 정보를 모르는 입력벡터 $x$를 넣으면 범주 1에 속할 확률을 반환해 줍니다. 그럼 그 확률값이 얼마나 되어야 범주 1로 분류할 수 있을까요? 여러 선택지가 있겠으나 가장 간단한 방식은 다음과 같을 겁니다.

\[P(Y=1|X=\overrightarrow { x } )>P(Y=0|X=\overrightarrow { x } )\]

범주가 두 개뿐이므로, 위 식 좌변을 $p(x)$로 치환하면 식을 다음과 같이 정리할 수 있습니다.

\[p\left( x \right) >1-p\left( x \right) \\ \frac { p\left( x \right) }{ 1-p\left( x \right) } >1\\ \log { \frac { p\left( x \right) }{ 1-p\left( x \right) } } >0 \\ \\ \therefore { \overrightarrow { \beta } }^{ T }\overrightarrow { x } >0\]

마찬가지로 $β^Tx<0$ 이면 해당 데이터의 범주를 0으로 분류하게 됩니다. 따라서 로지스틱모델의 결정경계(decision boundry)는 $β^Tx=0$인 하이퍼플레인(hyperplane)입니다. 입력벡터가 2차원인 경우 아래와 같이 시각화할 수 있습니다.

공간적으로 이해하기

회귀계수 벡터 $β$는 임의의 두 벡터의 차로 표시할 수 있다고 칩시다($β=β_0-β_1$). 그렇다면 범주가 1이 될 확률은 아래와 같이 쓸 수 있습니다.

\[\begin{align*} y&=\frac { 1 }{ 1+exp({ -\beta }^{ T }x) } \\ &=\frac { exp(-{ \beta }_{ 1 }^{ T }x) }{ exp(-{ \beta }_{ 1 }^{ T }x)+exp({ -\beta }^{ T }x-{ \beta }_{ 1 }^{ T }x) } \\ &=\frac { exp(-{ \beta }_{ 1 }^{ T }x) }{ exp(-{ \beta }_{ 1 }^{ T }x)+exp\{ -{ (\beta }_{ 0 }^{ T }-{ \beta }_{ 1 }^{ T }+{ \beta }_{ 1 }^{ T })x\} } \\ &=\frac { exp(-{ \beta }_{ 1 }^{ T }x) }{ exp(-{ \beta }_{ 1 }^{ T }x)+exp(-{ \beta }_{ 0 }^{ T }x) } \end{align*}\]

이항 로지스틱 회귀이므로 범주가 0일 확률은 $1-y$가 됩니다. 아래와 같습니다.

\[\begin{align*} 1-y&=1-\frac { exp(-{ \beta }_{ 1 }^{ T }x) }{ exp(-{ \beta }_{ 1 }^{ T }x)+exp(-{ \beta }_{ 0 }^{ T }x) } \\ &=\frac { exp(-{ \beta }_{ 1 }^{ T }x)+exp(-{ \beta }_{ 0 }^{ T }x)-exp(-{ \beta }_{ 1 }^{ T }x) }{ exp(-{ \beta }_{ 1 }^{ T }x)+exp(-{ \beta }_{ 0 }^{ T }x) } \\ &=\frac { exp(-{ \beta }_{ 0 }^{ T }x) }{ exp(-{ \beta }_{ 1 }^{ T }x)+exp(-{ \beta }_{ 0 }^{ T }x) } \end{align*}\]

$y$와 $1-y$ 모두 분모가 같으므로 분자가 결정적인 역할을 합니다. 범주가 1이 될 확률에 중요한 역할을 하는 건 벡터 $β_1$, 0이 될 확률에 중요한 역할을 하는 건 벡터 $β_0$입니다. 이 둘을 각각 범주1과 범주0의 대표 벡터로 해석할 수 있습니다. 이를 그림으로 도식화하면 아래와 같습니다

.

그런데 두 클래스의 데이터가 같은 방향에 존재할 경우 $β_0, β_1$만으로는 분류하기 어려울 수도 있습니다.

벡터 $β$에 포함된 bias term $β_{k0}$(스칼라)는 범주를 잘 구분하도록 입력값 $x$를 평행이동시키는 역할을 합니다.

뉴럴넷과의 관계

feed-forward neural network의 Fully connected Layer의 하나의 셀에 활성함수(activation function)로 시그모이드를 쓰면 이항 로지스틱 회귀와 같습니다. (그림 출처 : 스탠포드 CS231n) 다시 말해 이항로지스틱회귀와 시그모이드 함수가 깊은 관련을 맺고 있습니다.

다항 로지스틱 회귀

그렇다면 범주가 세 개 이상이면 어떻게 해야 할까요? 우선 범주가 3개뿐이라고 가정해 보겠습니다. 그러면 이항 로지스틱 회귀 모델 두 개로 문제를 해결할 수 있습니다.

\[\log { \frac { P(Y=1|X=\overrightarrow { x } ) }{ P(Y=3|X=\overrightarrow { x } ) } } ={ \beta }_{ 1 }^{ T }{ \overrightarrow { x } }\\ \log { \frac { P(Y=2|X=\overrightarrow { x } ) }{ P(Y=3|X=\overrightarrow { x } ) } } ={ \beta }_{ 2 }^{ T }{ \overrightarrow { x } }\]

범주가 3개인데 왜 이항 로지스틱 회귀 모델 두 개밖에 안쓰냐고요? ‘세번째 범주에 속할 확률=1-첫번째 범주에 속할 확률-두번째 범주에 속할 확률’이라는 사실을 활용해, 위 두 개 수식을 정리해 대입해 풀면 범주별로 아래와 같이 정리할 수 있습니다.

\[P(Y=1|X=\overrightarrow { x } )=\frac { { e }^{ { \overrightarrow { { \beta }_{ 1 } } }^{ T }\overrightarrow { x } } }{ 1+{ e }^{ { \overrightarrow { { \beta }_{ 1 } } }^{ T }\overrightarrow { x } }+{ e }^{ { \overrightarrow { { \beta }_{ 2 } } }^{ T }\overrightarrow { x } } } \\ P(Y=2|X=\overrightarrow { x } )=\frac { { e }^{ { { \overrightarrow { { { \beta } }_{ 2 } } } }^{ T }\overrightarrow { x } } }{ 1+{ e }^{ { \overrightarrow { { \beta }_{ 1 } } }^{ T }\overrightarrow { x } }+{ e }^{ { \overrightarrow { { \beta }_{ 2 } } }^{ T }\overrightarrow { x } } } \\ P(Y=3|X=\overrightarrow { x } )=\frac { 1 }{ 1+{ e }^{ { \overrightarrow { { \beta }_{ 1 } } }^{ T }\overrightarrow { x } }+{ e }^{ { \overrightarrow { { \beta }_{ 2 } } }^{ T }\overrightarrow { x } } }\]

$K$개 범주를 분류하는 다항로지스틱 회귀 모델의 입력벡터 $x$가 각 클래스로 분류될 확률은 아래 식과 같습니다.

\[\begin{align*} P(Y=k|X=\overrightarrow { x } )=&\frac { { e }^{ { \overrightarrow { { { \beta } }_{ k } } }^{ T }\overrightarrow { x } } }{ 1+\sum _{ i=1 }^{ K-1 }{ { e }^{ { \overrightarrow { { { \beta } }_{ i } } }^{ T }\overrightarrow { x } } } } \quad (k=0,1,...,K-1)\\ P(Y=K|X=\overrightarrow { x } )=&\frac { 1 }{ 1+\sum _{ i=1 }^{ K-1 }{ { e }^{ { \overrightarrow { { { \beta } }_{ i } } }^{ T }\overrightarrow { x } } } } \end{align*}\]

다항로지스틱회귀와 소프트맥스

로그승산을 활용해 $K$개 범주를 분류하는 다항로지스틱 회귀 모델을 유도하게 되면, 이항로지스틱 회귀 모델 $K-1$개를 써서 $K-1$개 회귀계수 벡터가 도출됩니다. 따라서 $K$번째 범주에 속할 확률은 이 범주에 해당하는 회귀계수 벡터 없이도 자동적으로 정해지게 됩니다. 즉 1에서 $K-1$개 각각의 범주에 속할 확률의 합을 뺀 나머지입니다.

그러면 $K$번째 범주에 해당하는 회귀계수 벡터도 구할 수 없을까요? 모델을 다음과 같이 구축해 봅시다.

우선 ‘로그승산’으로 된 좌변을 ‘로그확률’로 바꿉니다. 0을 제외한 범위에서 확률($x$)은 승산($x/(1-x)$)보다 작으므로(참고), 식을 변형하면서 원래 좌변보다는 작아진 셈입니다. 이에 우변에서 어떤 값을 빼줍니다. 그런데 다항로지스틱 회귀 모델에서 승산의 분모는 $K$번째 범주에 속할 확률로 모두 같으므로 $K$개 식 모두에 같은 값을 빼면 됩니다. 다음과 같습니다.

\[\log { P(Y=1|X=\overrightarrow { x } ) } ={ \overrightarrow { { { \beta } }_{ 1 } } }^{ T }\overrightarrow { x } -\log { Z } \\ \log { P(Y=2|X=\overrightarrow { x } ) } ={ \overrightarrow { { { \beta } }_{ 2 } } }^{ T }\overrightarrow { x } -\log { Z } \\ ...\\ \log { P(Y=K|X=\overrightarrow { x } ) } ={ \overrightarrow { { { \beta } }_{ K } } }^{ T }\overrightarrow { x } -\log { Z }\]

로그 성질을 활용해 $c$번째 범주에 속할 확률을 기준으로 식을 정리하면 다음과 같습니다.

\[\log { P(Y=c) } +\log { Z } ={ \overrightarrow { { { \beta } }_{ c } } }^{ T }\overrightarrow { x } \\ \log { \left\{ P(Y=c)\times Z \right\} } ={ \overrightarrow { { { \beta } }_{ c } } }^{ T }\overrightarrow { x } \\ P(Y=c)\times Z={ e }^{ { \overrightarrow { { { \beta } }_{ c} } }^{ T }\overrightarrow { x } }\\ P(Y=c)=\frac { 1 }{ Z } { e }^{ { \overrightarrow { { { \beta } }_{ c } } }^{ T }\overrightarrow { x } }\]

식을 변형했더라도 전체 확률합은 1이 되어야 합니다. 이 성질을 활용해 $Z$를 유도하면 다음과 같습니다.

\[\begin{align*} 1=&\sum _{ k=1 }^{ K }{ P(Y=k) } \\ =&\sum _{ k=1 }^{ K }{ \frac { 1 }{ Z } { e }^{ { \overrightarrow { { { \beta } }_{ k } } }^{ T }\overrightarrow { x } } } \\ =&\frac { 1 }{ Z } \sum _{ k=1 }^{ K }{ { e }^{ { \overrightarrow { { { \beta } }_{ k } } }^{ T }\overrightarrow { x } } } \\ \\ \therefore &Z=\sum _{ k=1 }^{ K }{ { e }^{ { \overrightarrow { { { \beta } }_{ k } } }^{ T }\overrightarrow { x } } } \end{align*}\]

따라서 $c$번째 범주에 속할 확률은 다음과 같습니다. 소프트맥스 함수와 그 모양이 동일함을 확인할 수 있습니다.

\[P(Y=c)=\frac { { e }^{ { \overrightarrow { { { \beta } }_{ c } } }^{ T }\overrightarrow { x } } }{ \sum _{ k=1 }^{ K }{ { e }^{ { \overrightarrow { { { \beta } }_{ k } } }^{ T }\overrightarrow { x } } } }\]

요컨대 다항로지스틱 회귀는 소프트맥스 함수와 깊은 관련을 맺고 있다는 이야기입니다. 자세한 내용은 위키피디아를 참고하시면 좋을 것 같습니다.



Comments