머신러닝 & 딥러닝

[머신러닝 & 딥러닝] 랜덤 포레스트 (RandomForest)의 특성 중요도 사용

beginner-in-coding 2025. 4. 22. 11:27

01. 랜덤 포레스트(RandomForest)

  • 앙상블 기법 중 하나
  • 앙상블에 참여한 모든 결정트리에서 계산한 평균적인 불순도 감소로 특성 중요도를 측정
  • 사이킷런의 랜덤 포레스트 구현: 특성 중요도 값을 이미 수집함
    • RandomForestClassifier의 feature_importances 속성에서 확인 가능
    • SelectFromModel: 사용자가 지정한 임계값을 기반으로 특성 선택
  • 트리 기반 모델은 표준화나 정규화가 필요 없음 → 랜덤 포레스트를 훈련하고 각각의 상대적 중요도에 따라 특성에 순위를 매기기 때문
    • 특성 중요도의 합: 1
    • 결정 트리에서 평균적인 불순도 감소를 기반으로 이 데이터셋에서 가장 판별력이 좋은 특성을 찾을 수 있음
  • 중요한 참고 사항
    • 모델 해석을 고려할 경우, 랜덤 포레스트에서 두 개 이상의 특성이 매우 상관관계가 높을 경우, 하나의 특성은 매우 높은 순위를 가지지만 다른 특성 정보는 완전히 찾아내지 못할 가능성이 존재
    • 특성 중요도 값을 해석하는 것보다 모델 예측 성능에 초점을 둔다면 신경 X 

02. RFE

  • 재귀적 특성 제거 방법 사용
    • 처음에 모든 특성을 사용하여 모델을 만들고, 특성 중요도가 가장 낮은 특성을 제거함
    • 그 후 제거된 특성을 빼고 나머지 특성들로 새로운 모델을 만듬
    • 미리 정의한 특성 개수가 남을때까지 반복
  • n_features_to_select 매개변수: 선택할 특성의 개수를 지정
    • 특성의 비율을 지정할 수 있음
    • default: 입력 특성 개수의 절반
  • step 매개변수: 각 반복에서 제거할 특성의 개수를 지정
    • 0~1 사이의 값 지정: 삭제할 특성의 비율
    • default: 1
  • 기반 모델의 coef_, feature_importances_ 속성을 기준으로 특성을 제거
  • importance_getter 매개변수: 사용할 속성을 지정할 수 있음
  • ranking_ 속성: 선택한 특성의 우선순위를 볼 수 있음
  • estimator_ 속성: 훈련된 기반 모델(랜덤 포레스트) 저장