Tujuan Pembelajaran
Setelah mengikuti pertemuan ini, mahasiswa diharapkan mampu menerapkan konsep dan keterampilan berikut secara mandiri.
- Memahami cara kerja Decision Tree.
- Melatih Decision Tree dan membatasi kedalamannya.
- Membangun Random Forest sebagai ensemble pohon.
- Membandingkan performa kedua algoritma pada data uji.
Decision Tree membagi data dengan pertanyaan-pertanyaan bertingkat pada fitur, membentuk cabang seperti pohon. Setiap simpul mengecek satu kondisi, dan tiap daun menyimpan hasil akhir. Alurnya mudah diikuti sehingga cocok ketika orang perlu memahami alasan di balik prediksi.Menjelaskan analogi keputusan manusia: pohon keputusan serupa daftar pertanyaan berurutan, sedangkan Random Forest serupa menghimpun pendapat banyak pohon sebelum mengambil keputusan akhir.
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, test_size=0.3, random_state=42
)
dt = DecisionTreeClassifier(random_state=42)
dt.fit(X_train, y_train)
print("Akurasi Decision Tree:", round(dt.score(X_test, y_test), 4))
Pohon yang tidak dibatasi dapat tumbuh terlalu dalam dan menghafal detail data latih, yang disebut overfit. Parameter max_depth, min_samples_split, dan min_samples_leaf dipakai untuk memangkas cabang yang tidak perlu agar model lebih mampu generalisasi.Menekankan bahwa interpretabilitas adalah keunggulan penting Decision Tree, sementara akurasi dan stabilitas adalah kekuatan Random Forest. Pemilihan model bergantung pada tuntutan proyek, bukan semata akurasi tertinggi.
dt = DecisionTreeClassifier(max_depth=4,
min_samples_leaf=2,
random_state=42)
Random Forest
Random Forest menggabungkan banyak pohon yang masing-masing dilatih pada subset acak data dan fitur. Hasil akhir ditentukan oleh suara mayoritas untuk klasifikasi atau rata-rata untuk regresi. Kombinasi ini membuat model lebih stabil dan lebih kebal terhadap overfit dibanding pohon tunggal.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
print("Akurasi Random Forest:", round(rf.score(X_test, y_test), 4))
print("Pentingnya fitur:", rf.feature_importances_)
n_estimators menentukan jumlah pohon. Semakin banyak pada umumnya semakin stabil, tetapi biaya komputasi juga bertambah. feature_importances_ menunjukkan seberapa besar kontribusi tiap fitur terhadap keputusan model.
Random Forest kerap unggul dalam akurasi karena sifat ensemble-nya, sedangkan Decision Tree menang pada interpretabilitas. Keputusan akhir mempertimbangkan tuntutan proyek: apakah lebih mementingkan kemudahan penjelasan atau kinerja maksimal.
Langkah Praktik
Bandingkan dua model pada pembagian data yang sama agar perbandingannya adil. Gunakan random_state yang konsisten.
- Latih Decision Tree pada dataset iris dengan max_depth=3 dan amati akurasinya.
- Latih Random Forest dengan n_estimators=50 lalu naikkan ke 200 dan bandingkan.
- Cetak feature_importances_ untuk mengetahui fitur terpenting.
- Bandingkan akurasi Decision Tree dan Random Forest pada data uji.
- Tuliskan kesimpulan model mana yang terbaik beserta alasannya.
Amatilah fitur yang paling penting lewat feature_importances_ dan hubungkan dengan hasil EDA di pertemuan sebelumnya.
Latihan
Latihan membandingkan model membantu Anda memahami trade-off akurasi dan interpretabilitas yang sering muncul di dunia nyata.
- Jelaskan perbedaan cara kerja Decision Tree dan Random Forest.
- Apa fungsi parameter max_depth dan mengapa perlu dibatasi?
- Kapan Anda lebih memilih Decision Tree daripada Random Forest?
