P4-11.1 로지스틱 회귀(logistic regression)의 직관¶
Section ID:
P4-11.1Version:v2026.07.20
P4-10에서는 선형회귀(linear regression)를 통해 직선으로 연속값을 예측하는 방법을 보았습니다. 이제 같은 선형적 사고가 분류(classification)에서는 어떻게 바뀌는지로 넘어갑니다.
이번 절의 중심 질문은 다음입니다.
직선적 계산을 유지하면서, 출력은 0과 1 사이의 값으로 읽고 싶다면 어떻게 해야 할까?
이 질문이 바로 로지스틱 회귀(logistic regression)의 출발점입니다.
종종 이름 때문에 헷갈립니다. 회귀(regression)라고 부르는데 왜 분류를 하는가? 로지스틱 회귀는 최종 목적은 분류이지만, 내부에서는 여전히 선형 결합(linear combination)을 계산하고, 그 값을 확률처럼 읽히는 형태로 바꾸기 때문에 이런 이름이 남아 있습니다.
즉, 로지스틱 회귀는 선형회귀를 그대로 분류에 쓰는 모델이 아니라, 선형 계산의 출력을 분류용 확률처럼 해석할 수 있게 바꾼 모델입니다.
이 절은 로지스틱 회귀(logistic regression), sigmoid, predict_proba, threshold의 기본 뜻을 설명합니다. 뒤 절에서는 이 손잡이를 바탕으로 현재 맥락의 판단을 이어 가고, 선형 계산을 분류용 확률처럼 읽는 기본 감각은 이 절과 개념사전을 기준으로 다시 연결합니다.
로지스틱 회귀(logistic regression)의 직관에서 닫을 질문¶
이 절은 다음 질문에 답합니다.
- 로지스틱 회귀는 왜 분류 문제에서 쓰이는가?
- 왜 이름은
regression인데 결과는 분류처럼 읽는가? - 선형 결합이 어떻게 0과 1 사이의 값으로 바뀌는가?
predict_proba같은 출력은 무엇을 의미하는가?- threshold(임계값)는 왜 필요한가?
이 절은 로지스틱 회귀를 선형 계산의 출력을 분류용 확률처럼 읽는 모델로 먼저 닫고, 점수와 threshold가 어떻게 분류 판단으로 이어지는지를 붙잡는 데 집중합니다.
대신 이번 절에서 바로 더 넓혀 볼 질문도 분명합니다. 결정 경계(decision boundary)와 threshold의 공간적 해석은 P4-11.2에서 바로 이어서 다룹니다. 왜 log-odds를 보게 되는가, 왜 최대우도추정(maximum likelihood estimation, MLE)을 쓰는가는 P4-11.3에서, 이진 분류에서 다중 클래스(multinomial)로 어떻게 확장되는가는 P4-11.4에서, solver와 regularization을 왜 구현 설정으로 만나게 되는가는 P4-11.5에서 나누어 회수합니다. 정규화(regularization)의 더 넓은 일반 원리와 하이퍼파라미터 읽기는 P4-9.1, P4-9.2, P5-8.1에서 다시 연결합니다.
로지스틱 회귀(logistic regression)의 직관에서 남길 판단 기준¶
- 로지스틱 회귀를
분류 문제에서 확률처럼 읽히는 출력을 만드는 선형 모델이라고 설명할 수 있습니다. - 선형회귀와 로지스틱 회귀의 공통점과 차이를 구분할 수 있습니다.
- sigmoid 함수가 왜 등장하는지 입문 수준에서 설명할 수 있습니다.
predict_proba와 최종 class prediction이 다른 단계라는 점을 이해할 수 있습니다.- threshold가 분류 판단에 개입한다는 사실을 설명할 수 있습니다.
학습 배경¶
Part 4의 알고리즘 흐름은 회귀에서 분류로 갑자기 뛰지 않도록 설계되어 있습니다. 선형회귀를 먼저 본 이유는 로지스틱 회귀가 완전히 새로운 세계가 아니라, 같은 선형 모델 계열 안에서 출력 해석이 바뀐 사례라는 점을 보여 주기 위해서입니다.
| 커리큘럼 위치 | 로지스틱 회귀의 역할 |
|---|---|
| P4-10 선형회귀 뒤 | 선형적 사고를 분류 문제로 확장 |
| P4-6 평가 지표 뒤 | 확률 출력과 분류 지표의 연결 준비 |
| P4-11.2 앞 | 결정 경계(decision boundary) 개념의 도입 |
즉, 11.1은 분류 모델을 처음 소개하는 절이면서도, 동시에 선형회귀와의 연속성을 보여 주는 절입니다.
주요 학습내용¶
로지스틱 회귀는 어떤 문제를 다루는가¶
로지스틱 회귀는 보통 둘 중 하나를 고르는 분류 문제(binary classification)에서 소개됩니다.
예를 들면 다음과 같습니다.
| 업무 상황 | 예측하려는 값 |
|---|---|
| 고객이 이탈하는가? | 이탈 / 비이탈 |
| 이메일이 스팸인가? | 스팸 / 정상 |
| 거래가 사기인가? | 사기 / 정상 |
| 환자에게 특정 질환 위험이 높은가? | 위험 / 비위험 |
이런 문제의 공통점은 출력이 연속값이 아니라 범주라는 점입니다. 하지만 내부 계산은 여전히 숫자로 이뤄집니다.
로지스틱 회귀는 입력을 보고 한 클래스에 속할 가능성을 0과 1 사이의 값으로 추정한 뒤, 그 값을 기준으로 분류를 결정하는 모델이다.
왜 이름은 regression인데 분류를 하는가¶
이 절에서 먼저 풀어야 할 오해가 바로 이것입니다. 로지스틱 회귀는 분류를 하지만, 내부에서는 여전히 선형식(linear score)을 계산합니다.
가장 단순한 형태는 다음처럼 생각할 수 있습니다.
이 식은 선형회귀에서 보던 구조와 같습니다. 차이는 여기서 끝나지 않는다는 점입니다. 선형회귀는 이 값을 그대로 예측값으로 읽으려 했지만, 로지스틱 회귀는 이 값을 sigmoid 함수에 통과시켜 0과 1 사이 값으로 바꿉니다.
즉, 이름의 regression은 선형 결합과 수치적 추정 방식의 흔적이고, 실제 사용 목적은 classification에 더 가깝습니다.
sigmoid 함수는 왜 필요한가¶
분류 문제에서 선형식의 출력값을 그대로 쓰면 1.7, -2.3, 5.8 같은 값이 나올 수 있습니다. 하지만 분류에서는 이런 값을 그대로 읽기 어렵습니다. 우리는 보통 이 클래스일 가능성이 얼마나 큰가를 0과 1 사이에서 읽고 싶어 합니다.
sigmoid 함수는 바로 이 역할을 합니다.
- 아주 큰 양수 입력은 1에 가까운 값으로 보냅니다.
- 아주 큰 음수 입력은 0에 가까운 값으로 보냅니다.
- 중간값은 0.5 근처로 보냅니다.
sigmoid는 선형 계산 결과를 분류용으로 읽기 쉬운 0~1 범위의 값으로 눌러 넣는 함수다.
좌표 위에 놓고 보면 더 직관적입니다. 선형 점수 \(z\)가 음수에서 양수로 넘어갈 때, sigmoid 출력은 0 근처에서 1 근처로 부드럽게 이동하고 z = 0에서 p = 0.5를 만납니다.

