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
- 초기에 random 하게 선택된 data set 을 이용하여 하나의 트리를 만듦
- 잘 맞추지 못한 데이터에게 weight 부여
- 다음 트리 생성시 영향을 줌 -> 다음 트리는 잘 맞출 수 있게 (에러를 기반으로 트리를 만듦)
2. Hyper Parameter
1) Learning Rate
- 너무 적게 설정하면 수렴 속도 느림
- 너무 크면 발산
2) Depth & Leaves
- 트리를 너무 깊게 만들거나 잎사귀들을 모두 사용하면 overfitting 위험
3) Column / Row 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 조정