1. 문제 정의
1.1. 데이터셋
로지스틱 회귀에 대한 이해를 돕기 위하여 다음과 같이 두 종류의 데이터셋을 준비하고 설명을 진행합니다.
- Dataset-A: $$\begin{flalign} x&=\left[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 \right] \\ y&=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1] \end{flalign}$$
- Dataset-B: $$\begin{flalign} x&=\left[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 \right] \\ y&=[0,0,0,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1] \end{flalign}$$
위에서 $x$는 독립 변수이고 $y$는 종속 변수입니다. $y$는 $0$ 또는 $1$을 값으로 가집니다.

위 그래프에 나타나 있듯이 Dataset-A에서는 $x$축의 특정 값을 기준으로 $y$가 $0$인 경우와 $1$인 경우로 명확하게 나누어지고 Dataset-B에서는 $x$축의 일정 구간에서 $y$가 $0$인 경우와 $1$인 경우가 서로 섞여 있다는 것을 알 수 있습니다.
1.2. 해결 과정
문제 해결 과정을 아래의 단계로 구분할 수 있습니다.
- 데이터셋의 특성을 잘 나타내는 모델 함수(hypothesis)를 찾습니다. 모델 함수가 가지고 있는 파라미터들은 특정 데이터셋에 맞추기 위해 조정하는 요소들입니다.
- 데이터셋의 $y$값과 모델 함수가 예측하는 값의 차이의 정도를 나타내는 비용 함수(cost function)를 정의합니다.
- 데이터셋에 대하여 비용을 최소화하도록 모델 함수의 파라미터를 찾습니다.
이렇게 얻은 모델 함수를 사용하여 새로운 데이터 $x$가 주어질 때 $y$값이 얼마일지 예측합니다.
2. 모델함수 찾기
다음은 모델 함수를 찾는데 도움이 될만한 데이터셋의 특성입니다.
- 데이터의 $x$값에 따라 $y$값이 $0$과 $1$로 구분됩니다.
- $x$값이 어떤 임계값보다 작을 때는 $y$값이 $0$일 가능성이 크고, 임계값보다 크면 $y$값이 $1$일 가능성이 크다라고 말할 수 있습니다.
- $y$값이 $0$인 데이터와 $1$인 데이터의 $x$값이 서로 겹치는 구간이 데이터셋에 따라 매우 좁을 수도 있고 넓을 수도 있습니다.
이러한 특성을 고려하여 다음과 같은 의미를 가지는 모델 함수를 찾고자 합니다.
$$p(y=1|x;w)$$
위 표현은 파라미터 $w$가 주어질 때 $x$값이 변함에 따라 $y$값이 $1$일 가능성이 어떻게 달라지는지를 나타냅니다. $p$가 가지는 값의 범위는 $0 \sim 1$입니다. $p$의 값이 $0.5$ 이상이면 $y$값이 $1$, $0.5$ 미만이면 $y$값이 $0$이라고 판정합니다.
2.1. 첫번째 찾기 시도
다음과 같이 모델 함수가 $x$의 1차식이라고 가정해 봅니다.
$${ h }_{ w }(x)=w_0+w_1x$$
그러면 $h_w(x)$가 가질 수 있는 값의 범위는 $-\infty \sim +\infty$가 되어 $0 \sim 1$ 범위의 값을 가지는 모델 함수가 될 수 없습니다.
2.2. 두번째 찾기 시도
$x$의 일차식은 단조증가하거나 단조감소합니다. 따라서 좌변은 이러한 조건을 만족시키는 $h_w(x)$의 함수식이어야 합니다. $y=0$일 가능성 대비 $y=1$일 가능성의 비율이 단조증가하므로 모델 함수를 다음과 같이 가정해 봅니다.
$$\frac {h_w(x)}{1 - h_w(x)}=w_0+w_1x$$
하지만 $h_w(x)$가 $0 \sim 1$ 사이의 값을 가질 때 좌변이 가질 수 있는 값의 범위는 $0 \sim +\infty$로 여전히 우변이 가질 수 있는 값의 범위와 일치하지 않습니다.
참고로 $y=0$일 가능성 대비 $y=1$일 가능성의 비율을 오즈(odds)라고 부릅니다.
$$odds(p) = \frac {p} {1-p} =\frac{\text{성공할 가능성}}{\text{실패할 가능성}}$$

