1. 결정 트리란(Decision Tree)?
결정 트리란 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 Tree기반의 "분류 규칙"을 만들고, 이 규칙을 통해 최대한 균일도가 높은(과적합 고려) 결정 클래스를 만드는 분류기법입니다.
2. 결정 트리의 구조
(1) 규칙 노드(Decision Node) : 규칙 조건을 표시한 노드입니다.
(2) 리프 노드(Leaf Node) : 결정된 클래스 값을 표시한 노드입니다.
3. 균일도란?
균일도란 한 데이터 세트 내의 데이터들이 같은 성향을 나타내는 정도입니다.
예를 들어 위와 같은 데이터 세트가 있다면, C가 제일 균일도가 높은 데이터 세트일 것입니다. 트리를 분할할 때 최대한 균일한 데이터 세트를 구성할 수 있도록 분할하는 것이 필요합니다.
4. 결정 트리 모델의 특징
장점 : "균일도"라는 룰을 기반으로 하고 있어 알고리즘이 쉽고 직관적이다.
피처의 스케일링이나 정규화 등의 사전 가공 영향도가 크지 않다.
단점 : 균일도를 최대화하기 위해 서브 트리를 계속 만들다 보면 트리의 깊이가 커지고
복잡해지면서 Overfitting이 발생해 알고리즘의 성능이 떨어질 수 있다. 이를
극복하기 위해 사전 튜닝이 필요하다.
5. 결정 트리 파라미터
사이킷런은 결정 트리 알고리즘을 구현한 DecisionTreeClassifier 클래스를 제공합니다. 본 클래
스의 파라미터는 다음과 같습니다.
(1) min_samples_split
- 노드를 분할하기 위한 최소한의 샘플 데이터 수
- 디폴트는 2, 값을 작게 설정할수록 노드가 많아져 과적학 가능성 증가
(2) min_sample_leaf
- Leaf Node가 되기 위한 최소한의 샘플 데이터 수
- min_samples_split과 유사하게 과적합 제어 용도이나 imbalanced 데이터의 경우
특정 클래스의 데이터가 극도로 작을 수 있어 이 경우 작게 설정할 필요가 있다.
(3) max_features
- 최적 분할을 위해 고려할 최대 피처 개수. 디폴트는 None -> 모든 피처로 분할 수행
- int형으로 지정 -> 대상 피처의 개수, float형으로 지정 -> 대상 피처의 비율
- "sqrt" = "auto" 전체 피처 개수의 제곱근 수만큼 피처 선정
- "log"는 log2(전체 피처 개수)만큼 선정
(4) max_depth
- 트리의 최대 깊이 규정
- 디폴트는 None으로 완벽하게 클래스 결정이 될 때까지 깊이를 계속 키우며 분할
- 깊이가 깊어지면 과적합 가능성 증가로 적절한 값으로 제어 필요
(5) max_leaf_nodes
- 말단 노드(Leaf)의 최대 개수
6. 결정 트리 모델 실습(타이타닉 예제)
(1) 전처리
위와 같이 간단히 전처리를 해주었습니다.
(2) 필요 모듈 import & 데이터 분할
(3) 학습 및 예측 -> 성능 지표 확인
정확도는 대략 79%로 측정되었습니다.
(4) GridSearchCV를 사용한 최적 하이퍼 파라미터 값 찾기
설정한 값 중 max_depth는 12, min_split_samples_split은 16개가 최적 파라미터 값인 것으로 나왔고, 이때 정확도는 약 83프로로 튜닝을 하기 전보다 향상되었습니다.
-> 하이퍼 파라미터 튜닝과 GridSearchCV의 사용법에 대해서는 따로 글을 올리겠습니다.
#본 글은 위키북스의 "파이썬 머신러닝 완벽 가이드"를 베이스로 저의 학습을 정리한 글로,
제가 어떻게 이해했느냐에 따라 책의 내용과 달라질 수 있습니다.
'AI_basic > ML' 카테고리의 다른 글
[ML] 데이터 전처리 - 원-핫 인코딩(pd.get_dummies) (0) | 2021.07.21 |
---|---|
[ML] GridSearchCV - 교차 검증과 최적 하이퍼 파라미터 튜닝을 같이 (0) | 2021.07.21 |
[ML] 분류모델의 성능 평가 지표 Part3. F1_score, ROC_curve and AUC (0) | 2021.07.07 |
[ML] 분류모델의 성능 평가 지표 Part.2 정밀도/재현율 트레이드오프(Trade-off) (0) | 2021.07.07 |
[ML] 분류모델의 성능 평가 지표 Part.1 오차행렬과 정확도,정밀도,재현율 (0) | 2021.07.06 |