hyeori

랜덤 포레스트의 특성 중요도 사용 본문

머신러닝

랜덤 포레스트의 특성 중요도 사용

혜오리이 2024. 5. 8. 22:43

앙상블 기법 - 랜덤 포래스트

  1. RandomForestClassifier 모델 훈련
  2. feature_importances_ 속성에서 확인
  • Wine 데이터 셋에서 500개의 트리를 가진 랜덤 포레스트를 훈련한다.
  • 각각의 중요도에 따라 13개의 특성에 순위를 매긴다.

*트리 기반의 모델은 표준화나 정규화할 필요 X

from sklearn.ensemble import RandomForestClassifier

feat_labels = df_wine.columns[1:]

forest = RandomForestClassifier(n_estimators=500,
                                random_state=1)

forest.fit(X_train, y_train)
importances = forest.feature_importances_

indices = np.argsort(importances)[::-1]

for f in range(X_train.shape[1]):
    print("%2d) %-*s %f" % (f + 1, 30, 
                            feat_labels[indices[f]], 
                            importances[indices[f]]))

plt.title('Feature Importance')
plt.bar(range(X_train.shape[1]), 
        importances[indices],
        align='center')

plt.xticks(range(X_train.shape[1]), 
           feat_labels[indices], rotation=90)
plt.xlim([-1, X_train.shape[1]])
plt.tight_layout()
# plt.savefig('images/04_09.png', dpi=300)
plt.show()

 

Wine 데이터셋 특성의 상대적인 중요도에 따른 순위 그래프, 특성 중요도의 합 = 1

RandomForest 에서 두 개 이상의 특성이 매우 상관관계가 높다면 하나의 특성은 매우 높은 순위를 갖지만, 다른 특성 정보는 완전히 잡아내지 못한다.

SelectFrom Model :

  • 모델 훈련이 끝난 후 사용자가 지정한 임계 값을 기반으로 특성을 선택한다.
  • Pipeline 중간 단계에서 RandomForestClassifier를 특성 선택기로 사용할 때 유용하다.