본문 바로가기
데이터 과학 수학

스팸 필터는 어떻게 작동하는가, 로지스틱 회귀(Logistic Regression)의 수학과 확률적 분류

by dexien 2026. 5. 3.

스팸 메일 필터를 처음 만들 때 이런 생각을 했습니다. 메일이 스팸인지 아닌지 0 또는 1로 예측하면 되는데, 왜 굳이 확률로 표현해야 할까요. 그런데 생각해 보면 "이 메일은 스팸일 확률이 95%"가 "이 메일은 스팸이다"보다 훨씬 유용합니다. 95%면 스팸함으로 보내고, 60%면 한 번 더 확인하는 식으로 임계값을 조정할 수 있습니다.

로지스틱 회귀(Logistic Regression)는 이름에 회귀가 들어있지만 사실 분류 알고리즘입니다. 입력값을 받아서 0과 1 사이의 확률로 변환합니다. 선형 회귀에 시그모이드 함수를 붙인 구조인데, 이 단순한 조합이 MLE, 크로스 엔트로피 손실, 경사하강법과 모두 연결됩니다. 이 연재에서 다룬 개념들이 하나로 모이는 지점입니다. 실제 숫자로 따라가 보겠습니다.

로지스틱 회귀(Logistic Regression)의 수학과 확률적 분류
스팸 필터는 어떻게 작동하는가, 로지스틱 회귀(Logistic Regression)의 수학과 확률적 분류

왜 선형 회귀로 분류를 할 수 없는가

가장 단순한 분류 방법은 선형 회귀로 예측값을 구하고 0.5 이상이면 1, 미만이면 0으로 판단하는 겁니다. 그런데 이 방식에는 두 가지 문제가 있습니다.

문제 1. 범위 제한 없음:
선형 회귀 출력 = w·x + b
→ -∞ ~ +∞ 범위
→ 확률은 0~1 사이여야 하는데 불가능

예시:
공부 시간 x=10시간 → 예측값 1.8 (확률이 1.8?)
공부 시간 x=-2시간 → 예측값 -0.3 (확률이 -0.3?)

문제 2. 이상치에 취약:
정상 데이터: x=[1,2,3,4,5], y=[0,0,1,1,1]
선형 회귀 결정 경계: x=3.5 근처

이상치 추가: x=100, y=1
선형 회귀 직선이 크게 기울어짐
결정 경계가 x=5 이상으로 이동
→ 기존 데이터 분류 망가짐

해결책:
선형 회귀 출력을 0~1 범위로 압축
→ 시그모이드 함수

이상치 하나가 결정 경계를 크게 바꾸는 문제는 MSE 손실 함수 특성 때문입니다. 이상치의 오차 제곱이 크게 반영되기 때문입니다. 로지스틱 회귀는 이 문제를 크로스 엔트로피 손실로 해결합니다.


시그모이드 함수 — 어떤 값이든 확률로 변환하기

시그모이드(Sigmoid) 함수는 어떤 실수 값이든 0과 1 사이로 압축합니다. S자 형태의 곡선입니다.

시그모이드 함수:
σ(z) = 1 / (1 + e^(-z))

주요 성질:
σ(0) = 0.500 (중간값)
σ(1) = 0.731
σ(2) = 0.880
σ(5) = 0.993
σ(10) = 0.9999
σ(-1) = 0.269
σ(-5) = 0.007
σ(-10) = 0.0001

z → +∞: σ(z) → 1
z → -∞: σ(z) → 0
z = 0: σ(z) = 0.5

미분:
σ'(z) = σ(z) × (1 - σ(z))
최대 미분값: z=0에서 0.25
→ 기울기 소실 문제의 원인 (역전파 글 참고)

시그모이드의 출력을 확률로 해석할 수 있는 수학적 근거가 있습니다. 베이즈 정리를 적용하면 로그 오즈(Log-Odds)가 선형 함수일 때 사후 확률이 시그모이드 형태가 됩니다. 이전 글에서 다룬 베이즈 정리가 로지스틱 회귀의 이론적 기반입니다.

시그모이드 함수의 S자 곡선 그래프로 어떤 실수 값이든 0과 1 사이 확률로 변환하는 것을 보여줌
시그모이드 함수는 어떤 실수 입력이든 0과 1 사이의 확률값으로 변환한다

 