이 흐름을 간단히 그리면 다음과 같습니다.
flowchart TD
A["특징 x"]
B["선형 점수 z"]
C["sigmoid"]
D["0-1 점수"]
E["클래스 결정"]
A --> B --> C --> D --> E
핵심은 로지스틱 회귀가 직선을 버리는 것이 아니라, 직선적 계산 뒤에 해석용 변환을 하나 더 붙인다는 점입니다.
선형회귀와 로지스틱 회귀는 무엇이 같고 무엇이 다른가¶
두 모델은 선형 결합을 사용한다는 점에서 닮았습니다. 하지만 출력의 의미가 다릅니다.
| 항목 | 선형회귀 | 로지스틱 회귀 |
|---|---|---|
| 주로 다루는 문제 | 회귀(regression) | 분류(classification) |
| 내부 계산 | 선형 결합 | 선형 결합 |
| 최종 출력 | 연속값 | 0~1 사이 값, 그리고 class 결정 |
| 입문적 해석 | 몇 점, 몇 분, 몇 원 예측 | 어느 클래스일 가능성이 큰가 |
즉, 로지스틱 회귀는 선형회귀와 완전히 다른 출발점을 갖는 모델이 아니라, 같은 선형적 구조를 분류용으로 재해석한 모델입니다.
predict_proba는 무엇을 보여 주는가¶
scikit-learn의 로지스틱 회귀 문서에서 중요한 출력 중 하나는 predict_proba입니다. 독자는 이 값을 곧바로 최종 정답처럼 읽기 쉽지만, 실제로는 한 단계 전의 정보입니다.
예를 들어 0.82라는 값이 나왔다면, 이는 보통 모델이 positive class에 속할 가능성을 꽤 높게 본다는 뜻입니다. 하지만 최종적으로 클래스를 0으로 찍을지 1로 찍을지는 threshold가 정합니다.
즉,
predict_proba: 가능성의 정도predict: 최종 분류 결정
입니다.
이 차이를 놓치면 점수(score)와 판단(decision)을 같은 것으로 오해하게 됩니다.
아주 작은 예시로 보면 더 분명합니다.
| 사용자 | predict_proba로 읽은 class 1 점수 | 0.5 기준 판단 |
|---|---|---|
| A | 0.18 | class 0 |
| B | 0.49 | class 0 |
| C | 0.51 | class 1 |
| D | 0.87 | class 1 |
이 표에서 중요한 것은 B와 C입니다. 두 사용자의 점수 차이는 크지 않지만, threshold 0.5를 기준으로 최종 class는 갈립니다. 즉, 모델이 만든 점수 공간은 연속적이지만, 서비스의 판단은 그 위에서 불연속적으로 나뉠 수 있습니다.
여기서 11.1이 붙잡는 축은 출력 점수입니다. 즉, 지금은 입력 공간에서 경계가 어디에 생기는지를 보기보다, 같은 점수 축 위에서 어떤 지점부터 class 판단이 바뀌는가를 먼저 읽습니다.
threshold(임계값)는 왜 필요한가¶
로지스틱 회귀는 대개 0.5를 기준으로 분류를 결정하는 예시로 처음 소개됩니다.
- 확률처럼 읽히는 값 >= 0.5 이면 class 1
- 확률처럼 읽히는 값 < 0.5 이면 class 0
하지만 이 기준은 자연법칙이 아니라 선택된 정책(policy)입니다.
예를 들어 사기 탐지에서는 놓치는 비용이 크기 때문에 더 민감하게 잡고 싶을 수 있습니다. 반대로 정상 사용자를 과하게 차단하면 안 되는 서비스에서는 threshold를 더 보수적으로 둘 수 있습니다.
즉, 로지스틱 회귀는 확률처럼 읽히는 값을 만들고, 실제 서비스는 그 위에 어디서 선을 그을지를 정합니다.
이 점은 P4-6의 평가 지표, P4-8의 baseline, P4-9의 튜닝과도 연결됩니다.
간단한 예시를 하나 더 보겠습니다.
| 고객 | 이탈 점수 | threshold = 0.5 | threshold = 0.7 |
|---|---|---|---|
| E | 0.42 | 유지 | 유지 |
| F | 0.58 | 경고 | 유지 |
| G | 0.73 | 경고 | 경고 |
같은 점수라도 threshold가 바뀌면 서비스 행동이 바뀝니다. 이 때문에 로지스틱 회귀를 읽을 때는 모델 점수와 운영 정책을 분리해서 봐야 합니다. 경계 구간의 사례는 우선 검토 우선순위를 올리는 신호로 읽고, threshold를 바꿨다는 사실만으로 원인 설명까지 끝난 것으로 보면 안 됩니다.
같은 점수라도 정책 선이 어디에 있느냐에 따라 최종 행동이 달라지는 장면을 점수 축 위에서 압축하면 다음과 같습니다.

