본문 바로가기
Python/Machine Learning, ML

지도학습:분류

by curious week 2025. 10. 21.

 

머신러닝의 분류 (Classification)

1) 분류의 개념

  • 분류(Classification)
    입력 데이터(특징 벡터 x)를 미리 정의된 여러 클래스 중 하나로 구분하는 문제를 말한다.
    이 과정에서 정답 레이블(y)이 주어지므로 지도학습(Supervised Learning)에 속한다.
  • 입출력 관계
  • 입력: x (특징 벡터) 출력: y ∈ {C1, C2, …, CM} (M개의 클래스 중 하나)
  • 분류기의 종류
    • 베이즈 분류기 (Bayes Classifier)
    • K–최근접이웃 분류기 (K-Nearest Neighbors, K–NN)
    • 로지스틱 회귀 (Logistic Regression)
    • 결정 트리 (Decision Tree)
    • 랜덤 포레스트 (Random Forest)
    • 서포트 벡터 머신 (SVM)
    • 인공신경망 (Neural Network)
  • 접근 방식에 따른 구분
    • 확률 기반 분류기 (Probabilistic Approach)
      → 각 클래스에 속할 확률을 계산
      → 예: 베이즈 분류기
    • 데이터 기반 분류기 (Data-driven Approach)
      → 데이터 간의 거리/유사도를 기준으로 결정
      → 예: K–최근접이웃 분류기

2) 베이즈 분류기 (Bayes Classifier)

(1) 기본 원리

  • 주어진 입력 x가 클래스 Ck에 속할 사후확률 P(Ck|x)을 계산하여
    그 확률이 가장 큰 클래스로 분류한다.
  • y(x) = argmax_i P(C_i | x)
  • 베이즈 정리(Bayes’ Theorem)여기서
    • P(Ck): 사전확률 (해당 클래스가 사전에 발생할 확률)
    • p(x | Ck): 가능도 (클래스 Ck일 때 데이터 x가 나올 확률)
    • p(x): 정규화 항 (모든 클래스에 대한 총 확률)
  • P(Ck | x) = [ p(x | Ck) * P(Ck) ] / p(x)

(2) 분류 과정

  1. 학습 데이터로부터 각 클래스의 확률분포함수 p(x|Ck)를 추정
  2. 테스트 데이터 x를 입력하면 각 클래스에 대한 사후확률 P(Ck|x) 계산
  3. 사후확률이 가장 큰 클래스로 할당

(3) 우도비 분류(Likelihood Ratio Test)

  • 두 클래스 C1, C2에 대해서는 다음의 비율로 판정할 수 있다.
  • g_LRT(x) = [ p(x|C1) * P(C1) ] / [ p(x|C2) * P(C2) ]
  • g_LRT(x) > 1이면 C1,
    g_LRT(x) < 1이면 C2로 분류된다.
    (g_LRT(x) = 1인 지점이 결정경계)

(4) 결정경계와 클래스 비율의 영향

  • 두 클래스의 데이터가 같은 비율로 존재할 때
    → 두 확률밀도함수 곡선이 만나는 지점이 오류가 최소인 결정경계(Decision Boundary)가 된다.
  • 한 클래스의 데이터가 더 많으면
    → 그 클래스의 사전확률 P(Ck)가 커지므로
    결정경계가 반대쪽으로 이동하여 해당 클래스의 영역이 넓어진다.

(5) 가우시안 베이즈 분류기 (Gaussian Bayes Classifier)

  • 각 클래스의 확률밀도함수 p(x|Ck)를 가우시안 분포(정규분포)로 가정:
    • μk: 클래스 Ck의 평균 벡터
    • Σk: 클래스 Ck의 공분산 행렬
  • p(x|Ck) = (1 / (2π)^(n/2) |Σk|^(1/2)) * exp( -0.5 * (x - μk)^T * Σk^(-1) * (x - μk) )

(6) 공분산 행렬의 형태에 따른 결정경계 변화

공분산 형태 특징 결정경계 형태 설명

Σk = σ²I (모든 클래스 동일, 단위행렬 상수배) 최소거리 분류기(Minimum Distance Classifier) 직선(또는 평면) 모든 방향에서 동일한 분포
Σk = Σ (모든 클래스 동일, 일반행렬) 마할라노비스 거리(Mahalanobis Distance) 선형(직선) 공분산 구조 반영
Σk ≠ Σj (클래스별 상이) 각 클래스마다 다른 분포 비선형(곡선) 복잡한 데이터 표현 가능하지만 과적합 위험