로지스틱 회귀의 수식과 결정 경계

로지스틱 회귀는 선형 회귀 출력에 시그모이드를 적용합니다.

로지스틱 회귀 수식:
z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b = w·x + b
P(y=1|x) = σ(z) = 1/(1+e^(-z))

분류 규칙:
P(y=1|x) ≥ 0.5 → 클래스 1 예측
P(y=1|x) < 0.5 → 클래스 0 예측

결정 경계 (Decision Boundary):
σ(z) = 0.5일 때 → z = 0
w·x + b = 0 이 결정 경계

예시 (2개 변수):
z = 2x₁ - x₂ + 1
결정 경계: 2x₁ - x₂ + 1 = 0
→ x₂ = 2x₁ + 1 (직선)

결정 경계 위쪽 (z>0): P>0.5 → 클래스 1
결정 경계 아래쪽 (z<0): P<0.5 → 클래스 0

임계값 조정:
기본값 0.5 → 정밀도와 재현율 균형
0.3으로 낮추면 → 재현율 높아짐 (암 검진 등)
0.7으로 높이면 → 정밀도 높아짐 (스팸 필터 등)

결정 경계가 선형이라는 게 로지스틱 회귀의 가장 큰 한계입니다. XOR 같은 비선형 문제는 분류할 수 없습니다. SVM의 커널 트릭처럼 특성을 변환하거나, 신경망으로 비선형 결정 경계를 만들어야 합니다.

형 회귀는 결정 경계가 0과 1을 벗어나고 로지스틱 회귀는 시그모이드로 0과 1 사이에 유지되는 그래프
선형 회귀는 확률 범위를 벗어나지만 로지스틱 회귀는 시그모이드로 항상 0과 1 사이 확률을 출력한다


손실 함수 — 왜 크로스 엔트로피를 쓰는가

로지스틱 회귀에서 MSE 대신 크로스 엔트로피 손실을 쓰는 데는 수학적 이유가 있습니다. MLE 관점에서 유도하면 자연스럽게 크로스 엔트로피가 나옵니다.

MLE로 로지스틱 회귀 유도:

P(y=1|x) = σ(w·x+b) = p̂
P(y=0|x) = 1 - σ(w·x+b) = 1-p̂

하나의 데이터 포인트 가능도:
L(w|x,y) = p̂^y × (1-p̂)^(1-y)

y=1이면: L = p̂¹ × (1-p̂)⁰ = p̂
y=0이면: L = p̂⁰ × (1-p̂)¹ = 1-p̂

전체 데이터 로그 가능도:
log L = Σ[y×log(p̂) + (1-y)×log(1-p̂)]

최대화 = 음의 최소화:
손실 = -Σ[y×log(p̂) + (1-y)×log(1-p̂)]
→ 이진 크로스 엔트로피!

MSE를 쓰면 안 되는 이유:
시그모이드 + MSE → 비볼록 함수
→ 지역 최솟값 존재 → 경사하강법 수렴 불안정

크로스 엔트로피 + 시그모이드 → 볼록 함수
→ 전역 최솟값 하나 → 안정적 수렴 보장

MLE로 유도하면 크로스 엔트로피가 자연스럽게 나옵니다. 이 연재에서 다룬 MLE, 엔트로피, 크로스 엔트로피가 로지스틱 회귀 손실 함수 하나에 모두 연결됩니다.


실제 숫자로 로지스틱 회귀 계산해보기

스팸 메일 분류 예시입니다. 특성이 2개(단어 수 x₁, 링크 수 x₂)이고 가중치 w=[0.5, 0.8], 편향 b=-2입니다.

메일 A (정상): x₁=10, x₂=1
z = 0.5×10 + 0.8×1 - 2 = 5+0.8-2 = 3.8
P(스팸) = σ(3.8) = 1/(1+e^(-3.8)) ≈ 0.978
→ 스팸 확률 97.8% → 스팸으로 분류

실제 정답: y=1 (스팸)
손실 = -[1×log(0.978) + 0×log(0.022)]
= -log(0.978) = 0.022 ← 손실 작음

메일 B (정상): x₁=5, x₂=0
z = 0.5×5 + 0.8×0 - 2 = 2.5-2 = 0.5
P(스팸) = σ(0.5) ≈ 0.622
→ 스팸 확률 62.2% → 스팸으로 분류

