Python/[코칭스터디 10기] Beyond AI Basic

[쇼핑데이터를 활용한 머신러닝] 8. 트리 모델

김초송 2023. 5. 8. 19:34

1. Tree Model

트리 모델 발전

1)  의사결정나무 (Decision Tree)

  • 컬럼 값들을 어떠한 기준으로 group 을 나누어 목적에 맞는 의사결정을 만드는 방법
  • 하나의 질문으로 yes / no 로 decision 을 내려 분류
  • 모든 데이터셋을 사용하여 tree 생성
  • 스무고개로 데이터를 분류, 예측 -> 일련의 규칙을 찾는 알고리즘
  • 특정 기준에 따라 데이터를 구분하는 모델
  • 정답이나 질문은 노드로 표현

 

2) Bagging & Boosting

  • 여러 개의 Decision Tree 를 이용하여 모델 생성
  • bagging 과 boosting 의 차이는 train data 를 어떻게 활용하느냐
  • radom forest - bagging
    XGboost, LightGBM, CatBoost - boosting

- Bagging

  • 데이터셋을 샘플링하여 모델을 만듦
  • 샘플링한 데이터셋을 하나로 하나의 decision tree 생성
  • 생성한 decision tree 의 decision 들을 취합 (aggregation) 하여 하나의 decision 생성
  • = Bootstrap + Aggregation
  • Bootstrap : data 를 여러 번 sampling
    Aggregation : 종합 (Ensemble)
  • 하나의 데이터 셋에서 샘플링을 여러 번 진행 -> 다양한 데이터셋
    -> 이를 기반으로 tree 생성

- Boosting

  1. 초기에 random 하게 선택된 data set 을 이용하여 하나의 트리를 만듦
  2. 잘 맞추지 못한 데이터에게 weight 부여
  3. 다음 트리 생성시 영향을 줌 -> 다음 트리는 잘 맞출 수 있게 (에러를 기반으로 트리를 만듦)

 

2. Hyper Parameter

1) Learning Rate

  • 너무 적게 설정하면 수렴 속도 느림
  • 너무 크면 발산

2) Depth & Leaves

  • 트리를 너무 깊게 만들거나 잎사귀들을 모두 사용하면 overfitting 위험

3) Column  / Row Sampling Ratio

column sampling ratio

- Column Sampling Ratio

  • 사용하는 feature 를 랜덤하게 선택
    -> 특정 feature 에 overfitting 방지

- Row Sampling Ratio

  • row 를 랜덤하게 선택
  • 특정 데이터에 overfitiing 방지

모델별 하이퍼파라미터 옵션

 

3. 실습

- category 변수

  • LightGBM, CatBoost : pandas catogory 데이터 타입 가능
  • XGBoost : 오직 numeric 만 가능 -> 전처리 필요

- LightGBM 기능

  • Plot metric 으로 train log 확인
  • Plot tree 로 tree 구조 확인
    -> depth, leaves 조정