Tabnet
0οΈβ£ Tabnet
Tree κΈ°λ° λͺ¨λΈμ λ³μ μ ν νΉμ§μ λ€νΈμν¬ κ΅¬μ‘°μ λ°μν λ₯λ¬λ λͺ¨λΈ
1οΈβ£ λ°°κ²½
β κΈ°μ‘΄ λ₯λ¬λ λͺ¨λΈμ μ΄λ―Έμ§, μμ±, μΈμ΄μ κ°μ λΉμ ν λ°μ΄ν°μλ§ μ μ©λμμ
β μ ν λ°μ΄ν° Tabular Data λ μ΅κ·ΌκΉμ§λ kaggle κ°μ μ¬λ¬ λνμμ XGBoost, LightGBM, CatBoostμκ°μ TreeκΈ°λ°μ μμλΈ λͺ¨λΈμ μ£Όλ‘ μ¬μ©νμ
π λ₯λ¬λμ μ μ§μ νμ΅ νΉμ± + μ¬μ νμ΅ κ°λ₯μ±μ μλ‘μ΄ λΆμ κΈ°νλ₯Ό λμΆ
π νΈλ¦¬κΈ°λ° λͺ¨λΈ + μ κ²½λ§ λͺ¨λΈ ꡬ쑰 μ μ₯μ μ λͺ¨λ κ°λ Tabnet μ μ μ π feature selection & engineering + λͺ¨λΈ ν΄μλ ₯μ κ°μΆ μ κ²½λ§ λͺ¨λΈ
2οΈβ£ Tabnet λ Όλ¬Έ 리뷰
π§ μμλΈ λͺ¨λΈμ΄ λ₯λ¬λ λͺ¨λΈλ³΄λ€ μ°μν μ΄μ
(1) μ νλ°μ΄ν°λ λλ΅μ μΈ μ΄νλ©΄ κ²½κ³λ₯Ό κ°μ§λ manifold μ΄κ³ , λΆμ€ν λͺ¨λΈλ€μ μ΄λ¬ν manifold μμ κ²°μ μ ν λ λ ν¨μ¨μ μΌλ‘ μλνλ€. μ΄λ―Έμ§μ μΈμ΄κ°μ λΉμ ν λ°μ΄ν°λ μ ν λ°μ΄ν°μ λΉν΄ μλμ μΌλ‘ κ°μ μμ²μμ λ°μλ λ°μ΄ν°μ΄λ―λ‘ λλ΅μ μΈ μ΄νλ©΄ κ²½κ³κ° λλ ·νμ§ μλ€.
(2) νΈλ¦¬ κΈ°λ°μ λͺ¨λΈλ€μ΄ νμ΅μ΄ λΉ λ₯΄κ³ μ½κ² κ°λ°μ΄ κ°λ₯νλ€.
(3) νΈλ¦¬κΈ°λ°μ λͺ¨λΈλ€μ λμ ν΄μλ ₯μ κ°μ§λ€. νΈλ¦¬κΈ°λ° λͺ¨λΈμ νΉμ± μ λ³μ μ€μλλ₯Ό ꡬν μ μμ΄ λ₯λ¬λ λͺ¨λΈμ λΉν΄ μλμ μΌλ‘ ν΄μμ μ©μ΄νλ€.
(4) CNN, MLP κ°μ λ₯λ¬λ λͺ¨λΈμ μ§λμΉκ² Overparametrized λμ΄μ μ ν λ°μ΄ν° λ΄ λ§€λν΄λμμ μΌλ°νλ ν΄κ²°μ± μ μ°Ύλλ° μ΄λ €μμ λ°μμν¬ μ μλ€.
π€ μ ν λ°μ΄ν°μ λ₯λ¬λ λͺ¨λΈμ μ μ©νλ κ²λ λμμ§ μμ
(1) λ§€μ° λ§μ νλ ¨ λ°μ΄ν° μ μ λν΄ μ±λ₯μ λμΌ μ μλ€.
(2) μ ν λ°μ΄ν°μ μ΄λ―Έμ§(ν μ€νΈ) λ± λ€λ₯Έ λ°μ΄ν° νμ μ νμ΅μ ν¨κ» μ¬μ© κ°λ₯νλ€. (multi - modal Learning)
(3) νΈλ¦¬ κΈ°λ° μκ³ λ¦¬μ¦μμ νμμ μΈ Feature engineering κ°μ λ¨κ³λ₯Ό ν¬κ² μꡬνμ§ μλλ€.
(4) λ₯λ¬λ λͺ¨λΈμ Streaming λ°μ΄ν°λ‘λΆν° νμ΅μ΄ μ©μ΄νλ€. (μ§μμ μΈ νμ΅)
π Tabnet μ λ§μ΄μΌ
(1) Feature μ μ μ²λ¦¬ μμ΄ μ λ°μ΄ν°λ₯Ό μ λ ₯μΌλ‘ μ¬μ©ν μ μκ³ , κ²½μ¬ νκ°λ² κΈ°λ° μ΅μ ν λ°©μμ μ¬μ©ν΄ End-to-End learning μ κ°λ₯νκ² νλ€.
(2) μ±λ₯κ³Ό ν΄μλ ₯ ν₯μμ μν΄ Sequential attention mechanism μ ν΅ν΄ μ¬μ©ν feature λ₯Ό μ ννλ€.
(3) κΈ°μ‘΄ μ ν λΆλ₯, νκ· λͺ¨λΈλ³΄λ€ μ±λ₯μ μ°μμ±μ κ°μ§λ©° ν΄μλ ₯μμ μ λ ₯ νΌμ²μ μ€μλλ₯Ό νμ ν μ μκ³ , νΌμ²μ κ²°ν©μ μκ°ννμ¬ νμΈν΄λ³Ό μ μμΌλ©°, μ λ ₯ νΌμ²λ€μ΄ μΌλ§λ μμ£Ό κ²°ν©λλμ§μ λν ν΄μλ ₯μ μ μνλ€.
3οΈβ£ Tabnet μκ³ λ¦¬μ¦ κ΅¬μ‘°
π κ°μ
- μμ°¨μ μΈ μ΄ν μ μ μ¬μ©ν΄ κ° μμ¬κ²°μ λ¨κ³μμ μΆλ‘ ν νΌμ²λ₯Ό μ νν΄κ°λ©΄μ νΌλλ°±μ μ£Όλ©° νμ΅ν΄λμκ°λ ꡬ쑰μ΄λ€ π λ λμ ν΄μ λ₯λ ₯κ³Ό νμ΅μ΄ κ°λ₯ + μ¨κ²¨μ§ νΉμ§μ μμΈ‘νκΈ° μν΄ μ¬μ λΉμ§λ νμ΅ (Self-supervised Learning) μ μ¬μ© κ°λ₯
- tabnet μ feature selection μ νΉμ νΌμ²λ§ μ ννλ κ²μ΄ μλλΌ, κ° νΌμ²μ κ°μ€μΉλ₯Ό λΆμ¬νλ κ²μ΄λ€. Sparse Feature selection
- Tabnet μ ꡬ쑰λ Encoder - Decoder λ₯Ό κ±°μ³ κ²°μΈ‘κ°μ μμΈ‘ν μ μλ Autoencoder ꡬ쑰μ΄κΈ° λλ¬Έμ λ°μ΄ν°μ μ κ²°μΈ‘κ°μ΄ μμ΄λ λ³λμ μ μ²λ¦¬ μμ΄ κ°λ€μ μ±μΈ μ μλ€.
π Encoder
- input μ μμμΌλ‘ κ° μμ¬κ²°μ λ¨κ³ Step λ‘ κ΅¬μ±λμ΄ μκ³ , λ¨κ³λ§λ€ Feature transformer, Attentive transformer, Feature masking μΌλ‘ ꡬμ±λμ΄ μλ€.
- feature transformer μ attentive transformer λΈλ‘μ ν΅κ³Όνμ¬ μ΅μ μ mask λ₯Ό νμ΅νλ€.
- λ€μ decision step μΌλ‘ μ΄μ μ decision μ λν μ 보λ€μ΄ μ λ¬λλ κ³Όμ μ΄ νΈλ¦¬κΈ°λ° λΆμ€ν λͺ¨λΈμ μμ°¨λ₯Ό μ€μ¬λκ°λ λΆλΆκ³Ό μ μ¬νλ€.
- feature masking μ local ν΄μμ μ¬μ©λλ©° μ 체λ₯Ό μ·¨ν©νμ¬ global ν ν΄μμ ν μ μκ² λλ€.
π Decoder
- κ° step μμ feature transformer λΈλ‘μΌλ‘ ꡬμ±λλ€.
- μΌλ°μ μΈ νμ΅μμ Decoder λ₯Ό μ¬μ©νμ§ μμ§λ§ Self-Supervised (Semi-supervised) νμ΅ μ§νμ μΈμ½λ λ€μμ λΆμ¬μ Έ κΈ°μ‘΄ κ²°μΈ‘κ° λ³΄μ λ° νν νμ΅μ μ§ννλ€.
π μΈλΆ ꡬ쑰
π€¨ Tabnet μν€ν μ³λ₯Ό λ°λΌκ°λ©° μμ (a) κ·Έλ¦Όμ μ μλ κ° λ°μ€ λΆλΆμ λν΄ μ€λͺ νκ³ μ νλ€.
π Feature transformer π¨ μλ² λ©μ μν
- μ νλ νΌμ²λ‘ μ νν μμΈ‘νκΈ° μν μλ² λ© κΈ°λ₯
- μ λ ₯ Feature : numerical νΌμ²λ κ·Έλλ‘ μ¬μ©νκ³ , categorical νΌμ²λ μλ² λ© λ μ΄μ΄λ₯Ό ꡬμ±ν΄μ€λ€ π λͺ¨λΈ μμ±μ cat_idxs, cat_dims, cat_emb_dim μΈμμ κ΄λ ¨λ¨
- BatchNorm (BN) : μ ν λ°μ΄ν°λ₯Ό λΆμν λ λ³΄ν΅ Min-Max scaler, Standard Scaler λ₯Ό μννλλ°, μ΄λ¬ν μ κ·ν κ³Όμ μ BatchNorm λ μ΄μ΄λ‘ λ체νμ¬ μ¬μ©νλ€.
- batch λ₯Ό λΆν ν nano batch μ¬μ©μΌλ‘ μ‘μμ μΆκ°ν΄ μ§μ μ΅μ νλ₯Ό μλ°©νλ€.
- Feature transformer : FC-BN-GLU λ₯Ό 4λ² λ°λ³΅ν ꡬ쑰
- FC : fully connected layer μ κ²°ν©μΈ΅
- GLU : Gated Linear unit, μ ν λ§€νμ ν΅ν΄ λμ¨ κ²°κ³Όλ¬Όμ λ°μΌλ‘ λλμ΄ Residual connection, sigmoidfunction μ κ±°μΉ ν element-wise λ‘ κ³μ°νλ ꡬ쑰. κ° μ 보 λ³ μ 보μ μμ μΌλ§λ νλ €λ³΄λΌμ§ κ²°μ νκΈ° μν΄ λΉμ ν ν¨μλ₯Ό μ¬μ©νλ€.
- μμ 2κ° λ€νΈμν¬ λ¬Άμμ λͺ¨λ νλΌλ―Έν°λ₯Ό 곡μ νλ©° κΈλ‘λ² μ±ν₯μ νμ΅νκ³ , λ€μ 2κ° λ€νΈμν¬ λ¬Άμμ κ° μ€ν μμλ§ μ μ©μΌλ‘ μ¬μ©λλ λΈλ‘μΌλ‘ κ° λ‘컬 μ±ν₯μ νμ΅νλ€.
π Split block
- feature transformer λ‘λΆν° λμ¨ κ²°κ³Όλ₯Ό λ κ°λ‘ λλμ΄, νλλ ReLU λ‘ λ³΄λ΄μ΄ μ΅μ’ μμν (Decision output) μΌλ‘ 보λ΄κ³ λ€λ₯Έ νλλ λ€μ Attentive transformer λ‘ λ겨μ€λ€.
- ν₯ν κ° decision outputμ κ²°κ³Όλ₯Ό ν©μ°ν΄ μ 체 μμ¬κ²°μ μλ² λ©μ μμ±ν μ μκ³ μ΄ μλ² λ©μ΄ FC layer λ₯Ό κ±°μΉλ©΄ μ΅μ’ classification/regression μμΈ‘ κ²°κ³Όκ° μ°μΆλλ€.
- ReLU layer μ κ²°κ³Όμμ hidden unit μ±λμ κ°λ€μ λͺ¨λ ν©μ°ν΄ ν΄λΉ step μ νΌμ²μ€μλλ₯Ό μ°μΆν μ μλ€. κ° λ¨κ³μ νΌμ²μ€μλ κ²°κ³Όλ₯Ό ν©μ°νλ©΄ μ΅μ’ νΌμ² μ€μλκ° λμΆλλ€.
π Attentive transformer π¨ Mask λ₯Ό μμ± (λ³μμ ν κΈ°λ₯)
- FC , BN, Sparsemax λ₯Ό μμ°¨μ μΌλ‘ μννλ©° Mask λ₯Ό μμ±νλ€.
- Mask μλ μ΄λ€ νΌμ²λ₯Ό μ£Όλ‘ μ¬μ©ν κ²μΈμ§μ λν μ λ³΄κ° ν¬ν¨λμ΄ μλ€.
- μμ±λ Mask μ νΌμ²λ₯Ό κ³±νμ¬ νΌμ²μ νμ΄ μ΄λ£¨μ΄μ§λ€. μ΄μ step μ νΌμ²μ κ³±νμ¬ Masked feature λ₯Ό μμ±νλ€. μ΄λ λ€μ Feature transformer λ‘ μ°κ²°λλ©° Step μ΄ λ°λ³΅λλ€.
- Prior scale μ¬μ μ 보λ : μ΄μ decision step λ€μμ κ° feature κ° μΌλ§λ λ§μ΄ μ¬μ©λμλμ§ μ§κ³ν μ 보λ‘, μ΄μ step μμ μ¬μ©ν Mask λ₯Ό μΌλ§λ μ¬μ¬μ©ν μ§ μ‘°μ ν μ μλ€. μ νλ λ³μμ λ°μλ₯ μ μ‘°μ νλ μμΈ.
- masking μ ν΅ν΄ νμ΅μ ν° μν₯μ λ―ΈμΉμ§ μμ λ³μλ€μ μν₯λ ₯ κ°μμν΄ π mask λ₯Ό ꡬνκΈ° μν΄ attentive transformer λ₯Ό μ¬μ©
- Sparsemax : Softmaxμ sparseν λ²μ μΌλ‘ sparse ν λ°μ΄ν°μ μ μ μ©νμ λ μ’μ μ±λ₯μ λ³΄μΈ μ κ·νκΈ°λ²μ΄λ€. κ° λ³μ λ³ κ³μ κ°λ€μ μΌλ°νλ₯Ό μν΄ μ¬μ©νλ€. λ³μμ μμ΄ λ§μμ§μλ‘ κ°μ΄ 0κ³Ό 1λ‘ μλ ΄λλ κ²½μ°κ° λ§μμ§ π λ κ°λ ₯ν νΌμ² μ ν μμ¬ κ²°μ κ³Όμ (κ²°μ μ ν¨κ³Όλ₯Ό λμΈλ€)
π feature Masking
- feature importance λ₯Ό κ³μ°
- μ΄μ Step μ feature μ κ³±νμ¬ Masked feature λ₯Ό μμ±
- λ€μ Step μ Mask μμ μ μ©ν Prior scale term κ³μ°
- Masked feature λ λ€μ step μ input μ΄ λλ€.
π Agg(regate) block
- μ΄λ€ feature κ° μ€μνμ§ μ μ μλ€.
π feature importance mask
- κ° decision step (M1, M2, ..) λ³λ‘ μ΄λ€ νΌμ²λ€μ΄ μ€μνκ² μ¬μ©λμλμ§λ₯Ό μκ°ν ν κ²μ΄λ€. κ° λ¨κ³μμ μ΄λ€ λ³μλ€μ΄ μ£Όμνκ² μ¬μ©λμλμ§ ν΄μν μ μλ€.
4οΈβ£ μ½λ μ€μ΅
import torch
import torch.nn as nn
from pytorch_tabnet.tab_model import TabNetClassifier
clf = TabNetClassifier() #TabNetRegressor()
clf.fit(
X_train, Y_train,
eval_set=[(X_valid, y_valid)]
)
preds = clf.predict(X_test)
5οΈβ£ Plus
1. Sparse feature selection = decision blocks
- μ¬λ¬κ°μ μμ¬κ²°μ λΈλ‘μ μ¬μ©
- κ·Έλ¦Όμμλ μ±μΈ μΈκ΅¬μ‘°μ¬ λ°μ΄ν°λ₯Ό λ°νμΌλ‘ μλμ μμΈ‘νλ Tabnet μ μ°μ° κ³Όμ μ 보μ¬μ£Όκ³ μλ€. μλμμ€μ μμΈ‘νκΈ° μν΄ 2κ°μ μμ¬κ²°μ λΈλ‘μ΄ κ°κ° μ λ¬Έμ§ μ¬λΆμ ν¬μμ‘μ κ΄λ ¨λ λ³μκ° μ νν κ²μ λ³Ό μ μλ€.
2. Mask
- Mask λ μ λ ₯λ³μλ€ μ€ μ ν λ³μ μΈ λ€λ₯Έ λ³μλ€μ κ°λ¦¬λ λ°©λ²μ΄λ€.
- λ λ³μ x1, x2κ° Sparse matrix Mask λ₯Ό ν΅κ³Όνκ² λλ©΄ νΉμ λ³μλ₯Ό μ νν κ² κ°μ ν¨κ³Όλ₯Ό μ»μ μ μλ€.
- Ck : κ°μ€μΉ. μ΄ κ°μ΄ 컀μ§μλ‘ λΆλ₯λ₯Ό μν κ²°μ κ²½κ³κ° λλ ·ν΄μ§λ€.
- λ³μ μ ν μ΄ν μλ―Έ μΆμΆ κ³Όμ μμ λ€λ₯Έ λ³μλ€μ΄ κ°μ λμ§ μμΌλ―λ‘ ReLU λ₯Ό ν΅κ³Όν κ²°κ³Όλ€μ μλ‘ μνΈ λ 립μ μ΄λ€.
- ReLU λ₯Ό ν΅ν΄ κ²°κ³Όλ‘ λμ¨ output μ ν©μ³ μμ¬κ²°μ μ μ¬μ©νλ κ²μ΄ μμλΈ νΈλ¦¬ ꡬ쑰μ μ μ¬νλ€.
3. Self-supervised tabular learning
- Tabnet μμλ μκΈ°μ§λνμ΅ (self - supervised) μ μν΄ λ¬΄μμλ‘ κ°λ €μ§ λ³μκ°μ μμΈ‘νλ autoencoder ꡬ쑰μ λΉμ§λ νμ΅μ μνν΄ λΉμ§λ ννμ νμ΅ν΄ encoder ꡬ쑰μ μ§λνμ΅ λͺ¨λΈ μ±λ₯μ ν₯μμν¬ μ μλ€.
- νΉμ μμμ΄ masking λ μΈμ½λ© λ°μ΄ν°λ₯Ό μλ³Έλλ‘ λ³΅μν μ μλλ‘ νμ΅νλ μ¬μ νμ΅μ ν΅ν΄ μμΈ‘ μ±λ₯μ ν₯μ, νμ΅ μκ° λ¨μΆ λ° κ²°μΈ‘μΉμ λν λ³΄κ° ν¨κ³Ό
- encoder μμ μ 보λ₯Ό μμΆνκ³ decoder μμ νμ₯νμ¬ ν΄μνλ©΄μ κ²°μΈ‘μΉλ₯Ό 보μ ν μ μκ² λλ€.
4. Attenstion
- Encoder : μ 보λ₯Ό μμΆ
- Decoder : μ 보λ₯Ό νμ₯ν΄μ ν΄μ
- λ²‘ν° νλμ λͺ¨λ μνμ€μ μ 보λ₯Ό μμ‘΄νμ§ μμΌλ―λ‘ κΈΈμ΄λ μμμ μν₯μ λ λ°μ
6οΈβ£ Tabnet μ₯μ
1. μ μ²λ¦¬ κ³Όμ μ΄ νμνμ§ μλ€.
2. Decision step μΌλ‘ feature selection μ μ§ννλ€.
3. decision step λ³ νΉμ λͺ¨λΈ μ 체μ λν΄ feature importance λ₯Ό μμΉνν μ μλ€.
4. 무μμλ‘ κ°λ €μ§ feature κ°μ μμΈ‘νλ unsupervised pretrain λ¨κ³λ₯Ό μ μ©νμ¬ μλΉν μ±λ₯ ν₯μμ 보μ¬μ€λ€.
5. μ€μ λ°μ΄ν°λ λμμμ΄ μ μ λκ³ λ³ννκΈ° λλ¬Έμ νλ²μ νμ΅μΌλ‘ μμν μ¬μ©ν μ μλ λͺ¨λΈμ μλ€. λλ¬Έμ λ₯λ¬λμ pretraining, Incremental learning (iterative train) νΉμ±μ μ§μ νμ΅ κ°λ₯ν μΈ‘λ©΄μμ μ’μ λμμ΄λ€.
πΎ μ°Έκ³ μλ£
1. https://wsshin.tistory.com/5
2. https://lv99.tistory.com/83
3. https://housekdk.gitbook.io/ml/ml/tabular/tabnet-overview
4. https://themore-dont-know.tistory.com/2
5. https://today-1.tistory.com/54
6. http://dmqm.korea.ac.kr/activity/seminar/327