Gradient Boosting Classifier

"Memperbaiki Kesalahan Probabilitas"

1. Apa Bedanya dengan Versi Regresi?

Jika di Regresi kita memprediksi Error (Angka), di Klasifikasi kita memprediksi Log Odds.

Gradient Boosting tidak langsung mengubah prediksi "Ya/Tidak", tapi dia mengubah "Keyakinan" (Log Odds). Awalnya model mungkin ragu (Log Odds = 0, Peluang 50%). Pohon berikutnya bilang "Eh, ini lebih kayak Kucing deh", jadi Log Odds dinaikkan sedikit.

2. Visualisasi: Boosting Probability

Mulai Log Odds: 0 Peluang 50%
+
Pohon 1 Liat Telinga +0.7 (Yakin Dikit)
Pohon 2 Liat Ekor +0.5 (Makin Yakin)
Final Total: 1.2 Peluang 77%

$Log(Odds) = 1.2 \rightarrow Probability = \frac{1}{1+e^{-1.2}} \approx 0.77$

3. Matematika: Log Odds ke Probabilitas

Gradient Boosting bekerja di "Dunia Log Odds" karena lebih stabil secara matematis (bisa plus/minus tak hingga), baru di akhir dikonversi ke Probabilitas (0-1).

$$ P = \frac{e^{\text{log\_odds}}}{1 + e^{\text{log\_odds}}} $$

4. Implementasi Python (Scikit-Learn)

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score
import numpy as np

# 1. Data Dummy [Nilai Ujian 1, Nilai Ujian 2]
X = [[50, 50], [80, 80], [60, 55], [90, 95], [40, 60]]
y = [0, 1, 0, 1, 0] # 0=Gagal, 1=Lulus

# 2. Model GBC
# learning_rate=0.1 (Hati-hati, jangan terlalu besar!)
clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)

# 3. Training
clf.fit(X, y)

# 4. Prediksi
print("Prediksi [75, 75]:", clf.predict([[75, 75]]))

# 5. XGBoost (Versi Industri)
# import xgboost as xgb
# model = xgb.XGBClassifier() 
# (Sintaks mirip sklearn, tapi lebih cepat)