여기서 중요한 것은 모델이 만든 점수와 서비스가 고른 cutoff를 분리해 읽는 일입니다. 입력 공간에서 이 cutoff가 어떤 경계선으로 보이는지는 다음 절 P4-11.2에서 다시 공간 관점으로 옮겨 읽습니다.
여기서도 비교 프레임은 같아야 합니다. 같은 baseline, 같은 점수 구간, 같은 대표 실패 사례를 두고 threshold 전후를 비교해야 무엇이 정책 변화 때문이고 무엇이 모델 표현 부족 때문인가를 더 분명하게 나눌 수 있습니다.
이 지점을 프로젝트 메모 관점으로 다시 적으면 더 분명합니다. 로지스틱 회귀를 첫 비교 모델로 쓸 때는 점수표만 남기는 것이 아니라, 어느 점수 구간을 review 대상으로 둘 것인가, threshold가 바뀌면 어떤 사례가 행동을 바꾸는가, baseline보다 실제로 무엇이 나아졌는가를 함께 적어 둡니다. 그래야 같은 확률 점수라도 정책 변화, 특징 부족, 대표 실패 사례를 뒤섞지 않고 다시 읽을 수 있습니다.
| 같이 남길 기록 | 왜 필요한가 |
|---|---|
| baseline과 로지스틱 회귀 점수 비교 | 단순 기준보다 실제로 무엇이 나아졌는지 보기 위해서입니다. |
| threshold별 행동 변화 사례 | 같은 점수라도 서비스 정책이 어떻게 달라지는지 기록하기 위해서입니다. |
| review 대상 점수 구간 | 경계 근처 사례를 사람 검토 대상으로 다시 읽기 위해서입니다. |
| 다음 조정 질문 | threshold를 바꿀지, 특징을 더 볼지, 다른 후보 모델을 볼지 정하기 위해서입니다. |
이 기록이 있어야 점수가 올랐다, threshold를 바꿨다, 경고가 늘었다 같은 사실을 서로 섞지 않고 읽을 수 있습니다. 즉, 로지스틱 회귀 절도 같은 점수 공간을 어떤 기준으로 나누고 있는가를 설명 가능한 비교로 남기는 절입니다.
언제 로지스틱 회귀를 먼저 후보로 올리면 좋은가¶
로지스틱 회귀는 분류 문제의 첫 비교 모델로 자주 쓰이지만, 그 이유는 유명해서가 아니라 점수와 정책을 분리해 읽기 좋은 선형 분류 모델이기 때문입니다.
| 현재 문제 상태 | 로지스틱 회귀를 먼저 올릴 이유 | 먼저 확인할 점 |
|---|---|---|
| 이진 분류가 목적이다 | 0과 1 사이 점수와 최종 class를 함께 읽기 쉽기 때문 | 출력이 범주형 판단인지 |
| 설명 가능한 첫 분류 모델이 필요하다 | 선형 점수, 계수, threshold를 비교적 직접 설명할 수 있기 때문 | 선형 경계로 충분한지 |
| baseline보다 조금 더 나은 점수 모델이 필요하다 | 다수 클래스 기준보다 실제 개선을 비교하기 좋기 때문 | confusion matrix에서 무엇이 줄었는지 |
| 사람 검토 대상 점수 구간을 남기고 싶다 | predict_proba와 threshold를 분리해 review 대상을 정할 수 있기 때문 | 경계 근처 사례를 따로 기록하는지 |
| 운영 정책과 모델 출력을 구분해야 한다 | 점수는 모델이 만들고 행동은 정책이 정한다는 구조가 분명하기 때문 | threshold 변경과 모델 개선을 섞지 않는지 |
이 표의 핵심은 로지스틱 회귀를 첫 분류 baseline을 넘어서는 비교 모델이자 점수와 정책을 분리해 읽는 훈련 모델로 두는 데 있습니다.
세부 학습내용¶
학술적 배경과 역사¶
여기까지 읽으면 이런 질문이 생깁니다. 왜 굳이 이런 모델이 따로 필요했을까? 로지스틱 회귀는 이름 때문에 선형회귀의 단순한 변형처럼 보이지만, 실제로는 연속값을 설명하던 선형 모델을 이항 결과를 읽는 방식으로 확장한 모델에 가깝습니다.
- 선형회귀는 연속값을 설명하는 데 강합니다.
- 하지만 성공/실패처럼 둘 중 하나를 고르는 문제에 그대로 쓰면 0보다 작거나 1보다 큰 값이 나와 확률처럼 읽기 어렵습니다.
- 그래서 통계학에서는 선형식은 유지하되, 그 출력을 0~1 범위로 옮겨 읽는 해석 방식을 정리했습니다.
즉, 로지스틱 회귀의 역사적 의미는 직선을 버린 것보다 직선 계산을 분류 문제에 맞게 다시 읽은 것에 더 가깝습니다.
이 관점에서 보면 선형회귀와 로지스틱 회귀의 순서도 분명해집니다.
- 선형회귀: 연속값을 설명하는 가장 기본적인 선형 모델
- 로지스틱 회귀: 선형 모델의 사고를 유지하되, 출력을 이진 분류(binary classification)에 맞게 해석한 모델
현대 머신러닝 문맥에서는 이 모델을 보통 classification을 위한 linear model로 소개합니다. 역사 전체를 외우기보다 다음 한 문장을 기준으로 두면 됩니다.
선형회귀가 연속값을 설명하는 대표적 선형 모델이었다면, 로지스틱 회귀는 그 선형적 사고를 이진 분류와 확률 해석 쪽으로 확장한 모델이다.
주요 논의점은 어디에서 생기는가¶
작동 방식과 예제를 본 뒤에는 이 모델을 어디까지 믿고, 어디서부터 조심해야 하는가가 다음 질문이 됩니다. 로지스틱 회귀는 입문용으로 자주 쓰이고, 해석 가능성(interpretability)도 비교적 높다고 알려져 있습니다. 하지만 실제로는 설명이 쉬워 보이는 만큼, 과하게 단순화해서 오해하기 쉬운 모델이기도 합니다. 다음 논의점을 잡아 두는 것이 중요합니다.
1. 점수(score)와 결정(decision)은 같은가¶
가장 흔한 오해는 모델의 출력과 서비스의 행동을 같은 것으로 보는 것입니다.
- 모델은 보통
class 1일 가능성을 얼마나 높게 보는가에 가까운 점수를 냅니다. - 서비스는 그 점수 위에서
차단,경고,검토,통과같은 행동을 결정합니다.
따라서 로지스틱 회귀를 둘러싼 첫 번째 논의점은 모델이 어디까지 말하고, 서비스 정책이 어디서부터 개입하는가입니다.
로지스틱 회귀는 판단 재료를 만들지만, 최종 행동 규칙까지 자동으로 정해 주지는 않는다.
이 문장을 운영 기록 형식으로 바꾸면 다음처럼 적을 수 있습니다.
| 기록 항목 | 예 |
|---|---|
| 점수(score) | 0.58 |
| 현재 threshold | 0.50 |
| 현재 행동 | 경고 |
| review 필요 여부 | 경계 근처이므로 검토 |
| 다음 질문 | 0.60 이상으로 올리면 FN이 얼마나 늘어나는가 |
이 표가 있으면 확률 점수, threshold, review 대상 사례가 따로 놀지 않고 하나의 비교 기록으로 남습니다.
2. 확률처럼 보이는 값은 언제까지 확률인가¶
0.82라는 값이 나왔다고 해서, 그것이 곧 현실 세계의 참확률을 완벽하게 뜻하는 것은 아닙니다. 데이터 분포, 학습 방식, calibration 상태에 따라 확률처럼 보이는 점수와 실제 빈도는 다를 수 있습니다.
여기서 생기는 논의점은 단순합니다.
- 이 값은
순서를 매기는 점수에 더 가까운가 - 아니면
현실 확률로 읽어도 괜찮은가
실무에서는 이 차이가 중요합니다. 고객 우선순위를 정하는 일이라면 점수의 순서가 더 중요할 수 있고, 의료 위험 안내처럼 확률 해석이 민감한 장면에서는 calibration이 더 중요해질 수 있습니다.
핵심은 다음처럼 정리됩니다.
로지스틱 회귀의 출력은 확률처럼 읽히는 점수이지만, 그것이 언제나 완벽한 실제 확률을 뜻하는 것은 아니다.
3. 계수(coefficient)는 설명인가, 원인인가¶
로지스틱 회귀가 널리 쓰이는 이유 중 하나는 계수(coefficient)를 비교적 읽기 쉽기 때문입니다. 하지만 읽을 수 있다와 원인을 안다는 다른 말입니다.
- 계수의 부호는 어느 방향으로 점수를 밀어 주는지 보여 줄 수 있습니다.
- 계수의 크기는 모델 안에서 상대적 영향을 비교하는 단서가 될 수 있습니다.
- 그러나 그것이 곧 현실의 직접 원인(cause)을 증명하지는 않습니다.
이 논의점은 특히 사회 데이터, 의료 데이터, 사용자 행동 데이터에서 중요합니다. 상관관계(correlation)와 인과관계(causation)를 섞으면, 설명은 쉬워 보여도 결론은 위험해질 수 있습니다.
4. 로지스틱 회귀는 단순해서 좋은가, 단순해서 약한가¶
로지스틱 회귀는 선형 모델(linear model)입니다. 이 단순함은 장점이기도 하고 한계이기도 합니다.
- 장점: 빠르고, baseline으로 쓰기 좋고, 해석이 비교적 쉽습니다.
- 한계: 입력과 결과의 관계가 매우 복잡하거나 비선형(nonlinear)일 때는 표현력이 부족할 수 있습니다.
그래서 실무에서는 종종 이런 논의가 생깁니다.
- 로지스틱 회귀로 시작해 기준선을 잡을 것인가
- 아니면 처음부터 더 복잡한 모델로 갈 것인가
이 책에서는 첫 번째를 기준으로 둡니다. 로지스틱 회귀는 가장 좋은 모델이라서가 아니라, 분류 문제를 처음 구조적으로 이해하기 좋은 모델이기 때문에 중요합니다.
5. threshold 0.5는 왜 자주 쓰이지만, 왜 절대 기준은 아닌가¶
0.5는 자주 쓰는 기본값(default)일 뿐입니다. 실제 서비스에서는 비용 구조, 클래스 불균형(class imbalance), 정책 기준에 따라 다른 임계값이 더 적절할 수 있습니다.
- 스팸을 놓치면 안 되는 서비스
- 정상 사용자를 잘못 차단하면 안 되는 서비스
- 위험 신호를 조기에 넓게 잡아야 하는 서비스
는 같은 로지스틱 회귀 출력이라도 다른 threshold를 쓸 수 있습니다.
즉, 로지스틱 회귀를 둘러싼 중요한 논의점 하나는 좋은 점수와 좋은 행동 기준이 항상 같지 않다는 점입니다.
사례 및 예시¶
사례를 읽기 전에 이번 절의 공통 비교 프레임을 먼저 잡으면 다음과 같습니다.
| 장면 | 사람이 먼저 쓰기 쉬운 기준 | 그 기준의 한계 | 로지스틱 회귀가 바꾸는 점 | 확인할 결과 |
|---|---|---|---|---|
| 이탈 예측 | 위험 고객을 감으로 고른다 | 같은 고객도 사람마다 다르게 볼 수 있다 | 확률처럼 읽히는 점수와 threshold를 같이 둔다 | review 대상과 자동 행동 기준을 나눌 수 있다 |
| 스팸 분류 | 의심 메일을 강하게 막는다 | FP와 FN 비용을 한 기준으로 섞기 쉽다 | 점수와 정책 기준을 분리해 읽는다 | 서비스별 threshold 차이를 설명할 수 있다 |
| 의료 위험 분류 | 위험해 보이면 넓게 경고한다 | 놓침 비용과 과잉 경고 비용을 같이 다루기 어렵다 | 같은 점수라도 더 민감한 threshold를 둘 수 있다 | 정확도 외의 판단 기준이 필요함을 본다 |
| 대출 / 사기 탐지 | 한두 기준으로 승인과 차단을 정한다 | 도메인별 비용 구조 차이를 놓친다 | 같은 모델이어도 다른 운영 정책을 얹는다 | 모델 점수와 행동 정책을 분리해 읽는다 |
사례 1. 고객 이탈 예측¶
고객 이탈(churn) 예측에서는 로지스틱 회귀가 baseline처럼 자주 쓰입니다.
- 출력값은
이탈할 가능성 - 실제 서비스 판단은
어느 점수 이상이면 리텐션 캠페인을 보낼 것인가
예를 들어 구독 서비스가 다음 세 특징만 먼저 본다고 해 보겠습니다.
| 고객 | 최근 30일 접속일수 | 최근 30일 결제 횟수 | 불만 문의 여부 | class 1 점수 | 0.5 기준 행동 |
|---|---|---|---|---|---|
| A | 26 | 4 | 없음 | 0.18 | 일반 유지 |
| B | 9 | 1 | 있음 | 0.61 | 이탈 방지 캠페인 |
| C | 4 | 0 | 있음 | 0.84 | 우선 검토 + 강한 리텐션 |
이 표에서 독자가 먼저 잡아야 할 것은 입력 특징이 바로 행동으로 가지 않는다는 점입니다. 모델은 먼저 점수를 만들고, 서비스는 그 점수를 기준으로 일반 유지, 캠페인, 사람 검토 같은 행동을 나눕니다.
flowchart TD
A["고객 특징"]
B["선형 점수"]
C["sigmoid"]
D["클래스 1 점수"]
E["임계값 정책"]
F["캠페인 또는 검토"]
A --> B --> C --> D --> E --> F
이 장면에서 로지스틱 회귀를 먼저 고려하는 이유는 보통 세 가지입니다. 빠르게 기준선을 세울 수 있고, 어떤 특징이 점수를 밀어 올리는지 비교적 읽기 쉬우며, threshold 정책을 바꿔 여러 운영 시나리오를 바로 비교할 수 있기 때문입니다.
이 장면에서 중요한 것은 모델 자체보다 threshold 정책입니다. 예를 들어 B처럼 0.61인 고객을 자동 캠페인 대상으로 둘지, C처럼 0.80 이상만 강한 개입 대상으로 둘지는 비용 구조에 따라 달라집니다. 즉, 같은 점수표라도 어디서 자동 행동을 시작할지는 모델 바깥의 운영 결정입니다.
사례 2. 이메일 스팸 분류¶
스팸 필터에서는 false positive가 너무 많으면 정상 메일이 차단됩니다. 반대로 false negative가 많으면 스팸을 놓칩니다.
아주 작은 메일 분류 장면으로 바꾸면 더 분명합니다.
| 메일 | 모델이 본 신호 예 | class 1 점수 | 0.5 기준 | 더 보수적 기준 0.8 |
|---|---|---|---|---|
| M1 | 광고 단어 적음, 발신자 정상 | 0.12 | 정상 통과 | 정상 통과 |
| M2 | 링크 많음, 제목 과장 표현 | 0.57 | 스팸 처리 | 사람 검토 |
| M3 | 링크 많음, 발신자 이상, 반복 문구 | 0.93 | 스팸 처리 | 스팸 처리 |
이 표는 스팸 점수 0.57을 바로 차단할지, 검토로 보낼지, 그냥 통과시킬지를 threshold가 바꾼다는 점을 보여 줍니다.
즉, 같은 로지스틱 회귀라도
- 보수적으로 차단할 서비스
- 공격적으로 걸러야 하는 서비스
에서 threshold는 달라질 수 있습니다.
간단히 말하면 다음 두 질문이 항상 따라옵니다.
- 스팸을 놓치는 비용이 더 큰가
- 정상 메일을 잘못 막는 비용이 더 큰가
로지스틱 회귀는 이 질문에 직접 답하지 않습니다. 다만 그 질문을 threshold 정책으로 옮길 수 있는 점수를 제공합니다.
사례 3. 의료 위험 분류¶
의료 분야에서는 양성 위험을 놓치는 비용이 매우 클 수 있습니다. 이 경우 0.5보다 더 낮은 threshold를 써서 더 민감하게 경고를 띄우는 정책이 필요할 수도 있습니다.
예를 들어 외래 선별 단계에서 다음처럼 읽을 수 있습니다.
| 환자 | 모델이 본 신호 예 | class 1 점수 | 0.5 기준 | 0.3 기준 |
|---|---|---|---|---|
| P1 | 나이 낮음, 주요 수치 안정 | 0.11 | 일반 안내 | 일반 안내 |
| P2 | 혈압 상승, 가족력 있음 | 0.34 | 일반 안내 | 추가 검사 권고 |
| P3 | 주요 수치 다수 이상 | 0.79 | 추가 검사 권고 | 추가 검사 권고 |
이때 P2 같은 사례가 중요합니다. 0.34는 0.5 기준으로는 낮아 보이지만, 놓침 비용이 큰 환경에서는 추가 검사를 먼저 권고하는 쪽이 더 안전할 수 있습니다.
이 장면에서는 단순 정확도(accuracy)만 보면 안 되고, 민감도에 가까운 관점이 더 중요해질 수 있습니다. 그래서 로지스틱 회귀는 보통 점수 모델로 먼저 쓰고, 실제 운영은 의료 기준과 함께 별도로 설계합니다.
사례 4. 대출 심사와 사기 거래 탐지의 차이¶
대출 심사에서는 잘못 승인하는 비용과 잘못 거절하는 비용이 모두 큽니다. 사기 거래 탐지에서는 정상 사용자를 막는 비용도 크지만, 실제 사기를 놓쳤을 때의 비용이 더 클 수 있습니다.
두 문제 모두 이진 분류처럼 보이지만, 운영 관점은 다릅니다.
- 대출 심사: 설명 가능성과 정책 일관성이 중요할 수 있습니다.
- 사기 탐지: 빠른 경고와 높은 재현율이 더 중요할 수 있습니다.
두 장면을 같은 형식으로 놓고 보면 차이가 더 잘 보입니다.
| 장면 | 같은 점수 0.62를 어떻게 읽기 쉬운가 |
|---|---|
| 대출 심사 | 추가 서류 요청이나 심사자 검토로 보내고, 곧바로 거절하지 않을 수 있습니다. |
| 사기 탐지 | 결제를 잠시 보류하거나 추가 인증을 요구하는 쪽으로 더 빠르게 반응할 수 있습니다. |
즉, 점수는 비슷해도 서비스가 허용하는 실수의 종류가 다르면 같은 로지스틱 회귀 점수가 다른 행동으로 이어질 수 있습니다.
이 때문에 같은 로지스틱 회귀라도 어떤 분야에서는 baseline으로 오래 살아남고, 어떤 분야에서는 더 복잡한 모델의 출발점으로만 쓰이기도 합니다.
이 사례들은 공통적으로 다음 사실을 보여 줍니다.
로지스틱 회귀는 점수를 만들고, 서비스는 그 점수를 어떻게 행동으로 바꿀지 따로 정한다.
연습 및 예제¶
Python 예제로 작은 로지스틱 회귀 보기¶
아래 예제는 공부 시간(study_hours)으로 시험 합격 여부(passed)를 예측하는 아주 작은 이진 분류(binary classification) 실습입니다.
- 문제 상황: 공부 시간이 늘수록 합격 가능성이 높아진다고 가정합니다.
- 입력(input): 공부 시간
- 정답(label): 합격(1) / 불합격(0)
- 확인할 개념:
- 선형 점수가 sigmoid를 거쳐 0~1 사이 값으로 읽힙니다.
predict_proba와predict는 같은 단계가 아닙니다.- 계수의 부호는 어느 방향으로 가능성을 올리는지 보여 줍니다.
입력은 다음처럼 읽으면 됩니다.
| 입력 묶음 | 뜻 |
|---|---|
study_hours | 한 특징만 있는 1차원 입력 |
passed | 합격 / 불합격 정답 |
[[3], [5], [7]] | 경계 전, 경계 근처, 경계 뒤를 확인하기 위한 샘플 |
훈련 데이터를 표로 다시 쓰면 다음처럼 읽을 수 있습니다.
| 학생 | 공부 시간 | 실제 결과 |
|---|---|---|
| S1 | 1 | 불합격 |
| S2 | 2 | 불합격 |
| S3 | 3 | 불합격 |
| S4 | 4 | 불합격 |
| S5 | 5 | 합격 |
| S6 | 6 | 합격 |
| S7 | 7 | 합격 |
| S8 | 8 | 합격 |
즉, 이 예제는 공부 시간이 4시간대에서 5시간대로 넘어갈 때 합격 class 쪽으로 읽히기 시작하는가를 보는 가장 작은 장난감 데이터입니다.
실행 결과 예시는 다음과 같습니다.
이 출력은 다음처럼 읽으면 됩니다.
- 계수가 양수이므로, 공부 시간이 늘수록
합격 class쪽으로 점수가 이동합니다. x=3에서는 class 1 확률처럼 읽히는 값이 낮아 불합격 쪽으로 분류됩니다.x=5에서는 0.5 근처를 지나면서 분류가 바뀝니다.x=7에서는 합격 쪽 가능성을 더 높게 봅니다.
중요한 것은 0.548 같은 값이 보이면, 그것이 곧 절대적 사실이라기보다 현재 모델이 이 데이터를 보고 그쪽 class를 더 가능성 높게 본다는 뜻으로 읽어야 한다는 점입니다.
직접 값을 바꿔 보면 더 잘 보이는 지점도 있습니다.
[[3], [5], [7]]대신[[4], [5], [6]]처럼 더 촘촘히 넣으면 경계 근처 점수 변화를 더 자세히 볼 수 있습니다.passed에서 경계 근처 정답을 조금 바꾸면 계수와 절편도 함께 움직입니다.- 같은 점수라도 threshold를 바꾸면 최종 행동이 달라진다는 점은 바로 다음 예제로 이어집니다.
Python 예제로 threshold 차이도 함께 보기¶
이번에는 같은 점수라도 threshold를 어떻게 두느냐에 따라 최종 행동이 달라진다는 점을 눈으로 확인해 보겠습니다.
- 문제 상황: 고객 이탈 점수를 받았다고 가정합니다.
- 입력(input): 이미 계산된 class 1 점수
- 기대 출력(output): threshold 0.5와 0.7에서 판단이 어떻게 달라지는지
- 확인할 개념:
- 점수는 같아도 정책 기준이 바뀌면 class decision이 달라집니다.
- 모델의 출력과 서비스의 행동은 분리해서 읽어야 합니다.
실행 결과 예시는 다음과 같습니다.
이 출력은 모델이 점수를 만들고, 그 점수를 어떤 행동으로 바꿀지는 운영 규칙이 정한다는 사실을 다시 보여 줍니다.
예를 들어 0.58 하나만 보고 바로 경고를 보낼지, 검토 대상으로 둘지는 모델이 아니라 정책이 정합니다. 다음 조치는 경계 근처 점수들을 모아 FP와 FN 비용에 맞는 threshold를 다시 확인하는 일입니다. 즉, threshold 절의 핵심은 점수 해석보다 경계 근처 사례를 어떻게 처리할 것인가까지 이어지는 판단입니다.
값 하나 더 바꿔 보기: 경계 근처 정답이 하나 바뀌면 점수 해석은 어떻게 흔들리는가¶
이번에는 훈련 데이터에서 경계 근처의 study_hours = 4 사례를 불합격(0)에서 합격(1)으로 바꿔 봅니다.
실행 결과 예시는 다음과 같습니다.
무엇이 유지되고 무엇이 달라지는가¶
- 유지된 점: 공부 시간이 늘수록 합격 쪽 점수가 올라간다는 전체 방향은 유지됩니다.
- 바뀐 점: 경계 근처 정답 하나가 바뀌자
x=4의 class 1 점수는0.327에서0.579로 크게 움직입니다. - 먼저 남길 판단: 로지스틱 회귀의 점수는 자연에 원래 있던 확률을 발견한 것이 아니라, 현재 학습 데이터 경계가 만든 해석 결과입니다.
이 비교를 통해 로지스틱 회귀는 점수를 출력하는 모델이 아니라 경계 근처 사례에 민감한 분류 기준으로 읽힙니다. 중요한 것은 점수 숫자 하나를 믿는 것이 아니라, 어떤 사례 변화가 점수와 threshold 판단을 얼마나 흔드는지 읽는 일입니다. 같은 예제를 반복해서 바꿔 보면 모델 출력과 서비스 행동 사이에 항상 데이터 해석 단계가 하나 더 있다는 점도 더 분명해집니다.
| 공통 기록 언어 | 이번 연습에서 바로 남길 내용 |
|---|---|
| 보인 구조 | 경계 근처 정답 하나만 바뀌어도 같은 입력의 class 1 점수 해석이 크게 흔들렸다 |
| 해석 경계 | 이 점수 변화만으로 실제 확률이 갑자기 그렇게 바뀌었다고 단정할 수는 없고, 표본과 데이터 경계를 같이 봐야 한다 |
| 다음 질문 | 경계 근처 사례를 더 모으면 점수 흔들림이 줄어드는지, threshold 정책까지 붙이면 어떤 행동이 달라지는지 다시 볼 것인가 |
| 먼저 보인 신호 | 이 신호가 뜻하는 것 | 바로 이어질 다음 조치 |
|---|---|---|
| 0.5 근처 점수가 많고 threshold를 바꾸면 판단이 자주 뒤집힌다 | 모델 점수보다 운영 경계 설정이 더 큰 차이를 만들고 있다는 뜻 | 경계 근처 사례를 모아 FP와 FN 비용에 맞는 threshold를 다시 본다 |
| 높은 점수는 많은데 실제 빈도와 체감 위험이 어긋나 보인다 | 점수 순서와 확률 해석을 같은 것으로 보면 위험할 수 있다는 뜻 | calibration이 필요한지, 점수를 순위용으로만 쓸지 운영 목적을 다시 나눈다 |
체크리스트¶
- 지금 문제가 이진 분류인지 먼저 확인했는가?
- 로지스틱 회귀를 분류 문제에서 확률처럼 읽히는 출력을 만드는 선형 모델로 설명할 수 있는가?
- 내부 계산은 선형 결합이지만, 최종 해석은 sigmoid를 거친 0~1 범위 값으로 바뀐다는 점을 이해했는가?
predict_proba와 최종predict를 같은 것으로 읽고 있지 않은가?- threshold 변경과 모델 자체의 개선을 구분해 설명할 수 있는가?
- 계수 해석, sigmoid, 확률처럼 읽히는 출력이 한 번에 엉킬 때 선형 결합 뒤에 해석 단계가 하나 더 붙는 모델이라는 점을 다시 설명할 수 있는가?
출처와 참고 자료¶
- scikit-learn,
1.1.11. Logistic regression, scikit-learn User Guide, 확인 날짜: 2026-06-26. https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression - scikit-learn,
LogisticRegression, scikit-learn API Reference, 확인 날짜: 2026-06-26. https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html