Home [Machine Learning] 13. LogisticRegression(로지스틱 회귀)
Post
Cancel

[Machine Learning] 13. LogisticRegression(로지스틱 회귀)

로지스틱 회귀 (LogisticRegression)

  • 선형회귀 알고리즘을 이용한 이진 분류 모델
  • Sample이 특정 클래스에 속할 확률을 추정한다.

확률 추정

  • 선형회귀 처럼 입력 특성(Feature)에 가중치 합을 계산한 값을 로지스틱 함수를 적용해 확률을 계산한다.
\[\hat{p} = \sigma \left( \mathbf{w}^{T} \cdot \mathbf{X} + \mathbf{b} \right)\\ \hat{p}:\: positive의\,확률,\quad \sigma():\:logistic\,함수,\quad \mathbf{w}:\:weight,\quad \mathbf{X}:\:input feature,\quad \mathbf{b}:\:bias\]

로지스틱 함수

  • 0과 1사이의 실수를 반환한다.
  • S 자 형태의 결과를 내는 시그모이드 함수(sigmoid function) 이다.
\[\sigma(x) = \frac{1}{1 + \mathbf{e}^{-x}}\]
  • 샘플 x가 양성에 속할 확률
\[\hat{y} = \begin{cases} 0\quad\hat{p}<0.5\\1\quad\hat{p}\geqq0.5 \end{cases}\]
  • logistic 함수 시각화
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import matplotlib.pyplot as plt
import numpy as np

def logistic_func(X):
    return 1 / (1 + np.exp(-X))  

X = np.linspace(-10, 10, 1000) 
y = logistic_func(X)

plt.figure(figsize=(13, 6))

plt.plot(X, y, color='b', linewidth=2)

plt.axhline(y=0.5, color='r', linestyle=':')

plt.ylim(-0.15, 1.15)
plt.yticks(np.arange(-0.1,1.2,0.1))

ax = plt.gca()
ax.spines['left'].set_position("center")
ax.spines['bottom'].set_position(('data', 0))
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.show()

Logistic Regression

LogisticRegression의 손실 함수(Loss Function)

  • Cross Entropy(로그손실-log loss)
    • 모델이 예측한 정답의 확률에 대해 log를 취해 손실값을 구한다.
      • 확률이 틀리면 틀릴 수록 손실값을 크게 만들기 위해서 log를 취한다.
\[\log{\left(모델이\,예측한\,정답에\,대한\,확률\right)}\]
  • Binary Cross Entropy
    • Logistic 함수를 이용한 추론 결과에 대한 cross entropy 계산
      • Logistic함수은 positive(1)의 확률만 추출하므로 정답이 0일때, 1일때 계산하는 것이 다르다. 그것을 하나의 공식으로 정의한 것이 binary cross entropy이다. \(L(\mathbf{W}) = - \frac{1}{m} \sum_{i=1}^{m}{\left[ y_{i} \log{\left( \hat{p}_i \right)} + \left( 1 - y_i \right) \log{\left( 1 - \hat{p}_i \right)} \right]}\\ y:\:실제값(정답),\quad\hat{p}:\:예측확률(양성확률)\)
  • y(실제값) 이 1인 경우 $y_{i}\log{\left(\hat{p}_i\right)}$ 이 손실을 계산
  • y가 0인 경우 $\left( 1 - y_i \right) \log{\left( 1 - \hat{p}_i \right)}$이 손실을 계산
  • $\hat{p}$(예측확률)이 클수록 반환값은 작아지고 작을 수록 값이 커진다.
  • Loss Function
    • 모델이 예측한 값과 정답간의 차이(오차, loss)를 구하는 함수.
    • 모델의 파라미터를 최적화할 때 loss를 최소화하는 것을 목적으로 한다.

Alt text

최적화

최적화란

  • 모델이 예측한 결과와 정답간의 차이(오차)를 가장 적게 만드는 Parameter를 찾는 과정을 최적화라고 한다.
  • 모델의 예측값과 실제 값의 차이를 계산하는 함수를 만들고 그 값이 최소가 되는 지점을 찾는 작업을 한다.

목적함수(Object Function), 손실함수(Loss Function), 비용함수(Cost Function), 오차함수(Error Function)

  • 모델의 예측한 값과 실제값 사이의 차이를 정의하는 함수로 모델이 학습할 때 사용된다.
  • 이 함수의 반환값(Loss)을 최소화 하는 파라미터을 찾는 것이 최적화의 목적
  • 해결하려는 문제에 맞춰 Loss 함수를 정의한다.
    • Classification(분류)의 경우 cross entropy(log loss)를 사용한다.
    • Regression(회귀)의 경우 MSE(Mean Squared Error)를 사용한다.

LogisticRegression의 최적화

  • 분류 문제이므로 Cross entropy(Log loss함수)를 손실함수로 사용한다.
  • Cross entropy는 loss의 최소값으로 하는 parameter 찾는 방정식이 없기 때문에 LogisticRegression은 경사하강법을 이용해 최적화를 진행한다.
  • 로그 손실을 $\mathbf{W}$로 미분하면 다음과 같다.
    • 아래 도함수로 기울기를 구해 기울기가 0이 될 때 까지 W(가중치)들을 update한다. \(\frac{\partial}{\partial w_j}L(W) = \frac{1}{m} \sum_{i=1}^{m}{\left( \sigma \left( \mathbf{W}^{T} \cdot \mathbf{x}_i \right) - \mathbf{y}_i \right)} x_{ij}\)

LogisticRegression 주요 하이퍼파라미터

  • penalty: 과적합을 줄이기 위한 규제방식
    • ‘l1’, ‘l2’(기본값), ‘elasticnet’, ‘none’
  • C: 규제강도(기본값 1) - 작을 수록 규제가 강하다(단순).
  • max_iter(기본값 100) : 경사하강법 반복횟수
This post is licensed under CC BY 4.0 by the author.