XGBoost dan Isu Dalam Pemodelan Klasifikasi
XGBoost membangun model secara bertahap. Setiap model baru (tree) berusaha memperbaiki kesalahan dari model sebelumnya.
Fungsi objektif XGBoost: \[ \text{Obj} = \sum_{i=1}^n L(y_i, \hat{y}_i) + \sum_{k=1}^K \Omega(f_k) \]
Dimana:
\(L\) adalah fungsi loss
\(\Omega\) adalah term regularisasi
\(f_k\) adalah model tree ke-k
\(\hat{y}_i\) adalah prediksi untuk instance i
XGBoost menyediakan beberapa cara untuk memahami model:
XGBoost menggunakan pendekatan additive training:
\[\hat{y}_i^{(t)} = \hat{y}_i^{(t-1)} + \eta f_t(x_i)\]
Dimana: (1) \(\hat{y}_i^{(t)}\) adalah prediksi pada iterasi t (2) \(\hat{y}_i^{(t-1)}\) adalah prediksi pada iterasi sebelumnya (3) \(\eta\) adalah learning rate (4) \(f_t\) adalah model tree baru yang ditambahkan
XGBoost mengoptimalkan fungsi objektif menggunakan ekspansi Taylor orde kedua:
\[\text{Obj}^{(t)} \approx \sum_{i=1}^n [g_i f_t(x_i) + \frac{1}{2} h_i f_t^2(x_i)] + \Omega(f_t)\]
Dimana: (1) \(g_i\) adalah gradien pertama dari fungsi loss (2) \(h_i\) adalah gradien kedua dari fungsi loss
Sumber: blog.dailydoseofds.com
Sumber: blog.dailydoseofds.com
XGBoost memiliki beberapa komponen penting yang berkontribusi pada performanya:
XGBoost (via scikit-learn) memiliki banyak hyperparameter yang dapat dioptimasi:
Booster Parameters:
n_estimators
: Jumlah pohon (default=100)
max_depth
: Kedalaman maksimum tiap pohon (default=6)
learning_rate
: Laju pembelajaran (default=0.3)
gamma
: Minimum loss reduction untuk split (default=0)
Regularization Parameters:
reg_alpha
: Regularisasi L1 (default=0)
reg_lambda
: Regularisasi L2 (default=1)
min_child_weight
: Minimum sum of instance weight needed in child (default=1)
Sampling Parameters:
subsample
: Rasio sampel data untuk tiap tree (default=1)
colsample_bytree
: Rasio kolom sampel untuk tiap tree (default=1)
Lainnya:
objective
: Fungsi objektif (‘binary:logistic’, ‘multi:softmax’, dll)
eval_metric
: Metrik evaluasi (‘error’, ‘auc’, dll)
early_stopping_rounds
: Berhenti jika performa tidak meningkat
Parameter ini dapat dioptimasi menggunakan GridSearchCV atau RandomizedSearchCV
Jenis variabel prediktor
Fungsi pemisah antar kelas: Linear vs Non-Linear Separation
Optimasi Hyperparameter
Class Imbalance
Metode | Cocok Untuk |
---|---|
K-NN, SVM | Numerik Semua |
Bayesian Classifier | Kategorik Semua |
Regresi Logistik, Classification Tree, XGBoost, Neural Network | Campuran |
Model | Hyperparameter yang Perlu Dioptimasi |
---|---|
Regresi Logistik | Penalized parameter |
k-NN | k (banyaknya tetangga) |
Classification Tree | minsplit, maxdepth, cp |
Random Forest | banyak variabel yang diperiksa per split, jumlah pohon |
Gradient Boosting | learning rate, jumlah pohon (iterasi) |
Support Vector Machine | jenis kernel, koef kernel, cost of error |
Neural Network | epoch, learning rate |
Validasi dan Validasi Silang
Parsimonous vs Complex Model, Underfit vs Overfit
Pencarian hyperparameter optimal