티스토리 뷰

Decision Tree(결정 트리) 알고리즘

Tree를 만들기 위해 예/아니오 질문을 반복하며 학습한다.

다양한 *앙상블(ensemble) 모델이 존재한다

(RandomForest, GredientBoosting, XGBoost, LightGBM)

분류와 회귀에 모두 사용 가능

결정트리의 기본 구조

 출처 - https://velog.io/@sset2323/04-02.-%EA%B2%B0%EC%A0%95-%ED%8A%B8%EB%A6%AC
단일 결정트리와 앙상블 모델 중 하나인 랜덤 포레스트 모델구조

 

 

특징

  • 타깃 값이 한 개인 리프 노드를 순수 노드라고 한다.
  • 모든 노드가 순수 노드가 될 때까지 학습하면 복잡해지고 과대 적합이 된다.
  • 새로운 데이터 포인트가 들어오면 해당하는 노드를 찾아 '분류'라면 더 많은 클래스를 선택하고, '회귀'라면 평균을 구한다. 
    결정 트리의 OUT-PUT

출처 - https://www.datacamp.com/community/tutorials/decision-tree-classification-python

 

Decision Tree(결정트리) 과대 적합 제어

  • 사전 가지치기 : 노드 생성을 미리 중단 (*sklearn은 사전 가지치기만 지원)
  • 사후 가지치기 : 트리를 만든 후에 크기가 작은 노드를 삭제

트리의 최대 깊이나 리프 노드의 최대 개수를 제어

 

장단점 및 주요 매개변수(Hyperparameter)

트리의 최대 깊이 : max_depth (값이 클수록 모델의 복잡도가 올라간다.)

리프 노드의 최대 개수 : max_leaf_nodes

리프 노드가 되기 위한 최소 샘플의 개수 : min_samples_leaf

 

장점

만들어진 모델을 쉽게 시각화할 수 있어 이해하기 쉽다.

각 특성이 개별 처리되기 때문에 데이터 스케일에 영향을 받지 않아 특성의 정규화나 표준화가 필요 없다.

트리 구성시 각 특성의 중요도를 계산하기 때문에 특성 선택에 활용될 수 있다.

 

단점

훈련데이터 범위 밖의 포인트는 예측할 수 없다. (ex. 시계열 데이터)

가지치기를 사용함에도 불구하고 과대적합되는 경향이 있어 일반화 성능이 좋지 않다.

--> 오히려 이러한 단점을 살려 약화된 여러 모델을 앙상블로 묶어 사용하기도 한다.

 

Node(노드) : 어떠한 질문이나 정답

RootNode : 가장 처음 질문

LeafNode : 맨 마지막 질문

 

* Gini Impurity(지니 불순도) : 분류가 잘 되어있는지에 대한 판단을 알아보는 것

지니 불순도는 이름에서도 알 수 있듯이 다음과 같은 의미에서 집합의 “순도”를 측정한다.

항아리에 10개의 구슬이 들어 있고 그 중 절반가량이 빨간색이고 나머지 절반가량이 파란색인 경우 그 구슬들의 집합은 빨간색과 파란색이 섞여 있어 불순한 것으로 간주한다 (항아리 2). 반면에 항아리에 빨간색 또는 파란색 구슬만 있는 경우 그 구슬 집합은 완벽하게 순수한 것으로 간주한다.

그리하여 지니 불순도 측정값을 다음과 같은 방법으로 그래프를 통해 시각화할 수 있다. 양쪽 끝에서 지니 불순도 0 값에서 시작하여, 항아리의 빨간색 및 파란색 구슬의 수가 같은 경우 지니 불순도는 최댓값에 도달해야 한다.

 


 

해당 수업은 '스마트인재개발원'에서 '지능형IoT 융합SW 전문가과정(NCS)과정'에서 진행한 교육내용입니다.

 

 

 

스마트인재개발원

4차산업혁명시대를 선도하는 빅데이터, 인공지능, 사물인터넷 전문 '0원' 취업연계교육기관

www.smhrd.or.kr

 

댓글