Logistic Regression

2024. 9. 22. 00:48·머신러닝

 

Introduction

  • 선형회귀분석의 회귀 계수는 closed form이 존재합니다.
  • 선형회귀분석의 $\hat{\beta}$는 $(X^TX)^{-1}X^Ty$로 구할 수 있습니다.
  • 그러나 로지스틱 회귀분석은 그렇지 않습니다.
  • 로지스틱 회귀분석에서 좋은 모델이란, 정답 범주일 확률을 크게 산출하고, 정답이 아닌 범주를 작게 산출하는 모형입니다.

Likelihood function

  • *이전 슬라이드에서 model A와 model B라는 예시가 등장했고, model A의 성능이 더 우수한 것으로 나타났습니다.
  • model A가 더 우수하다는 것을, 어떠한 지표로 정의할 수 있고, 이를 likelihood라고 합니다.
    • likelihood는 각각의 객체들에 대해서 정답 클래스로 분류될 확률을 말합니다.
    • 오른쪽 표에서 노란색 동그라미 친 값들이 각각의 객체에 대한 likelihood입니다.
  • 만약 모든 객체들이 독립적으로(i.i.d) 산출되면, 각각의 likelihood는 $P(A,B)=P(A)\cdot P(B)$로 계산할 수 있습니다.

  • 예를 들어 설명하겠습니다.
  • 데이터 셋에 대한 likelihood는 각각의 likelihood를 전부 곱한 값입니다.
  • likelihood는 확률의 개념이기 때문에 0부터 1사이의 값을 갖습니다.
    • 즉, 계속 곱할수록 0으로 수렴합니다.
    • 이를 해결하기 위해 log likelihood를 이용합니다.
    • *log 함수는 단조 증가 합니다.
  • likelihood 관점에서 봤을 때, 값이 큰 모형이 데이터를 더 잘 설명하는 모형입니다.

likelihood를 크게 만든다. => log likelihood를 크게 만든다. => 음의 log likelihood를 작게 만든다.

식으로 표현하면 아래와 같습니다.

$Max\ likelihood=Max\ log(L)=Min\ -log(L)$

  • 이때 MLE(Maximum Likelihood Estimator)가 등장합니다.
    • 데이터 셋이 가질 수 있는 likelihood를 maximize하는 coefficient를 찾는 것입니다.

Maximum Likelihood Estimation

  • 여기서는 수학적인 trick을 이용해서 로지스틱 회귀분석의 mle 식을 구하고자 합니다.
  • i번째 객체의 likelihood는 P(y=1)로 표현할 수 있습니다.
    $x_i$와 $y_i$를 갖고 likelihood를 계산하면, 정답 범주가 1일때는 $\sigma(\mathbf{x}_i|\mathbf{\beta})$이고,
    정답 범주가 0일 때는 $1-\sigma(\mathbf{x}_i|\mathbf{\beta})$가 됩니다.
    => 로지스틱 회귀분석에서 이는 하나로 합쳐서 나타낼 수 있습니다.

$P(\mathbf{x}_i,y_i|\mathbf{\beta})=\sigma(\mathbf{x}_i|\beta)^{y_i}(1-\sigma(\mathbf{x}_i)|\mathbf{\beta})^{1-y_i}$

  • 전체 데이터 셋에 대한 likelihood는 아래와 같이 계산할 수 있습니다.

$L(\mathbf{X},\mathbf{y}|\mathbf{\beta})=\prod_{i=1}^N P(\mathbf{x_i},y_i|\mathbf{\beta})=\prod_{i=1}^N \sigma(\mathbf{x}_i|\mathbf{\beta})^{y_i}(1-\sigma(\mathbf{x}_i|\mathbf{\beta}))^{1-y_i}$

  • likelihood를 maximize 한다는 것은, 곧 log likelihood를 최대화 한다는 말과 같습니다.
  • $\prod$에 log를 씌우면 $\sum$이 나옵니다. 식은 아래와 같습니다.

$logL(\mathbf{X},\mathbf{y}|\mathbf{\beta})=\sum_{i=1}^{N}y_i log\sigma(\mathbf{x}_i|\mathbf{\beta})+(1-y_i)log(1-\sigma(\mathbf{x}_i|\mathbf{\beta}))$

  • 여기서 핵심은 이 표현식은 베타에 대해서 non-linear 식이라는 것입니다.
  • 따라서 explicit solution이 존재하지 않습니다.
  • 그렇기 때문에 적절한 최적화 알고리즘(e.g., gradient descent)을 통해서 solution을 구할 수 있습니다.

