Processing math: 100%
본문 바로가기
통계/머신러닝

22. 로지스틱 회귀(Logistic Regression)에 대해서 알아보자.

by 부자 꽁냥이 2022. 7. 3.

이번 포스팅에서는 로지스틱 회귀에 대한 개념과 적합 알고리즘에 대해서 소개한다.

 

- 목차 - 

1. 로지스틱 회귀(Logistic Regression)란 무엇인가?

2. 로지스틱 회귀 적합 알고리즘

3. 장단점



본 포스팅에서는 수식을 포함하고 있습니다.

티스토리 피드에서는 수식이 제대로 표시되지 않을 수 있으니

PC 웹 브라우저 또는 모바일 웹 브라우저에서 보시기 바랍니다.



   1. 로지스틱 회귀(Logistic Regression)란 무엇인가?

로지스틱 회귀는 분류 문제에서 활용되는 회귀 모형이며 그 정의는 다음과 같다.

 

로지스틱 회귀는 출력 변수의 조건부 확률을 Softmax 함수를 이용하여 모델링한 것이다.

 

이 말의 뜻을 살펴보자.

a. Softmax 함수란 무엇인가?

Softmax 함수는 K범주 분류 문제에 있어서 각 범주의 예측 확률을 추정할 때 많이 활용되는 함수로 다음과 같이 정의된다.

σ(z)i=eziKj=1ezj,fori=1,,K,z=(z1,,zK)

b. 로지스틱 회귀는 출력 변수의 조건부 확률을 Softmax를 이용하여 모델링한 것이다.

먼저 데이터 (xi,yi),i=1,,n이 있다. 이때 xi=(xi1,,xip)t,yi{1,,K}이다. 

로지스틱 회귀는 개별 관측치에 대한 조건부 확률을 다음과 같이 모델링한다.

P(yi=j|xi)=eb0j+b1jxi1++bpjxip1+K1k=1eb0k+b1kxi1++bpkxip,i=1,,n,j=1,,K1,P(yi=K|xi)=11+K1k=1eb0k+b1kxi1++bpkxip

 

실제로 추정하는 것은 K1개의 조건부 확률이며 나머지 하나는 확률의 합이 1이라는 것을 이용하면 자동적으로 구할 수 있는 것이다.

 

근데 왜 하필 Softmax를 이용하여 모델링하는 것일까? 

 

로지스틱 회귀는 y가 범주형인 경우에 사용하는 회귀 모형이다. 예를 들어 yi{0,1}인 경우 로지스틱 회귀 모형은 주어진 x에 대하여 y=0 또는 y=1로 예측해야 한다. 이를 예측하기 위해선 먼저 P(y=1|x)를 먼저 추정하고 이 값이 0.5보다 크면 y=1 아니면 y=0으로 예측하게 된다. 다시 말해 우리는 x가 주어졌을 대 y=1인 조건부 확률을 추정해야 하는 것이다. 그렇다면 다음과 같은 질문을 할 수 있다. 

 

그럼 조건부 확률 P(y=1|x)을 선형으로 모델링하면 안 되나요?

-> 안된다.

 

왜냐하면 선형 모형의 Range가 (,)인 반면 확률은 Range가 [0,1]이기 때문이다. 아래 그림과 같이 y{0,1}인 데이터가 있는 상황에서 초록 직선과 같이 모델링하면 어느 순간부터는 0과 1을 벗어나기 때문에 직선은 확률을 추정하는 데 있어 적합하지 않다.

 

 

물론 어느 혹자는 다음과 같은 모형을 제안할 수 있다.

