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)으로 나눈 후 히스토그램을 생성하여 학습에 사용
- 계산량을 줄이고 효율성을 높이는 방법
- 특히 대용량 데이터에서 학습 속도 향상과 메모리 절약 효과가 큼
동작 방식
- 각 특성(feature) 의 값을 256개의 구간(bin)으로 나눔
→ 숫자 분포를 요약 - 트리는 실제 특성 값이 아닌 bin 번호를 기준으로 분기(split)
→ 계산 간소화 및 속도 향상 - 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 |