2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

트리의 앙상블

2025. 6. 9. 15:21ㆍ개발공부/인공지능
728x90

정형 데이터 (Structured Data)

  • ML (기계학습) 에서는 주로 정형 데이터를 사용
  • 예시: DB, Excel, CSV
  • 데이터가 열과 행으로 정리된 표 형태로 구성됨
length, height, width
8.4,    2.11,   1.41
13.7,   3.53,   2.0

 

비정형 데이터 (Unstructured Data)

  • DL (딥러닝) 은 비정형 데이터에 강력한 성능 발휘
  • 예시: 텍스트, 오디오, 이미지, 영상
  • 정형 데이터도 사용할 수 있지만 딥러닝의 성능이 잘 나오지 않기 때문에 잘 사용하지 않음

 


 

랜덤 포레스트 (Random Forest)

 

앙상블 알고리즘

  • 여러 개의 모델을 조합하여 하나의 예측 결과를 만드는 기법
  • 랜덤 포레스트는 앙상블 기법 중 하나로서, 여러 개의 결정 트리(Decision Tree)를 기반으로 함

 

작동 원리

  • 여러 개의 결정 트리를 생성하고, 각각 독립적으로 학습
  • 학습 방법: Bagging (Bootstrap Aggregating)
    • 데이터 샘플을 중복 허용하며 무작위 추출 → 각 트리에 다른 데이터를 학습시킴
  • 예측 시: 각 트리의 결과를 평균(회귀) 또는 다수결(분류) 로 통합

 

장점

  • 분류와 회귀 문제 모두에 우수한 성능
  • 과적합(overfitting) 방지에 효과적
    • 왜냐하면 무작위 샘플링과 특성 선택을 통해 모델 다양성을 높이기 때문
  • 일반화 성능(테스트 성능)을 향상시키는 데 매우 효과적

 

랜덤 포레스트 훈련 방식 요약

 

핵심 개념: 부트스트랩 샘플링

  • 중복을 허용한 샘플링 방식
    훈련 데이터에서 무작위로 데이터를 추출해 샘플을 만듦 (중복 허용)
  • 각 샘플로 결정 트리(Decision Tree) 를 훈련
  • 일반적으로 100개 이상 트리 사용

 

핵심 개념: 특성 무작위 선택 방식

  • 결정 트리는 분기(split)를 만들기 위해 모든 특성을 고려함.
  • 반면 랜덤 포레스트는 각 노드에서 전체 특성 중 일부만 무작위로 선택하여 분할 기준을 탐색함.
  • 트리 간 상관성 감소 → 다양성 증가
  • 과적합 방지 → 일반화 성능 향상
  • 분류 문제 → 일반적으로 $\sqrt{d}$ ($d$ : 전체 특성 수)​
  • 회귀 문제 → 일반적으로 $d$

 


 

엑스트라 트리 (Extra Tree)

 

정의

  • 랜덤 포레스트와 유사한 앙상블 학습법
  • 여러 개의 결정 트리를 생성해 예측값을 앙상블로 계산
  • 트리 분할 기준을 무작위로 선택한다는 점이 핵심
    • 일반적인 결정 트리는 최적 분할(정보 이득 등)을 찾음
    • 엑스트라 트리는 무작위로 분할 (분산 극대화가 아닌 분할점 무작위 선택)

 

랜덤 포레스트와 엑스트라 트리의 차이점

항목 랜덤 포레스트 엑스트라 트리
샘플링 방식 부트스트랩 샘플링 사용 전체 훈련 세트 사용
노드 분할 방식 최적 분할 기준 계산 완전히 무작위 분할
계산 속도 느림 (정보이득 계산) 빠름 (계산 거의 없음)
과적합 가능성 있음 낮음 (무작위성 ↑)
성능 보통 좋음 과적합 방지 효과, 일반화 우수

 


 

그래디언트 부스팅 (Gradient Boosting)

 

정의

  • 약한 예측 모델(weak learners)을 순차적으로 결합하여 강한 예측 모델을 만드는 앙상블 학습 방법
  • 주로 결정 트리를 약한 모델로 사용
  • 회귀와 분류 모두에서 뛰어난 성능
  • 실무에서 XGBoost, LightGBM, CatBoost 등의 구현체로 많이 사용됨

 

핵심 아이디어

  • 잔차(Residual Error): 이전 모델이 예측하지 못한 오차를 다음 모델이 보완
  • 각 단계에서 손실 함수의 기울기(gradient)를 이용해 오차를 줄이는 방향으로 학습
  • 순차적으로 모델을 추가하면서 성능을 점진적으로 향상시킴

 

그래디언트 부스팅 학습 과정

 

1. 초기 모델 학습

초기 예측 모델 $f_0(x)$을 설정, 보통 전체 데이터의 평균을 기반으로 시작
$$
f_0(x) = \arg\min_\gamma \sum_{i=1}^n L(y_i, \gamma)
$$

 

2. 잔여 오차 계산 (Residual Error)

기존 모델이 예측한 값과 실제 값의 차이로 오차를 계산
이는 다음 약한 모델이 학습할 타겟 값
$$
r_i^{(m)} = -\left[ \frac{\partial L(y_i, f(x_i))}{\partial f(x_i)} \right]{f = f{m-1}}
$$

 

3. 약한 모델 학습

이 잔차를 최소화하는 약한 예측기 $h_m(x)$를 학습
이 모델은 오차를 보정하기 위한 역할

 

4. 모델 업데이트

이전 모델에 학습한 약한 모델을 학습률 $η$ 과 함께 더함
$$
f_m(x) = f_{m-1}(x) + \eta h_m(x)
$$

 

5. 반복 수행

잔차가 충분히 줄어들거나 최대 반복 횟수에 도달할 때까지 반복
$$
F(x) = f_0(x) + \sum_{m=1}^{M} \eta h_m(x)
$$

 

핵심 아이디어

  • 이전 트리의 오차(잔차) 를 다음 트리가 보정하도록 학습
  • 깊이가 얕은 결정 트리(보통 depth=3)를 연속적으로 추가
  • 오버피팅 방지예측 성능 향상을 동시에 도모

 


 

히스토그램 기반 그래디언트 부스팅 (Histogram-based Gradient Boosting)

 

핵심 아이디어

  • 연속형 특성 값을 구간(bin)으로 나눈 후 히스토그램을 생성하여 학습에 사용
  • 계산량을 줄이고 효율성을 높이는 방법
  • 특히 대용량 데이터에서 학습 속도 향상과 메모리 절약 효과가 큼

 

동작 방식

  1. 각 특성(feature) 의 값을 256개의 구간(bin)으로 나눔
    → 숫자 분포를 요약
  2. 트리는 실제 특성 값이 아닌 bin 번호를 기준으로 분기(split)
    → 계산 간소화 및 속도 향상
  3. bin은 256개로 고정 (일반적으로), 메모리 소비가 줄고 계산도 빨라짐

 

항목 기존 Gradient Boosting Histogram-based GB
연산 기준 실수 (float) 정수 (bin index)
속도 느림 빠름
메모리 작음
분할 방식 전체 값 기준 bin 기준
활용 예 중소규모 데이터 대용량, 실시간 학습
728x90

'개발공부 > 인공지능' 카테고리의 다른 글

Flask  (0) 2025.07.28
생성형 ai 개발 아키테처  (0) 2025.07.28
그리드서치와 랜덤서치  (0) 2025.06.09
교차검증  (0) 2025.06.09
확률적 경사 하강법  (0) 2025.06.05