의사결정나무 / 랜덤포레스트

강민정·2023년 7월 10일
0

Machine Learning

목록 보기
8/10

의사결정나무(Decision Tree )

  • 추론 결과를 위해 분기하는 구조가 이진트리(Tree) 구조와 같음
  • 분기 기준
    • 분류 : 가장 불순도(서로 다른 종류class의 값들이 섞여있는 비율)를 낮출 수 있는 조건
    • 회귀 : 가장 오차가 적은 조건, MSE가 가장 낮은 방향
  • White box 모델로 추론 결과에 대한 해석이 가능 - 왜 이런 대
    답을 했는지 알 수 있음
  • 최종 모델보다는 앙상블 모델들의 기반 알고리즘으로 작용

과대적합(Overfitting) 문제

  • 불순도가 0이 될때 까지 분기 → 하위노드 많이 생성
  • 노드가 많이 만들어 질 수록 모델이 복잡
  • 과대적합을 막기 위해 하위 노드가 더이상 생성되지 않도록 하는 것 = 가지치기(Pruning)

하이퍼파라미터

  • max_depth : 최대 깊이(질문 단계)를 정의 / 기본값: None

    • 분류: 불순도가 0이 될때 까지 / 회귀: MSE가 0이 될 때 까지
  • max_leaf_nodes : Leaf Node 개수 제한 / 기본값: None

  • min_samples_leaf : Leaf Node가 가져야 하는 최소한의 sample (데이터) 수를 지정 / 기본값: 1

  • max_features : 분기 할 때마다 지정한 개수의 Feature(특성)만 사용

    • None(기본값) / 정수 / 0 ~ 1 사이 실수 / "sqrt” / "log2”
  • min_samples_split : 분할 하기 위해서 필요한 최소 샘플 수 / 기본값: 2

  • criterion : 각 노드의 불순도 계산 방식

    • 분류 : "gini" / 회귀 : "squared_error”

Feature(컬럼) 중요도 조회 : featureimportances

  • 중요도에 따라서 feature 선택
  • 전처리 단계에서 input data 에서 중요한 feature들을 선택할 때 decision tree를 이용

Wine Dataset을 이용한 color 분류

  • 회귀

---------------분라하기 위한 질문---------------
LSTAT <= 8.13
----------------현재 노드의 상태----------------
squared_error = 85.308    # 오차 - 현재 노드를 결과로 응답할 때 발생하는 오차(MSE)
samples = 379             # 현재 노드의 sample(데이터) 개수
value = 22.609            # 현재 노드를 결과로 응답할 때 사용할 응답값
                          # 현재 노드 sample들의 y의 평균

Ensemble(앙상블)

  • 하나의 모델만을 학습시켜 사용하지 않고 여러 모델을 학습시켜 결합하는 방식으로 문제를 해결하는 방식
  • 앙상블 기법 : 투표 방식 - 보팅, 배깅
    • 보팅(Voting) : 서로 다른 알고리즘을 사용 (같이 학습을 진행해도 상관없음, 결과를 취합해서 다수결)
    • 배깅(Bagging) : 같은 알고리즘을 사용, 학습하는 데이터를 다르게 함 / 랜덤포레스트의 기반
    • 부스팅(Boosting)
      • 개별 모델들을 순차적으로 학습시키는 기법, 이전 모델의 예측 결과에 따라 가중치를 조절하여 다음 모델을 학습
      • 약한 학습기(Weak Learner)들을 결합해서 보다 정확하고 강력한 학습기(Strong Learner)를 만듦
      • 뒤의 학습기들은 앞의 학습기가 찾지 못한 부분(부족한 부분)을 추가적으로 찾음

Random Forest (랜덤포레스트)

from sklearn.ensemble import RandomForestClassifier

  • Bagging 방식의 앙상블 모델

  • 데이터의 단위가 중,소규모일 때 많이 사용

  • N개의 Decision Tree 생성하고 입력데이터를 각각 추론하게 한 뒤 가장 많이 나온 추론결과를 최종결과로 결정

  • 랜덤포레스트의 절차

    • 부트스트랩 샘플링 : 각 트리에 사용할 데이터를 무작위로 선택하기 위해 부트스트랩 샘플링을 수행, 원본 데이터에서 중복을 허용하여 무작위로 샘플을 선택하는 과정
    • 트리 생성 : 랜덤하게 선택된 특징(subset)을 사용하여 분할 기준을 결정, 다양성을 확보
    • 예측 결합 : 분류 문제의 경우에는 하드 보팅(Hard Voting) 또는 소프트 보팅(Soft Voting) 방식으로 다수결 원칙을 적용하여 클래스를 선택,회귀 문제의 경우에는 예측값의 평균을 계산하여 최종 예측 결과를 도출
  • 주요 하이퍼파라미터

    • n_estimators : DecisionTree 모델의 개수, 클 수록 좋음 (default : 100, 최소 200개 이상)
    • max_features : sampling 할 때 선택할 feature의 개수
    • DecisionTree의 하이퍼파라미터들

0개의 댓글