Tree-Based Algorithms
Dalam pembelajaran mesin, algoritma yang berbasis pohon disebut algoritma berbasis pohon. Algoritma ini menggunakan struktur seperti pohon untuk membuat keputusan atau prediksi. Beberapa algoritma berbasis pohon yang paling umum adalah:
Decision Tree: Struktur pohon sederhana di mana setiap node internal mewakili keputusan berdasarkan fitur, dan setiap node daun mewakili hasil (klasifikasi atau regresi).
Random Forest: Metode ensemble yang membuat kumpulan pohon keputusan dan menggabungkan hasilnya (biasanya dengan rata-rata atau pemungutan suara mayoritas) untuk meningkatkan akurasi dan mengurangi overfitting.
Gradient Boosting Machines (GBM): Algoritma boosting yang membangun pohon secara berurutan, di mana setiap pohon mencoba memperbaiki kesalahan yang dibuat oleh pohon sebelumnya. Implementasi populer termasuk XGBoost, LightGBM, dan CatBoost.
Algoritma ini banyak digunakan karena kemampuannya untuk menangani tugas klasifikasi dan regresi secara efektif serta interpretabilitasnya.
Decision tree membagi dataset menjadi beberapa wilayah (berbentuk kotak). Algoritma ini memilih fitur dan ambang batas yang dapat membagi target dengan baik. Langkah ini diulangi hingga kedalaman maksimum yang diinginkan tercapai, yang akan membuat batasan untuk mengklasifikasikan data berdasarkan wilayah yang telah dibuat sebelumnya.
Sumber: medium.com/@axelivandatanjung
Algoritma decision tree mirip dengan regresi piecewise-linear. Decision tree membagi ruang input menjadi beberapa wilayah, dan menghitung nilai rata-rata target pada set
Decision tree terdiri dari beberapa komponen utama:
Sumber: Pacmann Academy
Contoh, asumsikan kita memiliki variabel income untuk memprediksi debt.
Sumber: Pacmann Academy
Hitung mean squared error (MSE) untuk setiap partisi (feature space) pada variabel income. Pilih partisi dengan nilai MSE terendah.
Sumber: Pacmann Academy
Sumber: Pacmann Academy
Berikut adalah contoh penerapan algoritma Decision Tree untuk regresi menggunakan pustaka Scikit-Learn di Python:
class sklearn.tree.DecisionTreeRegressor(*, criterion='squared_error', splitter='best',
max_depth=None, min_samples_split=2, min_samples_leaf=1,
min_weight_fraction_leaf=0.0, max_features=None, random_state=None,
max_leaf_nodes=None, min_impurity_decrease=0.0, ccp_alpha=0.0,
monotonic_cst=None)
Contoh:
Sumber: Wang et al. (2019)
n_estimators
n_estimators=50
berarti ada 50 pohon.max_depth
max_depth=10
batasi pohon sampai 10 tingkat.min_samples_split
min_samples_split=5
berarti simpul baru dibagi jika ada minimal 5 sampel.min_samples_leaf
min_samples_leaf=2
berarti setiap daun harus punya minimal 2 sampel.max_features
max_features='log2'
atau max_features=0.5
(50% dari fitur).bootstrap
bootstrap=False
berarti semua pohon pakai seluruh data (tanpa sampling).random_state
random_state=42
untuk hasil yang konsisten setiap kali dijalankan.