tak's data blog

Decision Tree(의사결정나무) 본문

Machine Learning

Decision Tree(의사결정나무)

hyuntaek 2021. 3. 2. 23:10
반응형
SMALL

 

 

 

벌써 5주차인데요 이번엔 Decision Tree(의사결정나무)에 대해서 다뤄보도록 하겠습니다!

 

 

 

 

기본 개념 및 구조

- Decision Tree(의사결정나무)는 데이터의 feature에서 패턴을 찾는 머신러닝 모델

- supervised learning model (지도학습 모델 중 하나)

- 분류, 회귀, 다중출력 작업이 가능하다.

- 매우 복잡한 데이터 셋도 학습 가능

- randomforest의 기본 구성 요소

 

 

(특정 feature를 바탕으로 작은 그룹들로 나누는 과정을 반복하여 더 이상 나눌 수 없는 지점(리프 노드)에 도달 시킨다.)

예측 단계에서 unlabeled 데이터를 의사결정나무에 통과시켜 리프노드에 도달하면, 해당 노드에서 제일 많이 포함된 label이 unlabeled 데이터의 label로 지정된다.

 

 

- 노드 : 데이터를 분류하는 각각의 단계들

- 루트노드 : 깊이가 0인 맨 꼭대기의 노드

- 리프노드 : 자식노드를 가지지 않는 노드 -> 추가적인 검사 진행되지 않는다.

 

 

 

 

결정 트리 모델 시각화 및 특징

 

Decision tree는 시각화가 가능하다. -> 결정 트리가 결과를 도출하는 과정을 확인 가능.

(export_graphviz() 활용)

 

 

- samples : 얼마나 많은 훈련 샘플들이 적용 되었는지 (훈련 샘플수)

- value : 노드에서 각 클래스에 얼마나 많은 훈련 샘플이 있는지

  ex) class = setosa/ versicolor/ virginica -> 각 단계마다 클래스가 나누어지는데 클래스마다 샘플 수 확인 가능

- Gini 속성 : 불순도를 측정한 지수. 한 노드의 모든 샘플이 같은 클래스라면/ 이 노드를 순수(gini=0)하다고 한다.

지니 불순도

 

 

 

결정 나무의 특성

장점 : 데이터 전처리가 거의 필요하지 않다.

       (특성의 스케일을 맞추거나 평균을 원점에 맞추는 작업이 필요하지 않음. feature scaling이 불필요)

 

 

 

 

클래스 확률 예측

- 길이가 5cm이고 너비가 1.5cm인 꽃잎 리프노드의 깊이는 2

  확률 = setosa : 0% (0/54) / versicolor : 90.7%(49/54) / virginica : 9.3%(5/54)

 

 

 

 

지니 불순도와 엔트로피

- criterion 매개변수를 'entropy'로 지정하여 엔트로피 불순도 사용 가능

- 지니 불순도와 큰 차이는 없다. 지니 불순도의 계산이 조금 빠르지만 지니 불순도는 가장 빈도 높은 클래스를 한쪽 가지로 고립시키는 반면 엔트로피는 조금 더 균형 잡힌 트리

 

 

 

 

CART 훈련 알고리즘

 

 

1. 훈련 세트를 하나의 특성 k의 임곗값 t_k를 사용해 두개의 subset으로 나눈다.

2. (크기에 따라 가중치가 적용된) 가장 순수한 subset으로 나눌 수 있는 (k, t_k) 짝 찾기

 

 

[subset 나누는 과정]

- (max_depth 매개변수로 정의된) 최대 깊이가 되면 중지하거나 불순도를 줄이는 분할을 찾을 수 없을 때 멈추게 된다.

- max_depth 외에도 min_samples_split, min_samples_leaf, min_weight_fraction_leaf, max_leaf_nodes와 같은 매개변수도 중지 조건에 관여

 

 

CART 알고리즘: 탐욕적 알고리즘(greedy algorithm)

- 결정을 해야 할 때마다 그 순간에 가장 좋다(최적이다)고 생각되는 것을 해답으로 선택함 으로써 최종적인 해답에 도달: 항상 최적의 솔루션을 보장하지 않는다.

- 최적의 트리를 찾는 것은 NP완전(NPComplete) 문제로도 알려져 있음

→ "납득할 만한 좋은 솔루션"으로만 만족해야 함

 

 

 

 

결정 트리 규제

: 결정 트리는 훈련 데이터에 대한 제약 사항이 거의 없다.(오버피팅 되기 쉽다.)

-> 규제 매개 변수를 추가하여 모델 학습시 오버피팅 방지 (결정 트리의 자유도 제한)

 

 

규제 매개변수

min_으로 시작하는 매개변수 증가

or max_로 시작하는 매개변수를 감소

-> 모델에 대한 규제가 커진다.

 

- max_depth : 결정 트리의 최대 깊이

-> 감소 -> 모델에 대한 규제가 커진다. -> 깊이가 얕아질 수록 과대적합 위험 감소 가능.

 

- min_samples_split : 분할되기 위해 노드가 가져야 하는 최소 샘플 개수

-> min_samples_split 증가 : 모델에 대한 규제가 커짐

 

- min_samples_leaf : 리프 노드가 가지고 있어야 할 최소 샘플 개수

-> 증가 -> 모델에 대한 규제가 커짐

 

- min_weight_fraction_leaf : min_samples_leaf와 같지만, 가중치가 부여된 전체 샘플 수에서의 비율

 

- max_leaf_nodes : 리프 노드의 최대 개수

-> 감소 시키면 모델에 대한 규제가 커진다.

 

- max_features : 각 노드에서 분할에 사용할 특성의 최대 개수

 

규제할 경우 더 잘 나뉜다!

 

 

 

 

회귀

- DecisionTreeRegressor를 사용

- 분류 트리와의 주요 차이점 : 각 노드에서 클래스를 예측하는 대신 어떤 값을 예측 하는 점 -> 어떤 클래스에 속할지가 아닌 어떠한

- 불순도를 최소화하는 방향으로 분할하는 대신, mse를 최소화하는 방향으로 분할

 

 

 

 

결정 트리 모델의 불안정성

- 결정 트리는 계단 모양의 결정 경계를 만들기 때문에, 훈련 세트의 회전에 민감

- 데이터 셋을 45도 회전시켜, 결정 트리 모델이 불필요하게 구불구불해지는 것을 확인 가능

- 훈련 데이터에 있는 작은 변화에 민감

- 더 좋은 방향으로 회전 시킴으로써 해결 가능 (PCA 기법 활용)

- 랜덤 포레스트는 많은 트리에서 만든 예측을 평균내서 불안정성 극복

반응형
LIST

'Machine Learning' 카테고리의 다른 글

추천시스템(Recommendation system) 유사도(similarity)  (0) 2021.03.26
추천시스템(Recommendation system)  (1) 2021.03.26
Model training(모델 훈련)  (0) 2021.02.10
classification(분류)  (0) 2021.02.02
머신러닝이란?  (0) 2021.01.26