Decision Tree

2023. 5. 27. 14:31·DS & ML/Machine Learning

결정 트리, Decision Tree

관측값과 목푯값을 연결시켜 주는 예측 모델로서 나무 모양으로 데이터를 분류함

  • 수많은 트리 기반 모델의 기본 모델(based model)
  • 선형 모델과는 달리, 트리 모델에서는 각 변수의 특정 지점을 기준으로 데이터를 분류해 가며 예측 모델을 만듦
장점 단점
데이터에 대한 가정이 없는 모델임(Nonparametric Model) 트리가 무한정 깊어지면 오버피팅 문제를 야기할 수 있음
예를들어 선형 모델은 정규분포에 대한 가정이나 독립변수와 종속변수의 선형 관계 등을 가정으로 하는 모델인 반면, 결정 트리는 데이터에 대한 가정이 없어 어디에나 자유롭게 적용할 수 있음 추후에 등장할 트리 기반 모델들에 비하면 예측력이 상당히 떨어짐
아웃라이어에 영향을 거의 받지 않음  
트리 그래프를 통해서 직관적으로 이해하고 설명할 수 있음. 즉 시각화에 굉장히 탁월함  
  • 종속변수가 연속형 데이터와 범주형 데이터 모두에 사용할 수 있음
  • 모델링 결과를 시각화할 목적으로 가장 유용
  • 아웃라이어가 문제될 정도로 많을 때 선형 모델보다 좋은 대안이 될 수 있음

 

코드

from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
pred = model.predict(X_test)

 

모델 이해

분류 결정 트리

DecisionTreeClassifier는 각 노드(Node)의 순도가 가장 높은 방향으로 분류함

  • 순도: 한 노드 안에 여러 종류가 아닌 한 종류의 목푯값만 있는 상태에 대한 지표
  • 순도를 평가하는 지표로 지니 인덱스(Gini index)와 교차 엔트로피(Cross Entropy)가 있음
낮은 순도 높은 순도
사과 3개, 복숭아 3개 사과 3개, 복숭아 0

지니 인덱스

$$ 1-\sum_{i=1}^n(p_i)^2 $$

  • 순도가 높을 수록 지니 인덱스는 낮은 값을 보이며, 최댓값은 0.5, 최솟값은 0이 나올 수 있음
  • 결정 트리에서는 지니 인덱스가 가장 낮은 값이 나오는 특정 변수의 특정 값을 기준으로 노드를 분류함
  • 사이킷런의 결정 트리에서는 기본값으로 지니 인덱스를 사용함

교차 엔트로피

$$ -\sum_{i=1}^n(p_i)^2 \times log_2(p_i) $$

  • 순도가 높을수록 낮은 값을 보이며, 최댓값은 1까지 나올 수 있음

 

회귀 결정 트리

DecisionTreeRegressor는 가장 낮은 MSE값이 나오도록 노드를 분류함

  • MSE는 사이킷런의 결정 트리 모델에서 기본값으로 설정된 평가 기준
  • 필요에 따라 매개변수를 이용하여 MSE 대신 MAE나 Poisson등으로 설정할 수 있음

 

트리 그래프

각 노드

  • 분류 기준
  • 지니 인덱스(gini)
  • 총 데이터 수(samples)
  • 목푯값 0과 1의 개수(value)

 

 

참고: 데싸노트의 실전에서 통하는 머신러닝

 

GitHub - dduniverse/ML-study: <데싸노트의 실전에서 통하는 머신러닝> 실습 노트북

<데싸노트의 실전에서 통하는 머신러닝> 실습 노트북. Contribute to dduniverse/ML-study development by creating an account on GitHub.

github.com

 

반응형
저작자표시 (새창열림)
'DS & ML/Machine Learning' 카테고리의 다른 글
  • XGBoost
  • Random Forest
  • Naive Bayes
  • KNN(K Nearest Neighbors)
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (43)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
Decision Tree
상단으로

티스토리툴바