2.3. 세번째 찾기 시도
값의 범위가 $0 \sim +\infty$일 때 로그를 적용하면 단조증가하면서 값의 범위가 $-\infty \sim +\infty$로 확장됩니다. 그래서 이번에는 좌변에 로그를 적용해 봅니다.
$$\log\left(\frac {h_w(x)}{1 - h_w(x)}\right)=w_0+w_1x$$
오즈에 로그를 적용한 것을 로짓(logit) 함수라고 부릅니다.

이제 좌변과 우변 모두 동일한 값의 범위를 가지도록 하는 방법을 찾았습니다. 위 식을 $h_w(x)$에 대하여 풀면 다음과 같습니다.
$$h_w(x)=\frac {1} {1+{ e }^{ -(w_0 + w_1x) }}$$
$x_0=1$이라고 정의하면 위 수식은 다음과 같이 표현할 수 있습니다.
$$\begin{flalign} w=(w_0,w_1), \quad x=(x_0,x_1) \\ w_0x_0 + w_1x_1 = w^Tx = z(x) \\ h_w(x)=\frac {1} {1+{ e }^{ -z(x) }} \end{flalign}$$
이러한 형태의 함수를 로지스틱(logistic) 함수라고 합니다. 또한 그래프로 그려 보면 S자 모양과 비슷하여 시그모이드(sigmoid) 함수라고 부르기도 합니다. 아래 그래프들은 $w_0$와 $w_1$ 값을, 즉 $z(x)$를 다르게 지정하여 그려 본 것입니다.
$$\begin{flalign} \text{logistic_func1: }z(x)&=x \\ \text{logistic_func2: }z(x)&=x-3 \\ \text{logistic_func3: }z(x)&=0.3\times(x-3)\end{flalign}$$

여기서 눈여겨 볼 것은 좌변에서 사용할 $h_w(x)$의 함수식을 찾을 때 다음 두 가지를 만족시킬 수 있다면 logit 함수가 아니어도 된다는 사실입니다.
- 단조증가 또는 단조감소
- 값의 범위가 $-\infty \sim +\infty$
3. 비용 함수 정의하기
선형 회귀에서와 같이 최소자승법을 사용하여 비용 함수를 정의하면 비볼록 함수가 되어 최솟값을 찾는 것이 어려워집니다.
$$J(w)=\frac { 1 }{ m } \sum _{ i=1 }^{ m } \frac {1} {2} { (h_w(x^{(i)}) - y^{(i)})^2 }$$
그래서 볼록 함수가 되도록 비용 함수를 정의해 보고자 합니다.
$$J(w)=\frac { 1 }{ m } \sum _{ i=1 }^{ m }{ Cost(h_w(x^{(i)}), y^{(i)}) }$$
3.1. 첫번째 찾기 시도
개별 데이터에 대한 비용을 계산할 때 사용할 수식을 아래와 같이 정의하면 데이터 세트에 대한 비용 함수는 볼록한 형태가 됩니다.
$$\begin{flalign} Cost(h_{ w }(x^{ (i) }),y^{ (i) }) &= h_w(x^{(i)}), \text{ for } y^{(i)}=0 \\ Cost(h_{ w }(x^{ (i) }),y^{ (i) }) &=1 - h_w(x^{(i)}), \text{ for } y^{(i)}=1 \end{flalign}$$

