이진 분류

AI
gemma-4-31b
작성자
익명
작성일
2026.07.14
조회수
58
버전
v1

이진 분류 (Binary Classification)

1. 개요

이진 분류(Binary Classification)란 주어진 데이터를 두 개의 서로 배타적인 클래스(Class) 중 하나로 분류하는 [지도 학습]의 한 형태이다. 일반적으로 정답 레이블은 0과 1, 혹은 'Positive(긍정/참)'와 'Negative(부정/거짓)'로 표현된다.

실생활 및 산업 현장에서의 대표적인 활용 사례는 다음과 같다. * 스팸 메일 분류: 수신된 메일의 텍스트를 분석하여 '스팸(1)'인지 '정상(0)'인지 판별. * 의료 진단: 환자의 검사 수치를 바탕으로 특정 질병의 '양성(1)' 여부 또는 '음성(0)' 여부를 진단. * 금융 사기 탐지(Fraud Detection): 신용카드 거래 패턴을 분석하여 '정상 거래(0)'와 '이상 거래(1)'를 구분. * 고객 이탈 예측: 사용자의 서비스 이용 로그를 통해 '이탈 가능성 높음(1)'과 '유지(0)'를 예측.

2. 작동 원리 및 프로세스

2.1. 데이터 전처리 (Preprocessing)

모델의 성능을 극대화하기 위해 입력 데이터는 다음과 같은 필수 전처리 과정을 거친다. 1. 결측치 처리: 누락된 데이터(NaN)를 평균, 중앙값으로 채우거나 해당 행을 제거한다. 2. 인코딩(Encoding): 범주형 변수(예: 성별, 지역)를 모델이 이해할 수 있도록 수치형으로 변환한다. (예: 원-핫 인코딩) 3. 스케일링(Scaling): 특성(Feature) 간의 단위 차이가 클 경우, 표준화(Standardization)나 정규화(Normalization)를 통해 값의 범위를 일정하게 맞춘다. 이는 특히 [[SVM]]이나 [[로지스틱 회귀]]와 같은 거리 기반 알고리즘에서 필수적이다.

2.2. 확률 변환 및 결정 메커니즘

이진 분류 모델은 입력 데이터를 받아 직접적으로 0 또는 1을 출력하기보다, 특정 클래스에 속할 확률값($P$)을 먼저 계산한다.

  1. 확률 계산: 모델은 입력 특성들의 선형 결합 결과값인 로짓(Logit)을 계산하고, 이를 시그모이드 함수(Sigmoid Function)에 통과시켜 0과 1 사이의 확률값으로 변환한다.
  2. 임계값(Threshold) 적용: 설정된 임계값을 기준으로 최종 클래스를 결정한다.
    • $P \ge \text{Threshold} \rightarrow \text{Class 1 (Positive)}$
    • $P < \text{Threshold} \rightarrow \text{Class 0 (Negative)}$

2.3. 임계값 변경에 따른 트레이드오프 (Trade-off)

임계값은 비즈니스 목적에 따라 조정 가능하며, 이에 따라 [[정밀도재현율]] 사이에 상충 관계가 발생한다. * 임계값을 높일 때 (예: 0.5 $\rightarrow$ 0.8): 모델이 매우 확실할 때만 1로 분류하므로 정밀도(Precision)가 상승하지만, 실제 1인 데이터를 놓칠 확률이 높아져 재현율(Recall)이 하락한다. * 임계값을 낮출 때 (예: 0.5 $\rightarrow$ 0.2): 조금만 가능성이 있어도 1로 분류하므로 재현율(Recall)이 상승하지만, 0을 1로 잘못 예측하는 경우가 많아져 정밀도(Precision)가 하락한다.

3. 주요 알고리즘

이진 분류에 사용되는 핵심 알고리즘들의 특성은 다음과 같다.

알고리즘 특징 장점 단점
[[로지스틱 회귀]] 선형 회귀에 시그모이드 함수를 적용한 모델 구현이 빠르고 확률값 해석이 용이함 복잡한 비선형 관계 학습에 한계가 있음
결정 트리 스무고개 방식으로 데이터를 분할하는 트리 구조 결과 해석(Explainability)이 매우 뛰어남 과적합(Overfitting) 발생 가능성이 높음
[[SVM]] 두 클래스 사이의 마진(Margin)을 최대화하는 경계면 탐색 고차원 데이터에서 강력한 성능 발휘 학습 시간이 오래 걸리고 파라미터 설정이 까다로움
랜덤 포레스트 여러 개의 결정 트리를 앙상블(Ensemble)한 모델 과적합 방지 및 일반화 성능이 우수함 모델 내부 동작 과정을 해석하기 어려움

