
이 문서는 Decision Tree의 확장형인 Random Forest 알고리즘에 대해 정리한 학습 노트입니다.
Random Forest의 작동 원리, Decision Tree와의 차이, 앙상블 기법 정리
Random Forest는 여러 개의 Decision Tree(의사결정트리)를 조합하여
보다 안정적이고 예측력이 높은 결과를 만드는 앙상블 모델입니다.
| 항목 | Decision Tree | Random Forest |
|---|---|---|
| 구조 | 하나의 트리 | 여러 개의 트리 (숲) |
| 학습 데이터 | 전체 데이터 | 부트스트랩 샘플링된 일부 데이터 |
| 과적합 | 발생하기 쉬움 | 완화됨 (앙상블로 평균화 효과) |
| 예측 방식 | 단일 경로 결정 | 다수 트리의 결과를 집계 |
→ Random Forest는 Decision Tree의 단점인 과적합(overfitting)을 보완하기 위한 대표적인 기법입니다.
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 데이터
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 모델 생성
model = RandomForestClassifier(n_estimators=100, max_depth=4, random_state=42)
model.fit(X_train, y_train)
# 예측
y_pred = model.predict(X_test)
print("정확도:", accuracy_score(y_test, y_pred))
| 파라미터 | 설명 |
|---|---|
n_estimators | 생성할 트리 개수 |
max_depth | 각 트리의 최대 깊이 |
max_features | 각 노드에서 사용할 특성 수 |
bootstrap | 부트스트랩 샘플링 여부 |
oob_score | OOB(Out-of-Bag) 검증 사용 여부 |
feature_importances_)| 용어 | 설명 |
|---|---|
| Bagging | 중복 샘플링 + 앙상블 평균화 |
| Boosting | 순차적 학습, 이전 오류 보정 |
| Random Forest | Bagging + Feature Subsampling |
| Voting | 분류에서 다수결 방식 |
| Averaging | 회귀에서 평균 방식 |
Decision Tree는 하나의 트리에서 모든 의사결정을 하다 보니 학습 데이터에 민감하고 과적합이 잘 일어나는데,
Random Forest는 이런 트리 여러 개를 모아 '집단 지성'으로 해결한다는 개념이라 직관적으로 이해하기 쉬웠다.
다음에는 Gradient Boosting, XGBoost, LightGBM 등 Boosting 계열 알고리즘과 비교해 정리할 예정이다.