실제 정답: y=0 (정상)
손실 = -[0×log(0.622) + 1×log(0.378)]
= -log(0.378) = 0.973 ← 손실 큼

기울기 계산 (메일 B):
∂L/∂w₁ = (P(스팸) - y) × x₁
= (0.622 - 0) × 5 = 3.11
∂L/∂w₂ = (0.622 - 0) × 0 = 0.0

가중치 업데이트 (학습률 0.1):
w₁ = 0.5 - 0.1×3.11 = 0.189
w₂ = 0.8 - 0.1×0.0 = 0.8

로지스틱 회귀의 기울기 공식이 단순합니다. (예측값 - 실제값) × 입력값입니다. 시그모이드와 크로스 엔트로피의 수학적 조합이 이 깔끔한 기울기를 만들어냅니다. 역전파 글에서 다룬 연쇄법칙으로 유도하면 이 결과가 나옵니다.


다중 클래스 분류 — 소프트맥스로 확장하기

로지스틱 회귀는 이진 분류입니다. 클래스가 3개 이상이면 소프트맥스(Softmax)로 확장합니다. 각 클래스에 대한 확률을 동시에 계산하고 합이 1이 되도록 정규화합니다.

소프트맥스 함수:
P(y=k|x) = e^(zₖ) / Σⱼ e^(zⱼ)

3개 클래스 예시 (고양이/개/새):
z = [2.0, 1.0, 0.5]

e^2.0 = 7.389
e^1.0 = 2.718
e^0.5 = 1.649
합계 = 11.756

P(고양이) = 7.389/11.756 = 0.628
P(개) = 2.718/11.756 = 0.231
P(새) = 1.649/11.756 = 0.140
합계 = 1.000 ✅

예측: 고양이 (가장 높은 확률)

손실 (카테고리칼 크로스 엔트로피):
정답이 고양이(y=[1,0,0])일 때:
L = -[1×log(0.628) + 0×log(0.231) + 0×log(0.140)]
= -log(0.628) = 0.465

→ 딥러닝 분류 모델 마지막 층이
→ 소프트맥스 + 크로스 엔트로피인 이유

소프트맥스가 시그모이드의 일반화입니다. 클래스가 2개일 때 소프트맥스를 적용하면 시그모이드와 동일한 결과가 나옵니다. 딥러닝 분류 모델의 출력층이 항상 소프트맥스인 이유가 여기 있습니다.

 

소프트맥스가 선형 출력값을 지수 변환하고 정규화해서 합이 1인 확률 분포로 변환하는 과정
소프트맥스는 각 클래스의 출력값을 지수 변환 후 정규화해서 합이 1인 확률 분포로 만든다


로지스틱 회귀의 장단점과 실무 활용

로지스틱 회귀는 단순하지만 실무에서 여전히 강력합니다.

항목 내용
장점 1 확률 출력 — 단순 분류가 아닌 신뢰도 제공
장점 2 해석 가능 — 가중치로 각 변수의 영향력 파악
장점 3 학습 빠름 — 볼록 함수라 전역 최솟값 보장
장점 4 데이터 적어도 됨 — 딥러닝보다 훨씬 적은 데이터
단점 1 선형 결정 경계 — 비선형 패턴 학습 불가
단점 2 다중공선성에 취약 — 변수 간 상관관계 높으면 불안정
실무 활용 스팸 필터, 질병 진단, 신용 평가, 클릭률 예측

의료와 금융에서 로지스틱 회귀가 딥러닝보다 선호되는 경우가 많습니다. "왜 이 환자가 고위험으로 분류됐는가"를 가중치로 설명할 수 있기 때문입니다. XAI 글에서 다룬 해석 가능성 문제를 로지스틱 회귀는 구조적으로 해결합니다.

이 연재에서 다룬 선형 회귀, 시그모이드, MLE, 크로스 엔트로피, 경사하강법, 역전파, 소프트맥스가 로지스틱 회귀 하나에 모두 들어있습니다. 딥러닝의 출력층이 결국 로지스틱 회귀입니다. 수십 개의 레이어를 쌓아도 마지막은 소프트맥스 + 크로스 엔트로피, 즉 다중 클래스 로지스틱 회귀입니다.


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 블로그 이름