본문 바로가기

머신러닝, 딥러닝

Decision Tree 모델에서의 feature_importances_의 의미

특성 중요도는 트리를 만드는 결정에 각 특성이 얼마나 중요한지를 보여준다.

0과 1 사이의 숫자로, 각 특성에 대해 0은 전혀 사용되지 않았다는 뜻, 1은 완벽하게 타깃 클래스를 예측한다는 뜻이다.

from sklearn.tree import DecisionTreeClassifier
from sklearn.pipeline import make_pipeline

pipe = make_pipeline(
    SimpleImputer(strategy='mean'), #defalut값이 mean
    DecisionTreeClassifier(min_samples_leaf=10, #말단 노트에 존재하는 샘플 수 정함
                           max_depth=5, #The maximum depth of the tree
                           min_samples_split = 3, #The minimum number of samples required to split an internal node:
                           criterion='entropy'))
pipe.fit(X_train, y_train)                           

make_pipe라인으로 결측치를 채우는 imputer, 

카테고리 데이터를 숫자형 데이터로 바꿔주는 OneHotEncoder나 Ordinal Encoder,

등을 연결하여 간단하게 모델에 적용할 수 있다.

 

DecisionTree모델에서 데이터를 나누는 기본 기준은 지니 불순도(Gini Imputy)다.

criterion = 'Entropy'

를 하이퍼 파라미터로 주어 엔트로피 방식으로  바꿀 수 있는데, 

지니 불순도를 기준으로 사용하면 데이터가 많을 때 더 빠르게 모델을 돌릴 수 있다고 한다.

 

# 특성 중요도 순 정리 : 불순도를 낮추는 특성

model_dt = pipe.named_steps['decisiontreeclassifier']

importances = pd.Series(model_dt.feature_importances_, encoded_columns)
importances.sort_values(ascending=False)

파이프라인으로 연결해주었기 때문에

단계를 지정하여 feature_importanes_ 를 사용하면

Decision Tree모델에서의 특성 중요도를 뽑아준다.

여기서의 특성 중요도는 지니 불순도가 얼마나 줄어드냐? 가 기준이다.

데이터를 나눌 때마다 특성을 사용할 때, 불순도를 전체적으로 낮춰주는 특성이 맨 위에 뽑힌다.

 

Regression 모델의 회귀계수와 달리 항상 양수값을 가진다.

특성의 모든 특성 불순도를 합치면 1이 된다.