(7) 특징 요약

  • 장점
    • 확률적 접근으로 이론적 근거가 명확
    • 학습 후에는 평균(μ), 공분산(Σ)만 저장하면 됨 → 예측 빠름
  • 단점
    • 데이터 분포가 가정(정규분포)과 다르면 성능 저하
    • 공분산 추정 시 데이터 수가 적으면 추정오차 증가

3) K–최근접이웃 분류기 (K–Nearest Neighbors, K–NN)

(1) 기본 개념

  • 최근접이웃(Nearest Neighbor)
    테스트 데이터 x와 가장 가까운 학습 데이터 하나를 찾아
    그 데이터의 클래스 레이블을 그대로 할당한다.
    (K=1인 경우)
  • K–최근접이웃(K–NN)
    입력 x로부터 가장 가까운 K개 학습 데이터를 찾은 후,
    그중 다수결(Majority Vote)로 클래스를 결정한다.(I(condition): 참이면 1, 거짓이면 0)
  • y(x) = argmax_{Ck} Σ_{i ∈ N_k(x)} I(y_i = Ck)

(2) 수행 단계

  1. 입력 데이터 x와 모든 학습 데이터 간의 거리 계산
    (예: 유클리디안 거리, 맨해튼 거리, 마할라노비스 거리 등)
  2. 가장 가까운 K개 데이터 선택
  3. 그들의 클래스 중 가장 많이 등장한 클래스로 분류

(3) 거리 함수의 예

  • 유클리디안 거리
  • d(x, xi) = sqrt( Σ_j (x_j − xij)² )
  • 맨해튼 거리
  • d(x, xi) = Σ_j |x_j − xij|
  • 마할라노비스 거리
  • d_M(x, μ) = sqrt( (x − μ)^T Σ^(-1) (x − μ) )

(4) 설계 고려사항

  • K 값 선택
    • K=1 → 노이즈에 민감 (과적합)
    • K가 너무 큼 → 경계가 흐려짐 (과소적합)
    • 교차검증(Cross Validation)을 통해 적절한 K를 선택
  • 거리 함수 선택
    • 데이터의 특성(스케일, 분산)에 따라 성능 차이가 큼
    • 표준화(정규화) 과정을 통해 각 특징의 단위 차이를 제거해야 함

(5) 특징 요약

  • 장점
    • 분포 가정이 필요 없음
    • 복잡하고 비선형적인 데이터 구조에도 잘 작동
  • 단점
    • 모든 학습 데이터를 저장해야 함 → 메모리 부담
    • 새로운 입력마다 전체 데이터와 거리 계산 → 예측 속도 느림

4) 두 분류기의 비교 요약

구분 가우시안 베이즈 분류기 K–최근접이웃 분류기

접근 방식 확률 기반 데이터 기반
데이터 분포 가정 각 클래스가 가우시안(정규분포)을 따른다고 가정 분포 가정 없음
학습 시 저장 평균(μ), 공분산(Σ)만 저장 전체 학습 데이터 저장
예측 시 계산 확률(판별함수) 계산 거리 계산
결정경계 형태 주로 선형(또는 약한 곡선) 매우 비선형
장점 빠른 예측, 수학적으로 명확 복잡한 분포에 강함
단점 분포 가정 오류 시 성능 저하 계산량, 메모리 부담

5) 핵심 요약

  • 분류(Classification): 입력 데이터를 미리 정의된 클래스 중 하나로 구분하는 문제.
  • 베이즈 분류기: 확률 모델 기반. 사후확률이 가장 큰 클래스로 분류.
  • K–NN 분류기: 거리 기반. 주변 이웃의 다수결로 클래스 결정.
  • 차이점:
    • 베이즈 → 모델 기반 (가우시안 가정)
    • K–NN → 메모리 기반 (비모수적, 데이터 직접 사용)

'Python > Machine Learning, ML' 카테고리의 다른 글

SVM과 커널법  (0) 2025.10.21
비지도학습: 군집화  (0) 2025.10.21
데이터표현: 특징추출  (0) 2025.10.21
지도학습:회귀  (0) 2025.10.21
머신러닝 소개  (0) 2025.10.13