[머신러닝] Decision Tree

2021. 5. 25. 22:11·연구 Research/인공지능 Artificial Intelligent

번역하면 의사결정 나무라고 하는데,

classification과 regression에 둘 다 쓰일 수 있는 머신러닝 방법입니다.

 

class1과 class2를 분류하기 위한 decision tree

 

 

decision tree는 feature에 대한 조건을 통해 가지를 치면서 학습하는 방법입니다. numerical, categorical variable 둘 다 쓸 수 있고 분석 과정이 직관적이라는 점 때문에 많이 쓰이고 있습니다. (나중에 쓸 random forest가 decision tree를 더 발전시킨 형태)

 

이 decision tree는 불순도(impurity, 범주들이 섞여있는 정도)를 최소화하는 방향으로 진행되어야 합니다.

우리가 decision tree를 사용할 때 

이 불순도를 판단하기 위한 척도로서, 

 

1) Gini index, 2) Entropy index가 사용됩니다. 사이킷런에서 decision tree를 사용해보신 분들이라면 decision tree 설정 중에 gini index를 쓸 것인지, entropy index를 쓸 것인지 결정할 수 있음을 아실 겁니다.

 

$\text{Gini Index }=1-\sum_{i}^{n}(p_{i})^{2}$

여기서 $p_{i}$는 node에 존재하는 각 class의 비율을 의미합니다. (총 class의 개수는 n개)

 

위 decision tree 그림에서 leaf node로 표시한 node의 경우 gini index를 구해보면

$1-\( \frac{1}{30} \)^{2}-\( \frac{29}{30}\)^{2}=0.064$로 매우 낮은 값이 나옵니다. 즉 매우 불순도가 낮습니다.

 

반면에 마지막 depth의 왼쪽에서 두 번째 노드를 보면

$1-\( \frac{5}{10}\)^{2}-\( \frac{5}{10}\)^{2}=0.5$로 위의 0.064에 비하면 아주 큰 값이고, 불순도가 위 노드에 비해 높다고 볼 수 있습니다.

 

이 불순도를 기준으로 불순도가 충분히 낮아질 때까지 decision tree를 만들도록 기준을 세울 수도 있습니다.

 

$\text{Entropy index }=-\sum_{i=1}^{n} p_{i}\log_{2}(p_{i})$

이 지표 역시 불순도를 나타내는 지표입니다.

 

 


Decision tree의 과적합을 막기 위한 여러 기법들이 있는데 나중에 보충하도록 하겠습니다.

저작자표시 비영리 변경금지 (새창열림)

'연구 Research > 인공지능 Artificial Intelligent' 카테고리의 다른 글

[머신러닝] Boosting method  (0) 2021.05.26
[머신러닝] Logistic Regression  (0) 2021.05.25
[머신러닝] Classification evaluation measure  (0) 2021.05.25
[머신러닝] Unsupervised learning : Clustering  (0) 2021.05.25
[인공지능수학] Probability & Statistics 개념 복습  (0) 2021.02.28
'연구 Research/인공지능 Artificial Intelligent' 카테고리의 다른 글
  • [머신러닝] Logistic Regression
  • [머신러닝] Classification evaluation measure
  • [머신러닝] Unsupervised learning : Clustering
  • [인공지능수학] Probability & Statistics 개념 복습
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (460)
      • 공지 (1)
      • 영어 공부 English Study (40)
        • 텝스 TEPS (7)
        • 글 Article (21)
        • 영상 Video (10)
      • 연구 Research (99)
        • 최적화 Optimization (3)
        • 데이터과학 Data Science (7)
        • 인공지능 Artificial Intelligent (40)
        • 제어 Control (45)
      • 프로그래밍 Programming (103)
        • 매트랩 MATLAB (25)
        • 파이썬 Python (33)
        • 줄리아 Julia (2)
        • C++ (3)
        • 리눅스 우분투 Ubuntu (6)
      • 항공우주 Aeronautical engineeri.. (21)
        • 항법 Navigation (0)
        • 유도 Guidance (0)
      • 기계공학 Mechanical engineering (13)
        • 열역학 Thermodynamics (0)
        • 고체역학 Statics & Solid mechan.. (10)
        • 동역학 Dynamics (1)
        • 유체역학 Fluid Dynamics (0)
      • 수학 Mathematics (34)
        • 선형대수학 Linear Algebra (18)
        • 미분방정식 Differential Equation (3)
        • 확률및통계 Probability & Sta.. (2)
        • 미적분학 Calculus (1)
        • 복소해석학 Complex Analysis (5)
        • 실해석학 Real Analysis (0)
      • 수치해석 Numerical Analysis (21)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (55)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 유학 생활 Daily (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Dear abby
    딥러닝
    LaTeX
    Python
    WOX
    서버
    논문작성법
    논문작성
    Zotero
    우분투
    pytorch
    생산성
    IEEE
    Linear algebra
    인공지능
    에러기록
    텝스공부
    고체역학
    Julia
    JAX
    Numerical Analysis
    Statics
    MATLAB
    수치해석
    텝스
    matplotlib
    obsidian
    teps
    옵시디언
    ChatGPT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[머신러닝] Decision Tree
상단으로

티스토리툴바