alt

기계학습5주차

Shared on April 7, 2026

머신러닝 기초: 생성 모델 복습 및 비모수 모델(KNN, 의사결정 나무)

개요

본 강의에서는 이전 시간에 다루었던 생성 모델인 **나이브 베이즈(Naive Bayes)**와 **선형 판별 분석(LDA)**의 핵심 개념을 복습합니다. 이어서 고정된 파라미터 형태를 가지지 않는 **비모수 모델(Non-Parametric Models)**의 대표적인 예시로 **K-최근접 이웃(KNN)**과 **의사결정 나무(Decision Tree)**의 작동 원리와 특징을 학습합니다. 마지막으로 다수의 모델을 결합하여 성능을 높이는 앙상블(Ensemble) 기법의 기초 개념을 다룹니다.

핵심 개념

  • 생성 모델 (Generative Models): 데이터의 생성 과정(결합 확률 $P(X,Y)$)에 관심을 가지며, 베이즈 정리를 활용하여 판별 목적으로 사용할 수 있는 모델 (예: Naive Bayes, LDA).
  • 비모수 모델 (Non-Parametric Models): 사전에 정해진 함수 형태나 파라미터 수가 없으며, 훈련 데이터의 양에 따라 모델의 복잡도가 유연하게 변하는 모델 (예: KNN, Decision Tree).
  • Fisher의 LDA: 투영된 데이터의 클래스 간 평균 차이는 최대화하고, 클래스 내부의 분산(Within-class variance)은 최소화하는 최적의 선형 결정 경계를 찾는 기법.
  • 불순도(Impurity)와 정보 획득량(Information Gain): 의사결정 나무에서 노드를 분할할 때 사용하는 기준으로, 자식 노드의 불순도가 부모 노드보다 얼마나 감소했는지(정보 획득량)를 측정하여 가장 정보 획득량이 큰 피처를 선택함.

상세 노트

