[스터디 4기 정규반 2조 셋째주 화요일] 숙제인증

2024.02.03 19:21 495 Views

💫 랜덤포레스트(Random-Forest)

  • 일반적으로 배깅(페이스팅도 간혹 사용)을 적용한 결정트리의 앙상블 방법!
  • max_samples = Train set 크기 전체! (default = None이 데이터 전체를 사용한다는 뜻, =max_sampes=1)
  • BaggingClassifier에 DecisionTreeClassifier 넣어도 되지만, RandomForestClassifier 존재!
  • 트리 노드 분할시 무작위로 선택한 특성 후보 중 최적의 특성을 찾음, 무작위성 증가!!

>>> 보다 다양한 트리, 편향은 증가하지만 분산은 낮추어 보다 휼륭한 모델생성.

from sklearn.ensemble import RandomForestClassifier

rnd_clf = RandomForestClassifier(n_estimators=500, max_leaf_nodes=16, random_state=42)
rnd_clf.fit(X_train, y_train)

y_pred_rf = rnd_clf.predict(X_test)

#배깅으로 랜덤포레스트 구현, 약간 다르지만 거의 유사함.
bag_clf = BaggingClassifier(
    DecisionTreeClassifier(max_features="auto", max_leaf_nodes=16),
    n_estimators=500, max_samples=1.0, bootstrap=True, n_jobs=-1)
bag_clf.fit(X_train, y_train)
y_pred = bag_clf.predict(X_test)

#Extremly randomized tree, Extra-Trees
ExtraTreesClassifier 사용! # >>> 극단적으로 무작위한 트리의 랜덤포레스트!

📌 랜덤포레스트를 통해 특성의 상대적 중요도를 손쉽게 측정 가능하다!

  • DTree 기반 모델은 모두 특성 중요도를 제공한다. But 일반 결정트리는 일부 특성을 완전히 배제하지만, 랜덤포레스트는 그 무작위성 때문에 거의 모든 특성에 대해 평가 가능!
  • feature_importances_ 변수로 사용