본문 바로가기
TIL - 외/빅데이터

[머신러닝] 랜덤 포레스트 (Random Forest)

by chaemj97 2023. 5. 24.
728x90

랜덤 포레스트

  • 대표적인 결정 트리 기반의 앙상블 학습 방법
  • 부트스트랩 샘플을 사용하고 랜덤하게 일부 특성을 선택하여 트리를 만드는 것이 특징
    • 데이터 샘플링을 할 때 복원추출
  • 결정나무(Decision Tree)를 여러개 만들어서 그 결과들을 종합적으로 고려하여 결론을 도출하는 방법
    • 기본 100개의 트리 사용
    • n_job 매개변수 : -1로 지정하면 모든 CPU 코어를 사용
from sklearn.model_selection import cross_validate
from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(n_jobs=-1, random_state=42)
scores = cross_validate(rf, train_input, train_target, return_train_score=True, n_jobs=-1)

print(np.mean(scores['train_score']), np.mean(scores['test_score']))
# 0.997 0.890
# 과대 적합
  • 특성 중요도 계산
    • 노드들의 지니 불순도를 통해서 계산
    • 노드가 중요할수록 불순도가 감소
rf.fit(train_input, train_target)
print(rf.feature_importances_)
# [0.23167441 0.50039841 0.26792718]
  • 자체적으로 모델 평가 점수
    • 부트스트랩 샘플에 포함되지 않고 남는 샘플 : OOB(out of bag) 샘플
    • 이 남는 샘플을 사용하여 훈련한 결정 트리 평가 (검증 세트 역할)
      • 모델에 oob_score 매개변수 True
rf = RandomForestClassifier(oob_score=True, n_jobs=-1, random_state=42)

rf.fit(train_input, train_target)
print(rf.oob_score_)
  • 랜덤 포레스트 장점
    1. 분류(classification), 회귀(Regression)문제에 모두 사용 가능함.
    2. 결측치(Missing value)를 다루기 쉽다.
    3. 대용량데이터 처리가 쉽다.
    4. 과적합(Overfitting)문제를 해결해준다.
    5. 특성중요도(Feature importance)를 구할 수 있다.

 

앙상블 (Ensemble)

  • 강력한 하나의 모델을 사용하는 대신 보다 약한 여러개의 모델을 조합하여 더 정확한 예측을 해주는 방법
728x90
반응형

댓글