랜덤 포레스트

랜덤 포레스트

정의

랜덤 포레스트(Random Forest)는 다수의 결정 트리(decision tree)를 결합하여 예측 성능을 향상시키는 앙상블 학습 기법이다. 각각의 트리는 학습 데이터의 부트스트랩(bootstrap) 샘플링과 특성(feature) 선택의 무작위성을 도입해 독립적으로 성장하며, 최종 예측은 회귀의 경우 평균값, 분류의 경우 다수결(voting) 방식으로 종합한다.

역사

1995년 Leo Breiman이 “Random Forests”라는 논문에서 제안했으며, 이후 2001년 Breiman 및 Cutler가 상세히 기술하면서 머신러닝 분야에서 표준 알고리즘으로 자리 잡았다. 초기에는 주로 통계학 및 생물정보학에서 활용되었고, 현재는 컴퓨터 비전, 자연어 처리, 재무 분석 등 다양한 분야에 널리 적용된다.

원리 및 알고리즘 절차

  1. 부트스트랩 샘플링
    • 원본 학습 데이터 $D$ 에서 중복을 허용하여 $N$ 개의 샘플을 무작위로抽출해 $D_i$ 를 만든다.
  2. 특성 무작위 선택
    • 각 노드에서 전체 특성 수 $p$ 중 $m$개(보통 $m = \sqrt{p}$ (분류) 혹은 $m = p/3$ (회귀))를 무작위로 선택하고, 그 중 최적 분할을 결정한다.
  3. 트리 성장
    • 선택된 특성 집합을 이용해 완전 성장(full-grown) 혹은 사전 가지치기(pre-pruning)를 적용해 트리를 만든다.
  4. 앙상블 결합
    • 분류: 각 트리의 클래스 라벨을 다수결 투표해서 최종 라벨 결정.
    • 회귀: 각 트리의 예측값을 평균해 최종 예측값 도출.

주요 특징

특징 설명
다양성 확보 부트스트랩 샘플과 특성 무작위 선택으로 트리 간 상관관계 감소
과적합 억제 개별 트리의 높은 분산을 앙상블 평균으로 감소
내재된 변수 중요도 Gini impurity 감소량 혹은 permutation importance를 통해 특성 중요도 평가 가능
병렬 학습 가능 각 트리 독립적으로 학습·예측 가능 → GPU/멀티코어 활용 용이
비선형 관계 탐지 복잡한 비선형 및 상호작용 효과를 자동으로 모델링

하이퍼파라미터

파라미터 의미 일반적 설정
n_estimators 생성할 트리 수 100 ~ 500 (데이터 규모에 따라 조정)
max_features 각 분할에서 고려할 특성 수 sqrt(p) (분류), p/3 (회귀)
max_depth 트리 깊이 제한 None(전면 성장) 혹은 10~30
min_samples_split 내부 노드 분할 최소 샘플 수 2 ~ 5
min_samples_leaf 리프 노드 최소 샘플 수 1 ~ 5
bootstrap 부트스트랩 샘플 사용 여부 True (기본)
criterion 분할 품질 기준 gini, entropy(분류) / mse, mae(회귀)

장점

  • 높은 정확도안정성
  • 특성 전처리가 크게 요구되지 않음(스케일링·정규화 필요 없음)
  • 결측치 처리가 비교적 강건
  • 특성 중요도 제공으로 해석 가능성 확보

단점

  • 메모리·시간 비용이 높음(많은 트리와 깊은 구조)
  • 예측 속도가 상대적으로 느림(특히 대규모 트리)
  • 고차원 희소 데이터에선 성능 저하 가능(특성 무작위 선택 효과 감소)

주요 적용 분야

  • 의료 진단(질병 위험도 예측)
  • 금융(신용 스코어링, 사기 탐지)
  • 생물정보학(유전자 발현 분석)
  • 이미지/영상(객체 인식, 이미지 분류)
  • 자연어 처리(텍스트 분류, 감성 분석)
  • 산업 IoT(예지보전, 이상 탐지)

구현 및 라이브러리

언어/프레임워크 주요 구현
Python – scikit-learn sklearn.ensemble.RandomForestClassifier, RandomForestRegressor
R – randomForest 패키지 randomForest() 함수
Spark MLlib RandomForestClassifier, RandomForestRegressor
H2O.ai h2o.randomForest()
XGBoost, LightGBM, CatBoost Gradient Boosting 기반이나 Random Forest 옵션 제공

참고 문헌

  1. L. Breiman, “Random Forests,” Machine Learning, vol. 45, pp. 5–32, 2001.
  2. T. Geurts, L. Wehenkel, “Extremely Randomized Trees,” Machine Learning, vol. 63, pp. 3–42, 2006.
  3. J. M. Hastie, R. Tibshirani, J. Friedman, The Elements of Statistical Learning, 2nd ed., Springer, 2009.

이 문서는 랜덤 포레스트에 대한 백과사전 수준의 정보를 제공하기 위해 작성되었습니다.

둘러보기

더 찾아볼 만한 주제