Random Forest (랜덤 포레스트) 알고리즘

조은별·2025년 5월 10일
post-thumbnail

이 문서는 Decision Tree의 확장형인 Random Forest 알고리즘에 대해 정리한 학습 노트입니다.
Random Forest의 작동 원리, Decision Tree와의 차이, 앙상블 기법 정리

Random Forest (랜덤 포레스트) 알고리즘 정리


1. 랜덤 포레스트란?

Random Forest는 여러 개의 Decision Tree(의사결정트리)를 조합하여
보다 안정적이고 예측력이 높은 결과를 만드는 앙상블 모델입니다.

  • 각각의 Tree는 약간씩 다른 데이터를 학습
  • 개별 트리의 예측 결과를 다수결(Voting) 또는 평균(Averaging) 방식으로 결합

2. Decision Tree vs Random Forest

항목Decision TreeRandom Forest
구조하나의 트리여러 개의 트리 (숲)
학습 데이터전체 데이터부트스트랩 샘플링된 일부 데이터
과적합발생하기 쉬움완화됨 (앙상블로 평균화 효과)
예측 방식단일 경로 결정다수 트리의 결과를 집계

→ Random Forest는 Decision Tree의 단점인 과적합(overfitting)을 보완하기 위한 대표적인 기법입니다.


3. 랜덤 포레스트의 핵심 요소

1) Bagging (Bootstrap Aggregating)

  • 훈련 데이터를 중복 허용하여 랜덤 샘플링 (bootstrap)
  • 각 트리는 서로 다른 데이터를 학습
  • 예측은 개별 트리의 결과를 평균 or 다수결로 통합(aggregating)

2) Feature Subsampling (랜덤 특성 선택)

  • 각 노드에서 분기할 때, 전체 특성 중 일부만 무작위 선택
  • 트리들이 서로 다른 질문을 하도록 유도 (decorrelation)
  • → Decision Tree는 항상 "가장 좋은 질문"을 선택하지만, Random Forest는 랜덤한 질문도 허용함

3) Voting / Averaging (결과 통합)

  • 분류 문제: 다수결(voting)
  • 회귀 문제: 평균값(averaging)

4. 실습 예제 (Scikit-learn)

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))

5. 주요 하이퍼파라미터

파라미터설명
n_estimators생성할 트리 개수
max_depth각 트리의 최대 깊이
max_features각 노드에서 사용할 특성 수
bootstrap부트스트랩 샘플링 여부
oob_scoreOOB(Out-of-Bag) 검증 사용 여부

6. 실무에서 유용한 점

  • 과적합 방지 성능이 뛰어남
  • 변수 중요도 확인 가능 (feature_importances_)
  • 결측값에 강하거나 스케일링이 필요 없음
  • 분류/회귀 모두에서 안정적인 성능

7. 앙상블 용어 요약

용어설명
Bagging중복 샘플링 + 앙상블 평균화
Boosting순차적 학습, 이전 오류 보정
Random ForestBagging + Feature Subsampling
Voting분류에서 다수결 방식
Averaging회귀에서 평균 방식

8. 내가 느낀 정리 요약

Decision Tree는 하나의 트리에서 모든 의사결정을 하다 보니 학습 데이터에 민감하고 과적합이 잘 일어나는데,
Random Forest는 이런 트리 여러 개를 모아 '집단 지성'으로 해결한다는 개념이라 직관적으로 이해하기 쉬웠다.

다음에는 Gradient Boosting, XGBoost, LightGBM 등 Boosting 계열 알고리즘과 비교해 정리할 예정이다.

profile
기록과 회고를 통해 성장하는 데이터, AI 엔지니어 지망생입니다.

0개의 댓글