Published: Jun 1, 2020 by Dev-hwon
이 내용은 핸즈온 머신러닝 2판 책을 보고 정리한 것 입니다.
의사 결정 나무(결정 트리, Decision Tree)
- 스무고개와 비슷하게 일련의 질문들을 통해 의사결정 규칙을 나무 구조로 도식화하여 분류와 예측을 모두 수행할 수 있는 분석 방법
- 복잡한 데이터셋도 학습 가능
장점 | 단점 |
---|---|
* 연속형과 명목형 모두 처리 가능 * 비선형, 불연속 데이터도 학습 가능 * 계산 속도가 빠름 * 결과 해석이 비교적 쉬움 * 데이터 전처리가 거의 필요하지 않다. |
* 데이터의 작은 변화에도 구조가 민감하게 변화 * 트리가 커질수록 과적합에 빠질 수 있음 * Missing value 처리 불가능 |
1. 예측
- 루트 노트(깊이가 0인 맨 꼭대기의 노드)에서 시작하여 조건에 맞는 자식 노드로 이동. 자식 노드가 리프 노드(자식을 가지지 않는 노드)일 경우 추가 검사를 하지 않는다.
2. 클래스 확률 추정
- 샘플에 대해 리프 노드를 찾기 위해 트리를 탐색하고 그 노드에 있는 클래스 k의 훈련 샘플의 비율을 반환
- ex) 길이가 5cm, 너비가 1.5cm 꽃잎은 리프 노드의 깊이 2에서 왼쪽 노드이고, Setosa는 0%(0/54), Versicolor는 90.7%(49/54), Virginica는 9.3%(5/54)
3. CART 훈련 알고리즘
- 사이킷런은 결정 트리를 훈련시키기 위해 CART 알고리즘 사용
- 훈련 세트를 하나의 특성 k의 임곗값 tk를 사용해 가장 순수한 서브셋으로 나눌 수 있는 두개의 서브셋을 나눈다. 이 과정을 반복한다.
- 최대 깊이가 되면 중지하거나 불순도를 줄이는 분할을 찾을 수 없을 때 중지
분류에 대한 CART 비용 함수
J(k,tk)=mleftmGleft+mrightmGright 여기서{Gleft/right는왼쪽/오른쪽서브넷의불순도mleft/right는왼쪽/오른쪽서브넷의샘플수4. 계산 복잡도
- 각 노드는 하나의 특성값만 확인하기 때문에 예측에 필요한 전체 복잡도는 특성 수와 무관하게 O(log2(m))
- 훈련 알고리즘은 각 노드에서 모든 훈련 샘플의 모든 특성을 비교. 훈련 복잡도는 O(n×mlog(m))
5. 지니 불순도와 엔트로피
- 기본적으로 지니 불순도를 사용하지만 critertion 매개변수를 “entropy”로 지정하며 엔트로피 불순도를 사용할 수 있다.
- 지니 불순도가 조금 더 계산이 빠르기 때문에 기본값으로 사용
- 지니 불순도와 엔트로피가 서로 다른 트리가 만들어지는 경우 지니 불순도가 가장 빈도 높은 클래스를 한쪽 가지로 고립시키는 경향이 있고, 엔트로피는 조금 더 균형 잡힌 트리를 만든다.
지니 불순도
Gi=1−n∑k=1P2i,kPi,k는 i번째 노드에 있는 훈련 샘플 중 클래스 k에 속한 샘플의 비율
엔트로피 불순도
Hi=−n∑k=1Pi,k≠0log2(Pi,k)6. 규제 매개변수
- 제한을 두지 않으면 트리가 훈련 데이터에 과대적합되기 쉽다.
- 결정트리는 훈련되기 전에 파라미터 수가 결정되지 않기 때문에 비파라미터 모델이라고 부른다.
- 모델 구조가 데이터에 맞춰져서 고정되지 않고 자유롭다.
- max_depth, min_samples_split, min_samples_leaf, min_weight_fraction_leaf, max_leaf_nodes, max_features
7. 회귀
- 사이킷런의 DecisionTreeRegressor 사용
- 각 영역의 예측값은 항상 그 영역에 있는 타깃값의 평균
- 예측값과 가능한 많은 샘플이 가까이 있도록 영역 분할
회귀를 위한 CART 비용 함수
J(k,tk)=mleftmMSEleft+mrightmMSEright 여기서{MSEnode=∑i∈node(ˆynode−y(i))2ˆynode=1mnode∑i∈nodey(i)8. 불안정성
- 결정 트리는 계단 모양의 결정 경계를 만들기 때문에 훈련 세트의 회전에 민감하다.(PCA기법을 이용하여 더 좋은 방향으로 회전시키는 방법 이용)
- 훈련 데이터에 있는 작은 변화에도 매우 민감하다.