📈 로지스틱 회귀 개요
- 로지스틱 회귀는 연속 값이 아닌 이진 분류 문제에 주로 사용되는 기초적인 머신러닝 모델입니다.
- 입력값이 주어졌을 때, 그 결과가 특정 클래스(예: 합격/불합격, 스팸/정상 등)에 속할 확률을 출력합니다.
1️⃣ 로지스틱 회귀란?
- 로지스틱 회귀는 출력값을 0과 1 사이의 확률로 변환하기 위해 시그모이드(Sigmoid) 함수를 사용합니다.
- 선형 회귀 모델을 시그모이드 함수에 통과시켜 이진 분류 문제에 적합하게 만듭니다.
σ(z) = 1 / (1 + e⁻ᶻ)
여기서
z = wx + b
입니다.2️⃣ 시그모이드 함수 그래프

z
가 커질수록 출력은 1에 가까워지고
z
가 작아질수록 출력은 0에 가까워집니다.
- 중간값은 0.5로, 보통 이 값을 기준으로 분류합니다.
3️⃣ 학습 방식: 경사 하강법 (Gradient Descent)
로지스틱 회귀 모델도 손실 함수(Loss)를 최소화하기 위해 경사 하강법을 사용합니다.
가중치(w), 편향(b)의 갱신 공식은 다음과 같습니다:
w = w - α × ∂L/∂w
b = b - α × ∂L/∂b
α
는 학습률(learning rate)입니다.
∂L/∂w
는 손실 함수에 대한 편미분 값입니다.
4️⃣ 가설 함수와 출력
로지스틱 회귀의 가설 함수는 다음과 같습니다:
hᵩ(x) = σ(wᵀx + b)
이 결과값은 **0~1 사이의 실수 (확률)**이며, 보통 0.5 이상이면 1(긍정), 0.5 미만이면 0(부정)으로 분류합니다.
5️⃣ 손실 함수: 교차 엔트로피 오차 (Cross Entropy Loss)
로지스틱 회귀에서는 **평균 제곱 오차(MSE)**보다 교차 엔트로피 오차가 더 적합합니다.
L = –[y × log(ŷ) + (1 – y) × log(1 – ŷ)]
y
는 실제 값 (0 또는 1)
ŷ
는 예측 확률
💻 TensorFlow를 활용한 실습 예제 (Google Colab 가능)
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
# 입력 데이터 (x: 공부 시간, y: 합격 여부)
X = np.array([[1], [2], [3], [4], [5]], dtype=np.float32)
y = np.array([[0], [0], [0], [1], [1]], dtype=np.float32)
# 로지스틱 회귀 모델 정의
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=[1], activation='sigmoid')
])
# 컴파일 (손실 함수: 교차 엔트로피 / 옵티마이저: SGD)
model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['accuracy'])
# 학습
model.fit(X, y, epochs=500, verbose=0)
# 예측
val = np.array([[3.5]], dtype=np.float32)
pred = model.predict(val)[0][0]
print(f"3.5시간 공부했을 때 합격 확률: {pred:.2f}")
# 시각화
x_range = np.linspace(0, 6, 100)
y_pred = model.predict(x_range)
plt.scatter(X, y, label='입력 데이터')
plt.plot(x_range, y_pred, color='green', label='시그모이드 곡선')
plt.xlabel('공부 시간')
plt.ylabel('합격 확률')
plt.legend()
plt.show()
✅ 마무리
- 로지스틱 회귀는 이진 분류 문제에서 가장 기초가 되는 모델입니다.
- 출력값을 시그모이드 함수로 확률화하여 0 또는 1 클래스로 분류합니다.
- 손실 함수로는 교차 엔트로피를 사용하며, 경사 하강법으로 학습합니다.
- TensorFlow와 Colab 환경에서 간단히 실습할 수 있습니다.
Share article