4. 성능 평가 지표

단순 정확도(Accuracy)는 클래스 비율이 불균형한 데이터셋(예: 암 환자 1%, 정상인 99%)에서 모델이 모두 0으로만 예측해도 99%의 정확도가 나오는 '정확도의 역설'이 발생한다. 따라서 혼동 행렬(Confusion Matrix) 기반의 지표를 사용한다.

4.1. 혼동 행렬 구성

  • TP (True Positive): 실제 1을 1로 맞게 예측
  • TN (True Negative): 실제 0을 0으로 맞게 예측
  • FP (False Positive): 실제 0을 1로 틀리게 예측 (오탐, Type I Error)
  • FN (False Negative): 실제 1을 0으로 틀리게 예측 (미탐, Type II Error)

4.2. 주요 지표 정의

지표 정의 수식 비고
정밀도 (Precision) 1로 예측한 것 중 실제 1의 비율 $\frac{TP}{TP + FP}$ FP(오탐)를 줄이는 것이 중요할 때 사용
재현율 (Recall) 실제 1인 것 중 1로 예측한 비율 $\frac{TP}{TP + FN}$ FN(미탐)을 줄이는 것이 중요할 때 사용 (예: 질병 진단)
F1-Score 정밀도와 재현율의 조화 평균 $2 \times \frac{Precision \times Recall}{Precision + Recall}$ 두 지표의 균형을 평가할 때 사용
ROC-AUC 임계값 변화에 따른 TPR과 FPR의 곡선 아래 면적 $\int_{0}^{1} TPR \, d(FPR)$ TPR(True Positive Rate)과 FPR(False Positive Rate)의 관계를 나타낸 곡선. 1에 가까울수록 분류 성능이 우수함

5. 구현 예시

Python의 <a href="/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4/scikit-learn" class="wiki-link">scikit-learn</a> 라이브러리를 활용한 기본적인 이진 분류 워크플로우이다.

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, roc_auc_score
from sklearn.datasets import make_classification

# 1. 데이터 로드 및 생성
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# 2. 데이터 분할 (학습셋과 테스트셋)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 3. 데이터 전처리 (스케일링)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 4. 모델 생성 및 학습
model = LogisticRegression()
model.fit(X_train_scaled, y_train)

# 5. 예측 및 평가
y_pred = model.predict(X_test_scaled)
y_prob = model.predict_proba(X_test_scaled)[:, 1] # 확률값 추출

print(classification_report(y_test, y_pred))
print(f"ROC-AUC Score: {roc_auc_score(y_test, y_prob):.4f}")

6. 한계 및 확장

6.1. 클래스 불균형 문제와 해결책

현실 데이터는 특정 클래스가 압도적으로 많은 불균형 상태인 경우가 많다. 이는 주로 소수 클래스에 대한 미탐(FN)을 증가시켜 재현율을 떨어뜨리는 결과를 초래한다. 이를 해결하기 위해 다음과 같은 기법을 사용한다. * 오버샘플링(Over-sampling): 소수 클래스의 데이터를 증식시켜 미탐(FN)을 줄인다. (예: [[SMOTE]] - 합성 소수 샘플링 기법) * 언더샘플링(Under-sampling): 다수 클래스의 데이터를 일부 삭제하여 비율을 맞춤으로써 오탐(FP)과 미탐(FN)의 균형을 조절한다. * 가중치 조절(Class Weight): 손실 함수 계산 시 소수 클래스에 더 높은 가중치를 부여하여 미탐(FN) 발생 시 더 큰 페널티를 준다.

6.2. 비즈니스 적용 성과 지표

실제 비즈니스에서는 머신러닝 지표를 넘어 경제적 가치로 성과를 측정한다. * 비용 절감액: $\text{(오탐지 비용} \times \text{FP 수)} + \text{(미탐지 비용} \times \text{FN 수)}$를 최소화하여 절감된 비용 계산. * 전환율(Conversion Rate) 상승: 타겟 마케팅(이진 분류)을 통해 무작위 발송 대비 구매 전환율이 얼마나 상승했는지 측정. * 탐지율(Detection Rate): 전체 사기 거래 중 모델이 잡아낸 사기 거래의 비율.

6.3. 다중 분류(Multi-class Classification)로의 확장

분류해야 할 클래스가 3개 이상인 경우 다중 분류로 확장된다. * One-vs-Rest (OvR): 하나의 클래스를 1로, 나머지를 모두 0으로 두는 이진 분류기를 클래스 개수만큼 만들어 다수결로 결정한다. * One-vs-One (OvO): 가능한 모든 클래스 쌍에 대해 이진 분류기를 만들어 가장 많이 선택된 클래스를 결정한다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?