포스트

선형 회귀와 로지스틱 회귀

Regression

회귀분석이란?

​ 회귀분석이란 관찰된 데이터를 기반으로 연속형 변수 간의 관계를 모델링하고 이에 대한 적합도를 측정하는 분석 방법이다. 회귀분석으로 해석하는 실생활의 문제들의 예시는 아래와 같다.

  • 부모의 키와 자식의 키 사이의 관계
  • 자동차 스펙을 이용한 가격 예측
  • 1인당 국민 총소득과 배기가스 배출량 사이의 관계 예측

​ 이 예시들의 공통점은 모두 독립변수(설명변수)와 종속변수(반응변수) 사이의 상호 관련성을 규명하는 것들이라는 것이다.

지도학습의 두 종류

  • 분류: 데이터 x의 여러 feature값을 이용하여 해당 데이터의 클래스 y를 추론하는 것

  • 회귀: 데이터 x의 여러 feature값을 이용하여 연관된 다른 데이터의 정확한 값 y를 추론하는 것

    범주형 결과를 예측하면 분류, 수치형 결과를 예측하면 회귀이다.

선형 회귀분석(Linear Regression)

  • 두 변수 사이의 관계를 직선 형태로 가정하고 분석

  • 선형 회귀변수의 4가지 기본가정

    • 선형성:

      • 예측하고자 하는 종속변수와 독립변수의 상관관계가 선형이다
    • 독립성

      • 다중회귀분석에서 중요
      • 독립변수 간 상관관계가 없다
    • 등분산성

      • 분산이 같다(특정 패턴 없이 고르게 분포한다)
    • 정규성

      • 정규분포를 띤다
    • 등분산성과 정규성의 주체는 모두 잔차이다

선형 회귀 모델링

​ 선형회귀식은 다음과 같이 나타낼 수 있다.

$y=\beta x+\epsilon$

여기서 $\beta$는 회귀계수이며, $\epsilon$은 종속 변수와 독립 변수 사이의 오차이다. 이 두 가지가 데이터로부터 추정되는 파라미터이다. 따라서, 모델링은 x와 y라는 데이터로부터 $\beta$와 $\epsilon$을 추정한 후 추정값을 바탕으로 수행된다. 그 다음 해당 모델에 새로운 데이터 x값을 입력하면 그에 해당하는 y값을 추론하게 된다. 한마디로 주어진 데이터에 선형 식이 잘 적용될 수 있도록 회귀계수 및 오차를 구하는 과정이다.

머신러닝에서의 선형회귀모델 표기법

​ 위의 선형회귀식을 머신러닝에서는 조금 다르게 표현한다.

$H=Wx+b$

H는 가정(Hypothesis), W는 가중치(Weight), b는 편향(bias)이다. 대부분의 경우 W, b는 단순 스칼라가 아닌 고차원 행렬 형태를 띠고 있는 경우가 많고 이 파라미터의 개수가 많을수록 모델의 크기가 커지고 학습하는 것도 어려워진다.

용어 설명

  • 잔차(Residuals)
    • 회귀모델을 이용해 추정한 값과 실제 데이터의 차이
    • 예) (2, 8)이라는 데이터의 선형 회귀모델의 식이 $y=2x+3$이라면 해당 데이터에 대한 잔차는 $8-(2\times 2+3)=1$이 된다.
  • 최소제곱법
    • 잔차를 이용하여 주어진 점 데이터들을 가장 잘 설명하는 회귀모델을 찾는 대표적인 방법
    • $argmin_{W,b}(\sum_{i=1}^nresiduals^2)$
  • 결정계수(R-squared 또는 R2 score)
    • 0에서 1 사이 값으로 나타낸다
    • 1에 가까울수록 모델이 데이터를 잘 표현했다고 본다

경사 하강법(Gradient Descent Algorithm)

​ 적절한 회귀계수를 찾기 위해서는 손실함수를 잘 설정하는 것이 중요하다. 그러기 위해서는 손실함수의 형태가 데이터의 분포를 잘 반영해야 하는데, 데이터의 분포를 파악하기 어려운 경우가 있기 때문에 머신러닝에서는 손실함수의 그래디언트(미분값)이 최소가 되는 지점을 손실함수를 최소로 하는 지점으로 가정한다. 그 이유는 손실함수가 그림과 같이 아래로 볼록한 형태이기 때문이다.

출처:https://lsh424.tistory.com/9

그림을 보면 $J(W)$를 최소로 하는 가중치 값을 가지려면 기울기가 0인 중앙에 놓는 것이 최선임을 알 수 있다. 그러나 가중치 파라미터의 개수가 많은 경우에는 한번에 알아내는 것이 힘들기 때문에, 최소 지점으로 가기 위한 가중치 업데이트를 진행한다.

$W:=W-\alpha \frac{\partial}{\partial W}J(W)$

​ 여기서 $\alpha$는 learning rate로, 이 값이 클수록 빠르게 수렴한다. 하지만 learning rate가 너무 커지면 최적의 W값을 건너뛰어버리면서 수렴하지 못하는 경우도 생길 수 있기 때문에 적절한 learning rate를 선정하는 것이 중요하다.

로지스틱 회귀분석(Logistic Regression)

  • 데이터가 어떤 범주에 속할 확률을 0에서 1 사이의 값으로 예측한 후 가능성이 더 높은 범주로 분류하는 지도 학습 알고리즘
  • 이진 분류(binary classification) 문제에서 주로 사용