1. 생성 모델 복습: Naive Bayes와 LDA

  • 판별 모델 vs 생성 모델:
    • 판별 모델: $X$가 주어졌을 때 $Y$의 조건부 확률 $P(Y|X)$을 직접 예측 (예: 선형 회귀, 로지스틱 회귀).
    • 생성 모델: $X$와 $Y$의 결합 확률 $P(X,Y)$ 및 데이터가 생성되는 과정 $P(X|Y)$을 모델링. 이를 통해 분류에 활용.
  • 나이브 베이즈 (Naive Bayes):
    • 각 피처(Feature)들이 서로 독립이라는 강한 가정을 통해 우도(Likelihood) 계산을 단순화함.
    • 계산이 빠르고 단순하지만, 피처 간의 상관관계를 반영하지 못함.
  • 선형 판별 분석 (LDA; Linear Discriminant Analysis):
    • 확률적 접근: 각 클래스의 데이터가 정규 분포를 따르며, 모든 클래스가 **동일한 공분산(Covariance)**을 가진다고 가정. 이 가정 덕분에 결정 경계가 곡선이 아닌 선형(Linear)으로 나타남.
    • 기하학적 접근 (Fisher's LDA): 데이터를 1차원 선에 투영했을 때, 클래스 간의 평균 차이는 최대한 벌리고(Maximize between-class variance), 동일 클래스 내의 데이터 퍼짐 정도는 최소화(Minimize within-class variance)하는 최적의 투영 방향 $W$를 찾음.
    • PCA와 유사하게 차원을 축소할 수 있으나, LDA는 클래스 라벨(지도학습)을 활용하여 분류를 잘하기 위한 목적을 가짐.

2. 모수 모델과 비모수 모델

  • 모수 모델 (Parametric Models):
    • $y = f(x, W)$처럼 특정한 함수 형태와 고정된 수의 파라미터($W$)를 가짐.
    • 훈련 데이터로 파라미터를 학습하고 나면, 예측 시 훈련 데이터 자체는 더 이상 필요하지 않음.
  • 비모수 모델 (Non-Parametric Models):
    • 특정한 함수 형태를 가정하지 않으며, 파라미터가 데이터에 따라 유동적으로 결정됨.
    • 예측 시 훈련 데이터 전체 또는 일부를 계속 메모리에 유지하고 활용하는 경우가 많음.

3. K-최근접 이웃 (KNN; K-Nearest Neighbors)

  • 작동 원리:
    • 새로운 데이터가 주어졌을 때, 거리 측정(예: 유클리디안 거리)을 통해 훈련 데이터 중 가장 가까운 K개의 이웃을 찾음.
    • K개의 이웃들이 가진 클래스 라벨 중 가장 많은 것(다수결, Majority Vote)으로 새로운 데이터의 클래스를 예측함.
  • 특징:
    • 모델 학습 과정이 사실상 없으며, 예측 시점에 거리를 계산함.
    • K값의 크기에 따라 결정 경계(Decision Boundary)가 크게 달라짐. K가 작으면 경계가 복잡해지고(과적합 위험), K가 크면 경계가 부드러워짐.

4. 의사결정 나무 (Decision Tree)

  • 작동 원리:
    • 특정 피처를 기준으로 데이터를 재귀적으로 분할하여, 스무고개와 같은 플로우차트(Flowchart) 형태로 분류 규칙을 만듦.
    • 최종적으로 도달하는 잎 노드(Leaf Node)의 데이터들이 하나의 클래스로 순수하게 모이는 것을 목표로 함.
  • 분할 기준 (Information Gain & Impurity):
    • 불순도 (Impurity): 노드 내에 여러 클래스가 섞여 있는 정도. 대표적으로 **엔트로피(Entropy)**와 지니 계수(Gini Impurity), 분류 오류(Classification Error)를 사용함. 완전히 섞여 있으면 불순도가 높고, 한 클래스만 있으면 0이 됨.
    • 정보 획득량 (Information Gain): 부모 노드의 불순도에서 자식 노드들의 가중 평균 불순도를 뺀 값. 정보 획득량이 가장 큰(즉, 데이터를 가장 잘 구별하는) 피처를 선택하여 가지를 뻗음.
  • 과적합 방지:
    • 트리를 끝까지 깊게 나누면 훈련 데이터에 100% 맞춰지지만, 새로운 데이터에 대한 일반화 성능이 떨어짐(Overfitting).
    • 이를 방지하기 위해 트리 깊이를 제한하거나 불필요한 가지를 쳐내는 **가지치기(Pruning)**를 수행함.

5. 앙상블 기법 (Ensemble Methods)

  • 여러 개의 모델(분류기)을 결합하여 단일 모델보다 더 강력하고 안정적인 예측 성능을 얻는 기법. 다수결(Majority Voting), 소프트 보팅(Soft Voting), 가중치 투표(Weighted Voting) 등의 방식으로 결과를 합침.
  • 배깅 (Bagging; Bootstrap Aggregating):
    • 훈련 데이터에서 복원 추출을 통해 여러 개의 부트스트랩 샘플을 만들고, 각각 독립적인 모델을 학습시킨 뒤 다수결로 결과를 합침.
  • 랜덤 포레스트 (Random Forest):
    • 의사결정 나무에 배깅을 적용한 모델.
    • 노드를 분할할 때 모든 피처를 고려하지 않고 무작위로 일부 피처만 선택하여 트리를 구성함으로써, 개별 트리 간의 상관관계를 줄이고 모델의 일반화 성능을 높임.
  • 부스팅 (Boosting - AdaBoost):
    • 모델을 순차적으로 학습시킴.
    • 이전 모델이 잘못 분류한 오답 데이터에 가중치(Weight)를 더 크게 부여하여, 다음 모델이 어려운 문제에 집중하도록 학습하는 방식.