Gradient Descent Algorithm

  • gradient descent algorithm에 대해 설명하겠습니다.
  • 처음에 베타는 랜덤한 숫자를 가지고 무작위로 배정해줍니다. -> 이를 initial weight라고 합니다.
  • 위 그림에서 파란색 선에 해당하는 함수를 최소화해야 합니다.
  • initial weight을 기준으로 최적해에 가까워지기 위해 계속 gradient(1차 미분값, 접선의 기울기)를 계산하며 descent(하강)합니다.
    • 위 그림에서는 gradient descent가 0이 되는 순간 최적해를 찾을 수 있습니다.

  • 정리하면, 목적함수 L에 대해서 미분을 합니다.
    -> gradient가 0인지 질문합니다.
    -> yes 라고 답하면 학습은 종료됩니다.
    -> 아닐 경우, 학습을 지속합니다.
    -> 해를 improve하기 위하여 gradient의 역방향으로, 적당한 거리만큼 이동합니다.
  • 이론적인 background는 생략하겠습니다.
    • 짧게 요약하면, 테일러 전개를 이용합니다.
    • 여기서, 1차 도함수만 갖고 정답 해에 가까워 질 수 있습니다.
  • 아래는 gradient descent 를 직관적으로 보여주는 수식입니다.

$w_{new}=w_{old}-\alpha f'(w),\ \ where 0<\alpha<1$

*여기서 $\alpha$는 저희가 정해야 하는 수입니다.

  • 설명변수가 두 개인 로지스틱 회귀분석에 대해서 회귀 계수를 구해보겠습니다.
  • 동그라미 노드들은 설명변수, 종속변수이고, w는 베타와 같습니다.
  • $h=\sum_{i=0}^{2}w_i x_i$이고 이는 곧 $\hat{\beta}_0+\hat{\beta}_1 x_1+\hat{\beta}_2 x_2$와 같습니다.
  • y는 로지스틱 회귀분석 모형을 통해 해당하는 값을 $y=\frac{1}{1+exp(-h)}$ 이 수식으로 표현하였습니다.
  • 직관적인 해석을 위해 $L=\frac{1}{2}(t-y)^2$로 표현하겠습니다.
    • t는 1또는 0이고, y는 p(y=1)를 의미합니다.
    • t=1일 경우 y는 1에 가깝게, t=0일 경우 y는 0에 가깝게 나와야 좋은 모형입니다.
    • 둘 사이의 제곱을 minimize 하는 걸 loss function으로 정의합니다.

  • y는 로지스틱 회귀분석에서 추정된 값이고, t는 실제 값입니다.
    • 둘 차이가 적으면 미지수를 덜 움직이고, 차이가 크면 많이 움직입니다.
  • 다음으로, 가중치를 update 하는 건 가중치와 연결돼 있는 설명변수에만 영향을 미칩니다.

$log(\frac{p}{1-p})=\hat{\beta}_0+\hat{\beta}_1 x + \hat{\beta}x_2 +...$

  • 위와 같은 식이 있을 때, 예를 들어 $\beta_2$를 학습하는 데 있어서 $\beta_2$만 영향을 미친다는 뜻입니다.

  • $\beta$ 추정이 완료되었고, 새로운 데이터가 들어왔을 때 두 범주 중 한 범주에 속할 확률을 물어봅니다.
  • 그 확률 값은 $p=\frac{1}{1+e^{-(\hat{\beta}_0+\hat{\beta}_1x_1+\hat{\beta}_2x_2+...)}}$ 식으로 표현되고,
    $(\hat{\beta}_0+\hat{\beta}_1x_1+\hat{\beta}_2x_2+...)$ 이 식을 a라고 표현하면, 위의 그림과 같이 S자 형태의 curve가 그려집니다.

  • 특정 범주에 속할 확률을 로지스틱 회귀분석을 통해 산출하였고, 한쪽 범주로 할당해줘야 합니다.
  • 확률값을 0 아니면 1로 변환해 줘야 합니다.
    • 이때 사용되는 것이 cutoff(threshold)이고, default 값은 0.5입니다.

 

 

 

[출처] : https://www.youtube.com/watch?v=kgIaWJvQdUQ&list=PLetSlH8YjIfXMOuS4piqzJRvSZorDnNUm&index=8

'머신러닝' 카테고리의 다른 글

머신러닝에서 분류 과제 수행 단계  (1) 2024.10.24
MLP (Multi Layer Perceptron)  (0) 2024.09.21
XGBoost  (1) 2024.09.21
SVM (Support Vector Machine) 1탄  (1) 2024.09.20
Random Forest  (0) 2024.09.19
'머신러닝' 카테고리의 다른 글
  • 머신러닝에서 분류 과제 수행 단계
  • MLP (Multi Layer Perceptron)
  • XGBoost
  • SVM (Support Vector Machine) 1탄
chaeniverse
chaeniverse
통계 학도입니다. 지금은 현업에서 data scientist로 근무하고 있습니다. 인공지능(머신러닝/딥러닝)에 관심이 많습니다.
  • chaeniverse
    채스
    chaeniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (22)
      • 통계학 (11)
      • 머신러닝 (7)
      • 딥러닝 (3)
      • 논문 리뷰 (1)
      • etc (0)
      • Project (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 포트폴리오
  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
chaeniverse
Logistic Regression
상단으로

티스토리툴바