결정 트리(Decision Tree)란?
- 학습을 통해 데이터에 있는 규칙을 찾고 트리 기반의 분류 규칙을 만드는 직관적인 알고리즘
- 장점 : 알고리즘이 쉽고 직관적임, 피처의 스케일링이나 정규화 등의 사전 가공 영향도가 크지 않음.
- 단점 : 과적합으로 알고리즘 성능이 떨어짐. 이를 극복하기 위해 트리의 크기를 사전에 제한하는 튜닝 필요
사이킷런을 이용한 결정 트리 알고리즘 구현
- 분류를 위한 DecisionTreeClassifier, 회귀를 위한 DecisionTreeRegressor 를 제공
- CART(Classification And Regression Trees) 알고리즘을 기반으로 함.
결정 트리 파라미터
파라미터 명 | 설명 |
min_samples_split | - 노드를 분할하기 위한 최소한의 샘플 데이터 수 - 디폴트는 2, 작게 설정할수록 분할되는 노드가 많아져서 과적합 가능성 증가 |
min_samples_leaf | - 분할이 될 경우 왼쪽과 오른쪽 브랜치 노드에서 가져야 할 최소한의 샘플 데이터 수 - 큰 값으로 설정될수록 노드 분할을 덜 수행함. - 비대칭적 데이터의 경우 작게 설정 필요. |
max_features | - 최적의 분할을 위해 고려할 최대 피처 개수 - 디폴트는 None으로 모든 피처를 사용해 분할 수행 - int 형으로 지정하면 대상 피처의 수, float 형으로 지정하면 대상 피처의 퍼센트 - 'squrt', 'auto', 'log' 등 |
max_depth | - 트리의 최대 깊이를 규정 - 디폴트는 None으로 다른 과적합 규제 장치가 없으면 완벽하게 클래스 결정 값이 될 때까지 분할 |
max_leaf_nodes | - 말단 노드(Leaf)의 최대 개수 |
구현
# 필요한 모듈 다운로드
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings('ignore')
# 붓꽃 데이터 로드
iris_data = load_iris()
# train/test set 분리
x_train, x_test, y_train, y_test = train_test_split(iris_data.data, iris_data.target, test_size = 0.2, random_state = 12)
# DecisionTree 분류기 생성
dt_clf = DecisionTreeClassifier(random_state = 123)
# 분류기 학습
dt_clf.fit(x_train, y_train)
피처별 중요도 확인
import seaborn as sns
import numpy as np
%matplotlib inline
# feature importance 추출
print('Feature importances: ', dt_clf.feature_importances_)
# feature별 importance 매핑
for name, value in zip(iris_data.feature_names, dt_clf.feature_importances_):
print(f'{name} : {value}')
# feature importance를 column별로 시각화
sns.barplot(x = dt_clf.feature_importances_, y = iris_data.feature_names)
[OUTPUT]
Feature importances: [0.01250782 0.03001876 0.90481856 0.05265486]
sepal length (cm) : 0.012507817385866166
sepal width (cm) : 0.030018761726078806
petal length (cm) : 0.9048185603807258
petal width (cm) : 0.05265486050732925
'인공지능(AI) > 머신러닝(ML)' 카테고리의 다른 글
[ML] 05. 선형회귀모델 - 파라미터 추정, 최소제곱법 (0) | 2024.06.29 |
---|---|
[분류] 평가 지표(Evaluation Metric) (1) | 2024.06.13 |
[ML] 04. 선형회귀모델 - 개요/모델 가정 (0) | 2024.05.28 |
[ML] 03. 머신러닝 모델 학습 프로세스 (0) | 2024.05.28 |
[ML] 02. 예측 모델링 (0) | 2024.05.27 |