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