P(y=1|x)={1ifb0+b1x1++bpxp10ifb0+b1x1++bpxp0b0+b1x1++bpxpo.w

 

하지만 이 경우 bj,j=1,,p에 대한 해석이 문제가 된다.

 

 

이러한 문제(Range, 해석)를 해결하기 위하여 Softmax를 도입하게 된다. Softmax는 Range가 (0,1)이기 때문에 확률값의 범위와 일치하며 해석에 대한 일관성을 유지할 수 있다. 이러한 이유로 Softmax를 이용하여 모델링하게 된 것이다. 

c. 회귀 계수의 해석?

편의상 이 분류 문제(y{0,1})를 다룬다고 해보자. 설명 변수가 하나 있다고 해보자. 그렇다면 로지스틱 회귀 모형은 다음과 같을 것이다.

P(y=1|x)=eb0+b1x1+eb0+b1x

이때 p=P(y=1|x)라 하면 다음과 같다.

logp1p=b0+b1x

 

이를 이용하여 b1을 정리하면 다음과 같다.

b1=b0+b1(x+1)[b0+b1x]=logP(y=1|x+1)1P(y=1|x+1)logP(y=1|x)1P(y=1|x)=logP(y=1|x+1)1P(y=1|x+1)P(y=1|x)1P(y=1|x)

 

위 식을 통해 알 수 있는 것은 b1은 설명 변수 x인 경우에 대한 설명 변수 x+1의 로그 오즈비라는 것이다.

 

하지만 로그 오즈비라는 해석은 이 분류(Binary Class) 문제에 대해서만 가능하고 다중 클래스(Multi Class) 문제에서는 그렇게 해석이 안된다. 

 

K 범주를 갖는 분류 문제에서 회귀 계수의 해석을 생각해보자. y{1,2,,K}이다. 편의상 설명 변수는 한 개 있다고 해보자. 그렇다면 로지스틱 회귀(Logistic Regression)는 각 범주에 대한 조건부 확률을 다음과 같이 추정하게 된다.

P(Y=j|x)=eb0j+b1jx1+K1k=1eb0k+b1kx,j=1,,K1P(Y=K|x)=11+K1k=1eb0k+b1kx

이를 잘 정리하면 다음과 같다.

logP(y=j|x)P(y=K|x)=b0j+b1jx

 

이제 앞에서와 같이 정리하면 다음과 같다.

b1j=b0j+b1j(x+1)[b0j+b1jx]=logP(y=j|x+1)P(y=K|x+1)logP(y=j|x)P(y=K|x)=logP(y=j|x+1)P(y=K|x+1)P(y=j|x)P(y=K|x)

 

(2)를 통해 알 수 있는 것은 회귀 계수가 이 분류에서와 같이 로그 오즈비로 해석이 안된다는 것이다. 굳이 해석하자면 x가 한 단위 증가할 때 K 범주에 대한 j의 조건부 확률 비의 로그 변화율 정도로 해석할 수 있겠다.


   2. 로지스틱 회귀 적합 알고리즘

로지스틱 회귀 모형의 적합은 최대 우도 추정을 이용한다. 그렇다면 먼저 로그 우도 함수를 계산해보자. 먼저 데이터가 (xi,yi),i=1,,n이 있다. 이때 xi=(1,x1i,x2i,,xpi)p+1차원 입력 변수 벡터이고 yi=(yi1,,yiK)으로 yj범주라면 yij=1이고 yih=0,forhj이다. 

 

이제 로그 우도 함수를 계산해보자.

L(b)=logni=1Kj=1pyijij=ni=1{K1j=1yijxtibjlog[1+K1j=1extibj]}=K1j=1[pk=1bjk(ni=1xikyij)]ni=1log[1+K1j=1extibj]

 

여기서 bj=(b0j,b1j,,bpj)t,pij=extibj1+K1k=1extibj,j=1,,K1,piK=11+K1k=1extibj

이다.

 

이제 로그 우도 함수 L의 1차 미분과 2차 미분을 구해야 한다.

L(b)bjk=ni=1xik(yijpij),j=1,,K1,k=0,,p 2L(b)bjbj=ni=1pij[I(j=j)pij]xtixij,j=1,,K1

 

이를 이용한 로지스틱 회귀 모형 적합 알고리즘은 다음과 같다.


Algorithm

1. 오차 범위 ϵ, 최대 반복수 T 그리고 (K1)×(p+1) 벡터 b(0)의 초기값을 설정한다.

 

2. b(t)에 대하여 b(t+1)를 다음과 같이 업데이트한다.

b(t+1)=b(t)(2L(b)bbt)1[L(b)b]b=b(t)

여기서 2L(b)bbtj행, j열의 행렬이 (6)과 같이 주어지는 Block 행렬이며

L(b)b=(L(b)b1t,,L(b)bK1t)

이다. 이때 j번째 벡터에 k번째 원소 L(b)bjk는 (5)와 같이 주어진다.

 

3. 최대 반복수 T에 도달했거나 b(t+1)b(t)<ϵ이면 알고리즘을 종료하고 b(t+1)을 최종 회귀 추정량으로 설정한다. 만약 아니라면 2단계로 돌아간다.


알고리즘을 이용하여 회귀 계수 추정량을 얻었으면 예측은 다음과 같이 수행한다.

ˆy=argmaxjP(y=j|x)

이때 

P(y=j|x)=eb0j+b1jx1++bpjxp1+K1k=1eb0k+b1kx1++bpkxp,j=1,,K1,P(y=K|x)=11+K1k=1eb0k+b1kx1++bpkxp

이다.


   3. 장단점

- 장점 -

a. 회귀 계수의 해석이 가능하다.

앞에서 살펴보았듯이 로지스틱에서 회귀 계수는 x가 한 단위 증가할 때 특정 범주의 조건부 확률의 로그 변화율로 해석할 수 있다.

 

b. 클래스에 속할 확률을 추정한다.

대부분의 분류 모형의 경우(예: 랜덤포레스트, 의사결정나무, 부스팅, 서포트 벡터 머신 등) 특정 클래스를 예측하지만 로지스틱 회귀는 클래스에 속할 확률을 계산해준다. 따라서 확률 자체에 관심이 있는 분야(예: 위험도 분석(Risk Analysis))에서는 로지스틱 회귀가 자주 활용된다.

 

c. 저차원에서 과적합 가능성이 적다고 한다.

저차원 자료에서 데이터 샘플 수가 충분하면 과적합이 덜 일어난다고 한다.

 

d. 분류 문제에서 베이스 모형으로 활용 가능하다.

특정 분류 모형의 성능을 비교 평가하고 싶을 때 비교 모형(베이스 모형)으로 로지스틱 회귀를 생각해볼 수 있다.

- 단점 -

a. 분류 경계가 선형이다.

설명 변수가 하나인 이 분류 로지스틱 회귀에서 P(y=1|x)>c이면 클래스 1로 분류하는 규칙을 생각해보자. 이는

b0+b1x=logP(y=1|x)1P(y=1|x)>log1+cc

의 경우 클래스 1로 분류하는 것과 같다. 따라서 분류 경계는 선형이며 비선형 경계를 갖는 복잡한 패턴을 학습할 수 없다.

 

b. 이상치에 민감하다.

로지스틱 회귀 모형은 이상치에 민감하다고 한다.


원래 파이썬 구현까지 하려고 했으나 코드가 잘못된 탓인지 추정량이 수렴을 안 했다. 다시 살펴보고 나중에 기회가 되면 구현한 것도 추가해보겠다.



댓글