Decision Tree(결정트리)
- Tree를 만들기 위해 예/아니오 질문을 반복하며 학습한다.
- 다양한 앙상블(ensemble)모델이 존재한다
(RandomForest, GradentBoosting, XGBoost, LighGBM)
(앙상블 : 여러 개의 분류기를 생성하고, 그 예측을 결합하여 정확한 더욱 좋은 예측을 도출하는 기법)
- 분류와 회귀에 모두 사용 가능
- 타킷 값이 한 개인 리프 노드를 순수 노트라고 한다.
- 모든 노드가 순수 노드가 될 때 까지 학습하면 복잡해지고 과대적합이 된다.
- 새로운 데이터 포인트가 들어오면 해당하는 노드를 찾아 분류라면 더 많은 클래스를 선택하고,
회귀라면 평균을 구한다.
장단점 및 주요 매개변수
- 트리의 최대 깊이 : max_depth
(값이 클수록 모델의 복잡도가 올라간다.)
- 리프노드의 최대 개수 : max_leaf_nodes
- 리프노드가 되기 위한 최소 샘플의 개수 : min_samples_leaf
- 만들어진 모델을 쉽게 시각화할 수 있어 이해하기 쉽다.
(white box model)
- 각 특성이 개별 처리되기 때문에 데이터 스케일에 영향을 받지 않아 특성의 정규화나 표준화가 필요 없다.
- 트리구성시 각 특성의 중요도를 계산하기 때문에 특성 선택(Feature selection)에 활용될 수 있다.
- 훈련데이터 범위 밖의 폰인트는 예측할 수 없다.
(ex : 시계열 데이터
- 가지치기를 사용함에도 불구하고 과대적합되는 경향이 있어 일반화 성능이 좋지 않다.
* RootNode : 시작 노트
* LeafNode : 종료 노트
Gini Impurity(지니 불순도)
데이터가 올바르게 분리 되었는지를 나타내는 지표
Decision Tree(결정트리) 과대적합 제어
- 노드 생성을 미리 중단하는 사전 가지치기(pre-pruning와 트리를 만든후에
크기가 작은 노드를 삭제하는 사후 가지치기(pruning)가 있다.
(sklearn은 사전 가지치기만 지원)
- 트리의 최대 깊이나 리프노드의 최대 개수를 제어
-노드가 분할하기 위한 데이터 포인트의 최소 개수를 지정
독버섯 데이터 예제
- 독버섯 데이터 scv 파일
학습 순서
1.데이터 가져오기(로딩)
2.전체 컬럼, 행 파악
3.결측치 파악
4.문제와 정답으로 분리
5.모델
6.학습
% 문자데이터가 있다면 Label Encoding(라벨 인코딩)을 해줘야 한다.
-> 단순 수치 값으로 mapping 하는 작업
Label Encoding(라벨 인코딩)
여러 문자들을 특정 수치로 변경하는 작업
- One-hot Encoding
-> 0 or 1 의 값을 가진 여러 개의 새로운 특성으로 변경하는 작업
'스마트인재개발원 > 파이썬' 카테고리의 다른 글
[2021.07.21] Linear Model 성형모 (0) | 2021.07.21 |
---|---|
[2021.07.19] Decision Tree Ensemble (결정 트리 앙상블) (0) | 2021.07.20 |
[21.07.02] 딥러닝 이론 (0) | 2021.07.02 |
[21.06.30] 머신러닝 이론2 (0) | 2021.06.30 |
[21.06.29] 머신러닝 이론 (0) | 2021.06.29 |