출처: AI 엔지니어 기초 다지기 : 네이버 부스트캠프 AI Tech 준비과정
Decision tree(의사결정나무): 컬럼값들을 특정 기준으로 나누어 목적에 맞는 의사결정을 내리는 것. 자식 노드가 섞이지 않은 상태로 완전히 분류하는 것이 목적 (= 복잡성(Entropy) 낮도록 만드는 것)
Impurity(불순도) = 복잡성
E = Entropy = 불순도를 측정하는 지표, 정보량의 기댓값
정보량 = 어떤 사건이 지닌 정보의 양
Gini Index(G)= 불순도 측정 지표. 데이터 통계적 분산을 정량화해서 표현한 것.
높으면 데이터가 분산되어있음을 의미 (불순도 높음)
Misclassification error 지표는 미분 불가능하므로 잘 안쓰임
트리모델 발전: Decision Tree -> Random Forest -> AdaBoost -> GBM -> XGBoost, LightGBM, CatBoost
Bagging, Bossting: 여러 개 Decision Tree를 이용하여 모델 생성
Bagging: data set을 sampling하여 모델 만드는 것. Ex) Random Forest
= Bootstrap(data를 여러 번 sampling) + Aggregation(=Ensemble; 종합)
Boosting: Boosting은 우선 tree 만들고 잘 만들지 못한 부분을 weight으로 가중치를 주어(녹색) 다시 만드는 과정이다.
Ex) LightGBM, XGBoost, CatBoost
트리가 성상(생성)하는 것에 대한 제한이 없다면 사실 이 세 방법은 큰 차이가 없다고 할 수 있다.
Gradient Boosting: Pseudo code
XGBoost(= Gradient Boosting + Regularization term = level-wise growth)
트리 깊이 줄이고 균형있게 만들기위해 root노드와 가까운 노드를 우선 순회하여 수평 성장하는 방법
장점: 다양한 Loss function 지원 -> task에 따른 유연한 튜닝 可
단점: 학습 시간 느림, 하이퍼 파라미터 너무 많아서 튜닝 어려
LightGBM (=leaf-wise tree growth)
loss변화가 가장 큰 노드에서 분할하여 성장하는 수직 성장방법
장점: XGBoost의 느린 학습시간 개선, 하이퍼 파라미터 개수 단순화, 상대적으로 대용량 데이터 처리 가능
단점: 대용량 데이터가 아니면 overfitting 可
EFB는 종류가 많은 카테고리 변수(원핫 인코딩)를 하나로 통합하여 많은 계산을 줄임, 차원축소기법의 일종. 그러나 어떤 피쳐를 골라내야하는 지에 대한 문제점 있음
Catboost
Target leakage를 피하는 표준 gradient boosting을 수정 + 범주형 features를 처리하는 알고리즘
Ordered Principle(순서형 원칙): 일부 residual만 계산하고 나머지는 예측해서 수행. (기존 모형들은 모두 계산)
Random Permutation도 사용됨(데이터 셔플링해서 뽑아냄)
장점: 범주형(카테고리) 데이터가 많은 곳에서 높은 성능, 파라미터 튜닝에 상대적으로 덜 신경써도되는 모형
범주형 feature 처리 방법 3가지
1) Ordered Target Encoding: overfitting, 수치값 다양성 만들어 줌
2) Categorical Feature Combinations: information gain이 동일한 경우 하나로 묶음 (feature selection 부담 줄임)
3) One-Hot Encoding: 자동으로 처리해주는 기능 有
TabNet (source: 논문 Attentive Interpretable Tabular Learning)
정형데이터 처리를 위한 딥러닝 모형 (최근 핫하다고 함)
요즘 정형데이터가 점점 커져서 boosting 기반의 3가지 모형으로 처리하는데 한계가 있음
-> TabNet은 딥러닝 기반이므로 빅데이터 처리에 용이
Sequential Attention을 사용하여 각 의사 결정 단계에서 추론할 피쳐를 선택 -> 학습 능력이 가장 좋은 피쳐 사용
특징 선택 有 -> 어떤 특징이 중요한지 설명 可
기존 ML: 피쳐 선택, 모델 학습 과정이 나뉨. TabNet은 이를 한번에 可
단점: 조절해야하는 하이퍼 파라미터 多 -> 파라미터 선택 및 조절 시간 소요(혹은 어려움)
'Programming > Python' 카테고리의 다른 글
기본 개념 정리 4 (hyper-parameter, Ensemble) (0) | 2024.01.30 |
---|---|
기본 개념 정리 3 (features) (0) | 2024.01.30 |
기본 개념 정리 2 (ML) (0) | 2024.01.16 |
기본 개념 정리 1 (데이터, EDA, 데이터 전처리) (1) | 2024.01.16 |
ETL (Extract, Transform, Load) with command-line tools (1) | 2024.01.03 |