이것을 하나의 식으로 표현하면 다음과 같습니다.
$$Cost(h_{ w }(x^{ (i) }),y^{ (i) })=(1-y^{(i)}) h_w(x^{(i)}) + y^{(i)}(1-h_w(x^{(i)})$$
위의 정의에 따르면 $y$값이 $0$일 때 예측값이 $1$이 될 가능성이 $0$에 가까워지면 비용이 줄어들고, $1$에 가까워지면 비용이 늘어나게 됩니다. 마찬가지로 $y$값이 $1$일 때 예측값이 $1$이 될 가능성이 $0$에 가까워지면 비용이 늘어나고 $1$에 가까워지면 비용이 줄어듭니다. 따라서 비용 함수를 위와 같이 정의하는 것이 $y$값과 모델 함수가 예측하는 값의 차이의 정도를 나타내기에 적절하다고 할 수 있습니다.
3.2. 두번째 찾기 시도
그런데 log를 사용하면 수학적으로 더 편리할뿐만 아니라 경사하강법 방식으로 최솟값을 찾을 때 더 빠른 속도로 최솟값에 접근하게 됩니다. 그래서 log를 사용해서 비용 함수를 다시 정의하면 다음과 같습니다.
$$\begin{flalign} Cost(h_{ w }(x^{ (i) }),y^{ (i) }) &= -\log(1-h_w (x^{(i)})), \quad {for} \quad y^{(i)} = 0 \\
Cost(h_{ w }(x^{ (i) }),y^{ (i) }) &= \quad \quad -\log(h_w (x^{(i)})), \quad {for} \quad y^{(i)} = 1 \end{flalign}$$

이것을 하나의 식으로 표현하면 다음과 같습니다.
$$Cost(h_{ w }(x^{ (i) }),y^{ (i) })=-y^{(i)} \log(h_w(x^{(i)})) - (1-y^{(i)})\log(1-h_w(x^{(i)})$$
첫번째 시도에서 얻은 비용 함수와 비교해 보면 $y$값이 $0$일 때 예측값이 $1$이 될 가능성이 $1$에 가까워지면 비용이 훨씬 더 가파르게 증가합니다. 경사하강법 방식에서는 경사가 심할수록 더 빠른 속도로 최솟값에 접근합니다.
이제 하나의 데이터셋에 대한 비용 함수를 다음과 같이 표현할 수 있습니다.
$$J(w)=\frac { 1 }{ m } \sum _{ i=1 }^{ m }{ \left[ -y^{(i)} \log(h_w(x^{(i)})) - (1-y^{(i)})\log(1-h_w(x^{(i)}) \right]}$$
4. 파라미터 찾기
4.1. 경사하강법
다음은 경사하강법 방식을 나타내는 알고리즘입니다.
$$
\begin{flalign}repeat \quad \{ \quad \quad \quad \quad \quad \quad \quad \quad \\
{ w }_{ j }:={ w }_{ j }-\alpha \frac { \partial J(w) }{ \partial { w }_{ j } } \\
\} \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \end{flalign}
$$
위의 식에서 $\alpha$는 학습률(learning rate)입니다.
비용 함수 $J(w)$의 $w$에 대한 편미분을 얻기 위하여 우선 다음과 같이 함수를 정의합니다.
$$
L(w) = -y log(h_{w}(x))-(1-y)log(1-h_{w}(x))
$$
그리고 $L(w)$의 $w$에 대한 편미분을 구합니다.
$$
\begin{flalign} \frac { \partial L(w) }{ \partial { w }_{ j } } &= -y \frac {1}{h_{w}(x)} \frac { \partial h_{w}(x) }{ \partial { w }_{ j } } + (1-y) \frac {1}{1 - h_{w}(x)} \frac { \partial h_{w}(x) }{ \partial { w }_{ j } } \\
\quad &= \frac { \partial h_{w}(x) }{ \partial { w }_{ j } }(-y \frac {1}{h_{w}(x)} + (1-y) \frac {1}{1-h_{w}(x)}) \end{flalign}
$$
모델 함수 $h_w(x)$의 $w$에 대한 편미분 결과는 $h_w(x)$로 나타낼 수 있습니다.
$$
\begin{flalign} \frac { \partial h_{w}(x) }{ \partial { w }_{ j } } &= - \frac {e^{-wx}(-x_j)}{(1 + e^{-wx})^2} \\
\quad \quad \quad \quad \quad \quad \quad \quad &= x_j \frac {1}{1+e^{-wx}} \frac {1+e^{-wx} - 1}{1+e^{-wx}} \\
\quad \quad \quad \quad \quad \quad &= x_j h_w(x) (1 - h_w(x)) \end{flalign}
$$
이를 대입하여 $L(w)$의 $w$에 대한 편미분 결과를 아래와 같이 정리할 수 있습니다.
$$
\begin{flalign} \frac { \partial L(w) }{ \partial { w }_{ j } } &= x_j(-y(1-h_w(x))+(1-y)h_w(x)) \\
&= x_j(h_w(x) - y) \end{flalign}
$$
따라서 비용 함수 $J(w)$의 $w$에 대한 편미분 결과는 다음과 같이 표현됩니다.
$$ \begin{flalign} \frac { \partial J(w) }{ \partial { w }_{ j } } &= \frac { 1 }{ m } \sum _{ i=1 }^{ m } \frac {\partial L(w)}{\partial{w_j}} \\
\quad \quad \quad \quad \quad \quad \quad \quad \quad &= \frac { 1 }{ m } \sum _{ i=1 }^{ m } {x_j}^{(i)} { \left( { h }_{ w }({ x }^{ (i) })-{ y }^{ (i) } \right) } \\
\quad \quad \quad \quad &= \frac { 1 }{ m } x^T(h_w(x)-y) \end{flalign}$$
4.2. 파이썬 코드
아래 링크는 실습을 위해 작성한 파이썬 노트북입니다.
이 문서의 "1.1. 데이터셋"에서 제시한 두 종류의 데이터셋에 대하여 각각 로지스틱 회귀를 적용하여 모델 함수 $h_w(x)$의 파라미터 $w$를 찾습니다.
- Dataset-A:
0, w: [ 1. 1.], total_cost: 3.26021492096
100, w: [-2.6355604 0.42721842], total_cost: 0.381607976117
200, w: [-4.20800179 0.33990582], total_cost: 0.259597699813
300, w: [-5.11107361 0.44791876], total_cost: 0.189260375224
400, w: [-5.67752132 0.55875972], total_cost: 0.14696429209
500, w: [-6.12954266 0.60842371], total_cost: 0.136285798335
600, w: [-6.52973682 0.64520282], total_cost: 0.128206376451
700, w: [-6.89004447 0.67842379], total_cost: 0.121658132782
800, w: [-7.21891096 0.70882576], total_cost: 0.116203273473
900, w: [-7.52228277 0.7369322 ], total_cost: 0.111561580443
999, w: [-7.80178475 0.76287476], total_cost: 0.107581904528
- Dataset-B:
0, w: [ 1. 1.], total_cost: 1.26021492096
100, w: [-1.28554202 0.32823582], total_cost: 0.305950256446
200, w: [-2.03450316 0.42156667], total_cost: 0.285936892902
300, w: [-2.3862255 0.46758369], total_cost: 0.281598132252
400, w: [-2.57198045 0.49243347], total_cost: 0.280395854669
500, w: [-2.67574608 0.50646611], total_cost: 0.280021810942
600, w: [-2.73543813 0.51458526], total_cost: 0.279898223002
700, w: [-2.77033872 0.51934772], total_cost: 0.279856010509
800, w: [-2.79093454 0.52216342], total_cost: 0.279841317035
900, w: [-2.80315452 0.52383585], total_cost: 0.279836145885
999, w: [-2.81037234 0.52482432], total_cost: 0.279834324659
경사하강법을 1000번 적용하여 얻은 $w$는 다음과 같습니다.
- Dataset-A:
999, w: [-7.80178475 0.76287476], total_cost: 0.107581904528
- Dataset-B:
999, w: [-2.81037234 0.52482432], total_cost: 0.279834324659
다음은 위에서 찾은 $w$를 사용하여 모델 함수 $h_w(x)$의 그래프를 그린 것입니다.

5. 참고 자료
- The Sigmoid Function in Logistic Regression by Karl Rosaen
- What is a Logit Function and Why Use Logistic Regression? by KAREN GRACE-MARTIN
'데이터 분석 > 회귀 분석' 카테고리의 다른 글
| 베르훌스트의 인구 증가 모델과 로지스틱 곡선 (0) | 2025.10.25 |
|---|---|
| 로지스틱 회귀: 오즈(Odds)와 오즈비(Odds Ratio) (0) | 2025.10.20 |
| 로지스틱 회귀: 오즈, 로짓 함수, 로지스틱 함수의 관계 (0) | 2025.10.19 |
| 선형 회귀 분석의 이해 (0) | 2025.10.17 |
| 회귀(Regression)라는 용어를 쉽게 설명하는 방법 (0) | 2025.10.17 |