co-code 님의 블로그

랜덤 포레스트(Random Forest) 본문

python

랜덤 포레스트(Random Forest)

co-code 2026. 5. 15. 20:30
  • 랜덤 포레스트(RandomForest)
    • 배깅 방식을 활용
    • 데이터 샘플링 방식 + 다수결 or 평균 사용
    • 사용하는 모델은 의사결정나무 고정 (랜덤포레스트 안에 의사결정나무가 하드코딩되어있음)
    • 각 노드에서 분할 할때마다 모든 피치에서 일부만 무작위로 선택하여 트리간의 상관성을 낮춰준다. -> 다양성 증가
    • 여러 결정 트리를 서로 다르게 학습 시킨 뒤 다수결(분류), 평균(회귀)으로 예측하는 배깅 기반의 앙상블
    • 부트스트랩(중복 데이터를 허용)과 특성의 무작위 선택을 이용해 모델 간의 상관성을 낮춰서 성능과 안정성을 높이는 방법
    • 고차원 데이터에서 안정성이 굉장히 높다
    • 대부분의 실무에서 많이 사용이 되느 알고리즘
    • paramer(매개변수)
      • n_estimators
        • 기본값 : 100
        • 모델의 개수를 지정
      • criterion
        • 분류 : gini(기본값), entropy, log_loss
        • 회귀 : squared_error(기본값), absolute_error, friedman_mse, poisson
      • max_depth
        • 기본값 : None
        • 트리의 최대 깊이
      • bootstrap
        • 기본값 : True
        • 트리 학습 데이터에 부트스트랩을 사용할 것인가
      • max_features
        • 분류 : 'sqrt' (피쳐 개수의 루트 값)
        • 회귀 : 1.0 (모든 피쳐)
        • 가능한 값 : int(0.0 ~ 1.0), 'sqrt', 'log2'
      • min_samples_leaf
        • 기본값 : 1
        • 리프 노드의 최소 샘플 수
        • 값이 큰 경우, 리프가 너무 세분화 되지 않도록 방지 (과적합 방지)
      • max_leaf_node
        • 기본값 : None
        • 트리 전체에서 리프 노드의 수를 제한
        • 너무 많은 리프가 발생하면 과적합
        • 너무 적은 리프가 발생하면 과소적합 (모델의 단순화 : 성능 저하)
      • oob_score
        • 기본값 : False
        • 부트스트렙 사용 시 빠진 샘플들을 이용하여 검증 점수를 출력
      • max_samples
        • 기본값 : None
        • 부트스트랩이 True인 경우, 각 트리가 시용할 샘플의 수 (비율)
      • max_weight_fraction_leaf
        • 기본값 : 0.0
        • 샘플 가중치의 합이 전체 데이터에서 차지하는 비율
        • 불균형 데이터 셋에서 유용하게 사용됨
      • class_weight
        • 데잍의 불균형에서 각각의 가중치를 부여할 수 있는 매개변수
        • 'balanced' : 소수의 데이터에 가중치를 추가적으로 부여하여 데이터 불균형 문제를 완화
        • 'balanced_subsample' : 각 트리에서 부트스트랩 데이터에서 데이터의 비율로 가중치를 부여
        • dict형태로 클래스 별 가중치를 고정값을으로 부여
    • 속성
      • estimators_ : 결정 트리들의 목록
      • feature_importances_ : 피쳐들의 중요도
      • oob_score_ : OOB를 이용한 검증 점수
      • oob_decision_function_ 
        • 분류 모델에서 사용 가능
        • OOB 데이터들의 확률 / 결정 함수
      • oob_prediction_
        • 회귀 모델에서 사용 가능
        • OOB 예측값 
      • n_feature_in / feature_names_in
        • 입력이 되는 피쳐의 개수 / 입력이 되는 피쳐들의 이름 목록
    • 메서드
      • fit(x, y) : 모델에 학습
      • predict(x) : 모델을 통한 예측
      • score(x, y) : 분류에서는 정확도, 회귀에서는 r2_score
      • apply(x) : 각 샘플이 각 트리에서 도달하는 리프의 인덱스를 변환
      • decision_path(x) : 트리 내의 경로
         

'python' 카테고리의 다른 글

군집 분석  (0) 2026.05.19
차원 축소  (0) 2026.05.19
앙상블(ensemble) 中 배깅(Bagging)  (0) 2026.05.15
서포트 벡터 머신(SVM : Support Vector Machine)  (0) 2026.05.14
부스팅(Boosting)  (0) 2026.05.14