이번 포스팅에서는 로지스틱 회귀에 대한 개념과 적합 알고리즘에 대해서 소개한다.
- 목차 -
1. 로지스틱 회귀(Logistic Regression)란 무엇인가?
본 포스팅에서는 수식을 포함하고 있습니다.
티스토리 피드에서는 수식이 제대로 표시되지 않을 수 있으니
PC 웹 브라우저 또는 모바일 웹 브라우저에서 보시기 바랍니다.
1. 로지스틱 회귀(Logistic Regression)란 무엇인가?
로지스틱 회귀는 분류 문제에서 활용되는 회귀 모형이며 그 정의는 다음과 같다.
로지스틱 회귀는 출력 변수의 조건부 확률을 Softmax 함수를 이용하여 모델링한 것이다.
이 말의 뜻을 살펴보자.
a. Softmax 함수란 무엇인가?
Softmax 함수는 K범주 분류 문제에 있어서 각 범주의 예측 확률을 추정할 때 많이 활용되는 함수로 다음과 같이 정의된다.
σ(z)i=ezi∑Kj=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+∑K−1k=1eb0k+b1kxi1+⋯+bpkxip,i=1,…,n,j=1,…,K−1,P(yi=K|xi)=11+∑K−1k=1eb0k+b1kxi1+⋯+bpkxip
실제로 추정하는 것은 K−1개의 조건부 확률이며 나머지 하나는 확률의 합이 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+⋯+bpxp≥10ifb0+b1x1+⋯+bpxp≤0b0+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)라 하면 다음과 같다.
logp1−p=b0+b1x
이를 이용하여 b1을 정리하면 다음과 같다.
b1=b0+b1(x+1)−[b0+b1x]=logP(y=1|x+1)1−P(y=1|x+1)−logP(y=1|x)1−P(y=1|x)=logP(y=1|x+1)1−P(y=1|x+1)P(y=1|x)1−P(y=1|x)
위 식을 통해 알 수 있는 것은 b1은 설명 변수 x인 경우에 대한 설명 변수 x+1의 로그 오즈비라는 것이다.
하지만 로그 오즈비라는 해석은 이 분류(Binary Class) 문제에 대해서만 가능하고 다중 클래스(Multi Class) 문제에서는 그렇게 해석이 안된다.
K 범주를 갖는 분류 문제에서 회귀 계수의 해석을 생각해보자. y∈{1,2,…,K}이다. 편의상 설명 변수는 한 개 있다고 해보자. 그렇다면 로지스틱 회귀(Logistic Regression)는 각 범주에 대한 조건부 확률을 다음과 같이 추정하게 된다.
P(Y=j|x)=eb0j+b1jx1+∑K−1k=1eb0k+b1kx,j=1,…,K−1P(Y=K|x)=11+∑K−1k=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)으로 y가 j범주라면 yij=1이고 yih=0,forh≠j이다.
이제 로그 우도 함수를 계산해보자.
L(b)=logn∏i=1K∏j=1pyijij=n∑i=1{K−1∑j=1yijxtibj−log[1+K−1∑j=1extibj]}=K−1∑j=1[p∑k=1bjk(n∑i=1xikyij)]−n∑i=1log[1+K−1∑j=1extibj]
여기서 bj=(b0j,b1j,…,bpj)t,pij=extibj1+∑K−1k=1extibj,j=1,…,K−1,piK=11+∑K−1k=1extibj
이다.
이제 로그 우도 함수 L의 1차 미분과 2차 미분을 구해야 한다.
∂L(b)∂bjk=n∑i=1xik(yij−pij),j=1,…,K−1,k=0,…,p ∂2L(b)∂bj∂bj′=−n∑i=1pij[I(j=j′)−pij′]xtixij,j′=1,…,K−1
이를 이용한 로지스틱 회귀 모형 적합 알고리즘은 다음과 같다.
Algorithm
1. 오차 범위 ϵ, 최대 반복수 T 그리고 (K−1)×(p+1) 벡터 b(0)의 초기값을 설정한다.
2. b(t)에 대하여 b(t+1)를 다음과 같이 업데이트한다.
b(t+1)=b(t)−(∂2L(b)∂b∂bt)−1[∂L(b)∂b]b=b(t)
여기서 ∂2L(b)∂b∂bt는 j행, j′열의 행렬이 (6)과 같이 주어지는 Block 행렬이며
∂L(b)∂b=(∂L(b)∂b1t,…,∂L(b)∂bK−1t)
이다. 이때 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+∑K−1k=1eb0k+b1kx1+⋯+bpkxp,j=1,…,K−1,P(y=K|x)=11+∑K−1k=1eb0k+b1kx1+⋯+bpkxp
이다.
3. 장단점
- 장점 -
a. 회귀 계수의 해석이 가능하다.
앞에서 살펴보았듯이 로지스틱에서 회귀 계수는 x가 한 단위 증가할 때 특정 범주의 조건부 확률의 로그 변화율로 해석할 수 있다.
b. 클래스에 속할 확률을 추정한다.
대부분의 분류 모형의 경우(예: 랜덤포레스트, 의사결정나무, 부스팅, 서포트 벡터 머신 등) 특정 클래스를 예측하지만 로지스틱 회귀는 클래스에 속할 확률을 계산해준다. 따라서 확률 자체에 관심이 있는 분야(예: 위험도 분석(Risk Analysis))에서는 로지스틱 회귀가 자주 활용된다.
c. 저차원에서 과적합 가능성이 적다고 한다.
저차원 자료에서 데이터 샘플 수가 충분하면 과적합이 덜 일어난다고 한다.
d. 분류 문제에서 베이스 모형으로 활용 가능하다.
특정 분류 모형의 성능을 비교 평가하고 싶을 때 비교 모형(베이스 모형)으로 로지스틱 회귀를 생각해볼 수 있다.
- 단점 -
a. 분류 경계가 선형이다.
설명 변수가 하나인 이 분류 로지스틱 회귀에서 P(y=1|x)>c이면 클래스 1로 분류하는 규칙을 생각해보자. 이는
b0+b1x=logP(y=1|x)1−P(y=1|x)>log1+cc
의 경우 클래스 1로 분류하는 것과 같다. 따라서 분류 경계는 선형이며 비선형 경계를 갖는 복잡한 패턴을 학습할 수 없다.
b. 이상치에 민감하다.
로지스틱 회귀 모형은 이상치에 민감하다고 한다.
원래 파이썬 구현까지 하려고 했으나 코드가 잘못된 탓인지 추정량이 수렴을 안 했다. 다시 살펴보고 나중에 기회가 되면 구현한 것도 추가해보겠다.

'통계 > 머신러닝' 카테고리의 다른 글
24. 랜덤 포레스트(Random Forest)에 대해서 알아보자 (3) | 2022.08.05 |
---|---|
23. 배깅(Bagging)에 대해서 알아보자 (0) | 2022.07.20 |
21. XGBoost에 대해서 알아보자 (402) | 2022.06.26 |
20. Gradient Boosting 알고리즘에 대해서 알아보자 with Python (408) | 2022.06.13 |
19. 서포트 벡터 머신(Support Vector Machine)에 대해서 알아보자 with Python (414) | 2022.05.16 |
댓글