정의 및 용어 설명

​ 종속변수가 0일 확률을 $P(y=0\vert x)$라고 할 때 로지스틱 회귀식은 다음과 같다.

$LogOdds=\log(\frac{P(y=0\vert x)}{1-P(y=0\vert x)})=\beta_0+\sum_{j=1}^P\beta_jx_j$

Odds는 사건이 발생할 확률을 발생하지 않을 확률로 나눈 값이다. 아래와 같이 계산한다.

$Odds(Malignant)=\frac{P(Y=0\vert x)}{P(Y=1\vert x)}=\frac{P(Y=0\vert x)}{1-P(Y=0\vert x)}$

위 값에 log를 취한 값인 Log-odds가 처음에 나온 로지스틱 회귀모델이다. 그러나 실제로 구해야 하는 값은 종속변수가 0일 확률, 1일 확률이지 log-odds 값 자체가 아니므로 log-odds의 식을 $P(Y=0\vert x)$에 대해서 다시 정리하면,

$P(y=0\vert x)=\frac{\exp(\beta_0+\sum_{j=1}^{P}{\beta_jx_j})}{1+\exp(\beta_0+\sum_{j=1}^P\beta_jx_j)}$

이고, $z=\beta_0+\sum_{j=1}^{P}{\beta_jx_j}$라고 하면 다음과 같이 표현된다.

$P(y=0\vert x)=\frac{1}{1+\exp(-z)}$

​ 어디선가 많이 본 형태일 것이다. 위 수식이 활성화함수에서 자주 마주쳤던 Sigmoid Function의 정체인데, 결국 Log-odds 값을 구한 다음 sigmoid function에 넣어서 변환해주는 것이다. sigmoid function은 확률 모델을 선형 회귀모델로 표현한 것이 아니기 때문에 두 범주 간 경계가 불명확해지는 x 구간을 최소화해 분류모델의 분류 성능을 향상시킨다.

content img

​ 정리하자면, 로지스틱 회귀에서는 데이터가 특정 범주에 속할 확률을 다음과 같은 과정을 거쳐 예측한다.

  1. 실제 데이터를 대입하여 Odds 및 회귀계수를 구한다
  2. Log-odds를 계산한 후 이를 sigmoid function의 입력에 넣어서 특정 범주에 속할 확률을 계산한다
  3. 설정한 threshold에 맞추어 설정값 이상이면 1, 이하면 0으로 이진 분류를 수행한다

Softmax 함수와 Cross Entropy

Softmax

​ 로지스틱 회귀는 다중 로지스틱 회귀(Multinomial Logistic Regression)으로 확장될 수 있는데, 이때 일반 로지스틱 회귀에서 사용되었던 sigmoid function은 softmax 함수로 바뀐다. softmax 함수는 2가지가 아닌 여러 범주로 분류하는 함수이기 때문에 다중 분류에 적합한 함수이다. softmax function의 정의는 다음과 같다.

$softmax(x)=\frac{e^{x_i}}{\sum_{j=0}^ke^{x_j}}(i=0,1,\ldots ,k)$

​ softmax 함수는 큰 log-odds와 작은 log-odds의 차이를 극대화시키기 때문에 마지막에 softmax 함수에 모든 범주의 log-odds를 통과시키면 가장 큰 값을 1, 그 외의 값을 0으로 one-hot encoding하면서 해당 데이터가 어떤 범주로 분류되는지 확실히 알 수 있게 된다.

Cross Entropy

​ Cross Entropy 함수는 softmax 함수의 손실함수로 쓰인다. 식은 아래와 같다.

$H(p,q)=-\displaystyle\sum_{x}p(x)\log q(x)$

손실함수이기 때문에 가중치가 최적화될수록 $H(p,q)$의 값이 감소하게 되는 방향으로 가중치 학습이 된다. 그리고 $p(x)$는 실제 데이터 범주 값, $q(x)$는 softmax의 결과값을 대입하게 된다.

​ 선형회귀에서 손실함수는 잔차 제곱의 합(최소제곱법)이었다. 잔차의 제곱은 회귀 모델의 추정치와 실제 값의 종속변수 좌표축 방향으로의 차이, 즉 거리를 측정하기에 적절한 형태였다. 하지만 로지스틱 회귀에서는 종속변수 방향이 확률변수 방향이기 때문에 회귀모델이 추론한 확률 분포와 실제 데이터의 분포의 차이를 계산한 Cross entropy를 사용하는 것이 적합하다. 추론값과 실제값의 차이가 적을수록 Cross entropy는 작아지게 된다.

img

img

참고. 왜 크로스 엔트로피를 쓸까?

정리 및 요약

 선형 회귀분석로지스틱 회귀분석다중 로지스틱 회귀분석
풀고자 하는 문제종속변수가 연속형인 경우,
독립변수의 변화에 따른
종속변수 값의 추정
종속변수의 범주가
2개인 경우(이진 분류)
범주별 확률을 추정하여
최대확률 범주를 결정하는
분류모델로 활용
종속변수의 범주가
여러 개인 경우의
로지스틱 회귀분석
중요하게 사용되는
함수 및 변수
보편적으로 최소제곱법logits(=log-odds),
sigmoid 함수
cross entropy 함수,
softmax 함수
손실함수보편적으로 최소제곱법cross entropy
(2 class)
cross entropy
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.