본문 바로가기
Programming/Python

트리 모델, TabNet

출처: AI 엔지니어 기초 다지기 : 네이버 부스트캠프 AI Tech 준비과정

 

 

Decision tree(의사결정나무): 컬럼값들을 특정 기준으로 나누어 목적에 맞는 의사결정을 내리는 것. 자식 노드가 섞이지 않은 상태로 완전히 분류하는 것이 목적 (= 복잡성(Entropy) 낮도록 만드는 것)

왼쪽: 불순도 낮음 // 오른쪽: 불순도 높음

Impurity(불순도) = 복잡성

E = Entropy = 불순도를 측정하는 지표, 정보량의 기댓값

정보량 = 어떤 사건이 지닌 정보의 양

 

Gini Index(G)= 불순도 측정 지표. 데이터 통계적 분산을 정량화해서 표현한 것.

높으면 데이터가 분산되어있음을 의미 (불순도 높음)

불순도 측정 지표 3가지를 비교한 것

Misclassification error 지표는 미분 불가능하므로 잘 안쓰임

 

 

 

 

 

 

트리모델 발전: Decision Tree -> Random Forest -> AdaBoost -> GBM -> XGBoost, LightGBM, CatBoost

 

 

 

 

 

 

 

 

 

 

 

Bagging, Bossting: 여러 개 Decision Tree를 이용하여 모델 생성

생성한 Decision Tree의 Decision들을 취합(Aggregation)하여 하나의 Decision 생성

Bagging: data set을 sampling하여 모델 만드는 것. Ex) Random Forest

= Bootstrap(data를 여러 번 sampling) + Aggregation(=Ensemble; 종합)

Bagging은 기존 데이터를 여러 번 sampling해서 decision tree를 여러 개 만든다

 

 

Boosting: Boosting은 우선 tree 만들고 잘 만들지 못한 부분을 weight으로 가중치를 주어(녹색) 다시 만드는 과정이다.

Ex) LightGBM, XGBoost, CatBoost

 

트리 생성하는 구조가 큰 차이를 보인다. LightGBM은 한쪽 트리를 먼저 다 생성하고 다른 트리가 생성되는 방식이다.

 

트리가 성상(생성)하는 것에 대한 제한이 없다면 사실 이 세 방법은 큰 차이가 없다고 할 수 있다.

 

 

 

 

 

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은 이를 한번에 可

 

 

왼쪽: TabNet의 비지도 학습 // 오른쪽: 지도학습
TabNet의 구
해당 논문에서 비교한 기존 ML과의 성능비교

단점: 조절해야하는 하이퍼 파라미터 多 -> 파라미터 선택 및  조절 시간 소요(혹은 어려움)

 

 

 

 

 

 

728x90
반응형