4.2 Logistic Regression
로지스틱 회귀
로지스틱 회귀는 두 가지 가능한 결과가 있는 분류 문제에 대한 확률을 모델링합니다. 이는 선형 모델을 분류 문제로 확장한 내용입니다.
선형 회귀가 분류 문제에 안되는 이유는 무엇인가?
선형 회귀 모델은 회귀 문제에서는 잘 되지만 분류 문제에서는 그렇지 않습니다. 왜 그럴까요? 두 가지 클래스를 가진 경우 하나는 0 다른 하나는 1로 하고 선형 회귀 모델을 사용할 수 있습니다. 학습도 되고 대부분 선형 회귀 모델은 가중치를 알려줄 것입니다. 그러나 이 방법에는 몇 가지 문제점이 있습니다.
선형 모델은 확률을 내뱉지 않지만 클래스를 숫자(0 및 1)로 처리하며 점과 초평면 사이의 거리를 최소화하는 최상의 초평면(단일 피쳐의 경우 선)을 학습합니다. 즉, 점들 간의 보간(interpolate)만 이루어지므로 확률로 해석할 수 없습니다.
선형 모델도 외삽(extrapolate)할 수 있고 0과 1사이의 값을 줄 수 있습니다. 이는 분류 문제에 사용하기 좋은 방법일 수 있습니다.
예측값이 확률이 아니라 점 사이의 선형 보간이기 때문에 한 클래스와 다른 클래스를 구분할 수 있는 의미 있는 임계값이 없습니다. 이 이슈에 대한 좋은 예를 Stackoverflow에서 확인할 수 있습니다.
선형 모델은 다중 클래스를 갖는 분류 문제로 확장할 수 없습니다. 클래스를 2, 3 그리고 계속 정답을 달야합니다. 각 클래스에 순서는 의미가 없지만 선형 모델은 특성과 각 클래스의 예측값 간의 관계에서 이상한 구조를 만들어 낼 것 입니다. 양의 가중치를 갖는 한 특성값이 클 수록 더 높은 숫자를 갖는 클래스의 예측값에 기여를 하게 될 것입니다.
그림 4.5: 선형 모델은 종양을 악성(1) 또는 양성(0)으로 분류합니다. 선은 선형 모형의 예측을 나타냅니다. 왼쪽 데이터의 경우 0.5를 분류 임계값으로 사용할 수 있습니다. 악성 종양 환자를 몇 명 더 추가한 후 회귀선을 이동시키고 임계값 0.5가 더 이상 클래스를 구분하지 않습니다. 점들은 겹치는 정도는 조금 줄이기위해 약간 흩뿌렸습니다.
이론
분류 문제에서 해결책은 바로 로지스틱 회귀입니다. 직선이나 초평면에 학습하는 대신 로지스틱 선형 모델은 선형 방적식의 결과를 0과 1사이로 나타내기위해 로지스틱 함수를 사용합니다. 로지스틱 함수는 다름과 같습니다.
\[\text{logistic}(\eta)=\frac{1}{1+exp(-\eta)}\]그리고 이렇게 생겼습니다.
그림 4.6: 로지스틱 함수. 출력값은 0과 1사이 입니다. 입력값이 0이면 출력값은 0.5 입니다.
선형 회귀에서 로지스틱 회귀로의 단계는 단순합니다. 선형 회귀 모델에서는 다음과 같이 예측값과 특성들을 선형 방정식으로 관계성을 모델링 합니다.
\[\hat{y}^{(i)}=\beta_{0}+\beta_{1}x^{(i)}_{1}+\ldots+\beta_{p}x^{(i)}_{p}\]분류 문데에서는 0과 1사이의 확률이어야 합니다. 그래서 우항을 로지스틱 함수로 적용합니다. 이는 결과값이 0과 1사이로만 나오게 만듭니다.
\[P(y^{(i)}=1)=\frac{1}{1+exp(-(\beta_{0}+\beta_{1}x^{(i)}_{1}+\ldots+\beta_{p}x^{(i)}_{p}))}\]다시 종양 크기에 대한 예제로 돌아가 봅시다. 이번에는 선형 회귀 모델 대신 로지스텍 회귀 모델을 사용합니다.
그림 4.7: 로지스틱 회귀 모델은 종양 크기에 대해 악성과 양성간의 적절한 경계선을 찾습니다. 선은 데이터에 맞게 적용된 로지스틱 함수입니다.
분류 문제는 로지스틱 회귀가 더 잘되고 두 클래스의 임계값을 0.5로 사용할 수 있습니다. 점들을 추가하더라도 추정된 곡선에 영향을 미치지 않습니다.
해석
로지스틱의 결과값은 0과 1사이 값을 갖는 확률이기 때문에 로지스틱 회귀에서 가중치에 대한 해석은 선형 회귀에서와 다릅니다. 가중치는 확률에 더이상 선형적으로 영향을 미치지 않습니다. 가중합계는 로지스틱 함수를 사용해서 확률로 변형할 수 있습니다. 즉, 해석을 위해 방적식을 재구성해야하고 방정식 우항에 선형 항이 나오도록 해야합니다.
\[log\left(\frac{P(y=1)}{1-P(y=1)}\right)=log\left(\frac{P(y=1)}{P(y=0)}\right)=\beta_{0}+\beta_{1}x_{1}+\ldots+\beta_{p}x_{p}\]log() 함수에 있는 항을 “odds”(사건이 아닐 확률로 사건일 확률을 나눔)라고 부르고 로그를 붙인 것을 “log adds”라고 합니다.
이 공식은 로지스틱 회귀 모델이 log odds에 대한 선형 모델이라는 것을 보여줍니다. 오! 무슨소리인지 모르겠죠! 식을 약간 바꿔보자면 특성 \(x_j\)가 한 단위만큼 바뀔 때 예측값이 얼마나 바뀌는지 확인할 수 있습니다. 이를 확인하기 위해서 방정식 양쪽에 모두 exp() 함수를 적용합니다.
\[\frac{P(y=1)}{1-P(y=1)}=odds=exp\left(\beta_{0}+\beta_{1}x_{1}+\ldots+\beta_{p}x_{p}\right)\]이렇게하면 1만큼 특성값중 하나가 커지면 어떤일이 생기는지 비교할 수 있습니다. 단 차이를 보는것이 아닌 두 예측값의 비율을 봅니다.
\[\frac{odds_{x_j+1}}{odds}=\frac{exp\left(\beta_{0}+\beta_{1}x_{1}+\ldots+\beta_{j}(x_{j}+1)+\ldots+\beta_{p}x_{p}\right)}{exp\left(\beta_{0}+\beta_{1}x_{1}+\ldots+\beta_{j}x_{j}+\ldots+\beta_{p}x_{p}\right)}\]이 식을 아래와 같이 나타낼 수 있습니다.
\[\frac{exp(a)}{exp(b)}=exp(a-b)\]지워야할 항들은 지웁니다.
\[\frac{odds_{x_j+1}}{odds}=exp\left(\beta_{j}(x_{j}+1)-\beta_{j}x_{j}\right)=exp\left(\beta_j\right)\]마지막으로 특성 가중치에 대한 exp()로 결과값을 얻었습니다. 한 단위만큼 한 특성이 변화하면 \(\exp(\beta_j)\)만큼 odds 비율을 변화시킵니다. 이는 다음과 같은 방법으로 해석할 수 있습니다. 한 단위 만큼 \(x_j\)의 변화는 그에 대한 가중치값만큼 log odds 비율을 증가시킨다. 대부분 사람들은 odds 비율을 log() 때문에 뭔가 어렵다고 생각합니다. Odds 비율을 해석하는 것은 앞서 했던 것을을 확인하면 됩니다. 예를 들어 odds가 2라면 이는 y가 1인 확률은 y가 0인 확률의 두 배라는 것을 의미합니다. 가중치(= log odds 비율)가 0.7일 때, 각 특성을 한 단위씩 올리면 odds를 exp(0.7) (약 2정도)을 곱하게 되고 odds는 4로 바뀐다. 보통은 odds를 다루지 않고 odds 비율로만 해석을 한다. odds를 계산하기 위해서는 각 특성에 따라 값을 정해야하기 때문에 하나의 데이터에서 특정 관측치를 확인하기 위해서는 이 값을 정해야 합니다.
특성의 유형에 따라 로지스틱 회귀 모델을 해석할 수 있는 방법들은 다음과 같습니다.
- 연속형 특성: 특성 \(x_{j}\)을 한 단위씩 증가시키면 추정된 odds는 \(\exp(\beta_{j})\)만큼 변합니다.
- 이진형 특성: 특성의 두 값 중 하나는 참조 범주(어떤 언어에서는 0으로 인코딩함)입니다. 참조 범주에서 다른 범주로 특성 \(x_{j}\)을 바꾸면 \(\exp(\beta_{j})\)만큼 추정한 odds를 바꿉니다.
- 두 개 이상의 범주를 가진 범주형 특성: 다중 범주를 다룰 수 있는 해결책 중 하나는 원-핫-인코딩입니다. 이는 각 특성이 하나의 열을 가지고 있음을 뜻합니다. L개의 범주에 대해서는 L-1개의 열이 필요합니다. L번째 범주는 참조 범주가 됩니다. 선형 회귀에서 사용한 다른 인코딩 방법도 사용할 수 있습니다. 각 범주에 대한 해석은 이진형 특성의 해석과 동일합니다.
- 절편 \(\beta_{0}\): 모든 연속형 특성이 0이고 범주형 특성은 참조 범주일때 추정된 odds는 \(\exp(\beta_{0})\)입니다. 절편의 가중치에 대한 해석은 보통 하지 않습니다.
예시
몇 가지 위험 요소들을 가진 자궁 경부암을 예측하기위해 로지스틱 회귀 모델을 사용합니다. 아래 표는 추정 가중치와 그에 관련한 odds 비율 그리고 가중치에 대한 표준 오차를 나타냅니다.
Name | Weight | Odds ratio | Std. Error |
---|---|---|---|
Intercept | -2.91 | 0.05 | 0.32 |
Hormonal contraceptives y/n | -0.12 | 0.89 | 0.30 |
Smokes y/n | 0.26 | 1.29 | 0.37 |
Num. of pregnancies | 0.04 | 1.04 | 0.10 |
Num. of diagnosed STDs | 0.82 | 2.26 | 0.33 |
Intrauterine device y/n | 0.62 | 1.85 | 0.40 |
연속형 특성(“Num. of diagnosed STDs”)에 대한 해석: 다른 특성들이 모두 같은 값이라는 가정하에, 진단된 STDs(성병) 수의 증가는 암 vs 암이 아닌 odds를 2.26만큼 변화(증가)시킵니다. 상관성은 인과성이 아니라는 것을 유의해야합니다.
범주형 특성(“Hormanal contraceptives y/n”)의 해석: 호르몬 피익약을 사용하는 여성의 경우 암 vs 암이 아닌 odds는 다른 모든 특성이 같은 값을 가진다는 가정하에 사용하지 않은 여성에 비해 0.89 만큼 더 낮아집니다.
선형 모델과 마찬가지로 해석은 할상 ‘다른 모든 특성이 같은 값을 가진다’는 가정이 필요합니다.
장점과 단점
선형 회귀 모델의 많은 장단점이 로지스틱 모델에도 적용됩니다. 로지스틱 회귀는 많은 사람들에게 사용되고 있지만 교호 작용을 따로 추가해야한다는 것과 같이 표현적인 제한이 있고 다른 모델들이 더 예측 성능이 좋을 수 있습니다.
로지스틱 회귀 모델의 또다른 단점은 가중치 해석이 덧셈식이나 곱셈식이 아니기 때문에 해석이 더 어렵다는 것입니다.
로지스틱 회귀는 완전한 분리가 생길 수 있습니다. 만약 하나의 특성이 두 개의 클래스로 완전히 분리한다면 로지스틱 회귀 모델은 더이상 학습되지 않습니다. 이유는 최적의 가중치가 무한해서 특성에 대한 가중치가 수렴하지 않기 때문입니다. 간단한 규칙으로 두 클래스를 나눌 수 있다면 머신러닝이 필요하지 않습니다. 완전한 분리의 문제는 가중치에 대한 패널티를 주거나 가중치에 대한 사전 확률 분포를 줌으로써 해결할 수 있습니다.
장점으로는 로지스틱 회귀 모델은 분류 모델일 뿐만 아니라 확률값을 얻을 수 있다는 것입니다. 이는 최종적으로 분류만 할 수 있는 모델에 비해 큰 장점이 됩니다. 한 관측치가 하나의 클래스에 대해 99%라는 것을 아는 것은 다른 관측치의 51%와 큰 차이가 생긴다는 것을 비교할 수 있습니다.
로지스틱 회귀는 이진 분류에서 다중 분류로 확장할 수 있습니다. 이를 다항 회귀라고 부릅니다.
소프트웨어
모든 예시에서는 R의 glm
을 사용했습니다.
I used the glm
function in R for all examples. Python, Java, Stata, Matlab 등 데이터 분석을 할 수 있는 프로그래밍 언어에서 로지스틱 회귀를 확인하실 수 있습니다.