Program Pohon Klasifikasi (Classification Tree)
🌳 Program Pohon Klasifikasi (Classification Tree)
Tujuan dari model ini adalah untuk mengidentifikasi kombinasi $\text{Usia}$, $\text{Natrium}$, $\text{Jenis Kelamin}$, dan $\text{Lingkar Pinggang}$ yang paling efektif dalam memprediksi status $\text{Obesitas}$ ($\text{BMI} \ge 30$).
Sintaks Classification Tree (Python/Scikit-learn)
# Sintaks Model Initialization dan Training
# max_depth=3 digunakan untuk menjaga pohon tetap kecil dan mudah diinterpretasikan.
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
# Pembagian data training (80%) dan testing (20%)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
# Inisialisasi model
clf = DecisionTreeClassifier(max_depth=3, random_state=42)
# Latih model
clf.fit(X_train, Y_train)
# Sintaks Evaluasi
from sklearn.metrics import accuracy_score, classification_report
Y_pred = clf.predict(X_test)
accuracy = accuracy_score(Y_test, Y_pred)
report = classification_report(Y_test, Y_pred)
Output Model Klasifikasi
Classification Report (Laporan Kinerja Model)
| precision | recall | f1-score | support | |
| Non-Obese (0) | 0.56 | 0.94 | 0.71 | 649 |
| Obese (1) | 0.41 | 0.05 | 0.09 | 498 |
| accuracy | 0.56 | 1147 | ||
| macro avg | 0.49 | 0.50 | 0.40 | 1147 |
| weighted avg | 0.50 | 0.56 | 0.44 | 1147 |
Struktur Pohon (Output Teks Ringkas dari DOT Format)
#
digraph Tree {
...
0 [label=<RIDAGEYR ≤ 53.5<br/>...<br/>class = Non-Obese>, fillcolor="#f9e2d1"] ;
1 [label=<NATRIUM_RERATA ≤ -134.271<br/>...<br/>class = Non-Obese>, fillcolor="#f8dbc6"] ;
...
8 [label=<RIDAGEYR ≤ 55.5<br/>...<br/>class = Non-Obese>, fillcolor="#fbebe0"] ;
...
12 [label=<BMXWAIST ≤ 127.052<br/>...<br/>class = Non-Obese>, fillcolor="#fae8da"] ;
...
}
Interpretasi Hasil Pohon Klasifikasi
Model Classification Tree mencapai akurasi sebesar $55.62\%$ pada data uji. Meskipun akurasi keseluruhan sedikit di atas kesempatan, kinerja prediksi untuk kelas Obese (1) sangat buruk ($\text{recall}=0.05$), menunjukkan bahwa model ini sangat cenderung memprediksi responden sebagai $\text{Non-Obese (0)}$. Hal ini kemungkinan besar disebabkan oleh distribusi yang tidak merata dalam data dan kurangnya kekuatan prediktif yang kuat dari variabel yang tersedia.
Aturan Prediktif Utama (Berdasarkan Struktur Pohon):
Pemisahan Awal: Variabel yang paling penting dan digunakan pada simpul akar (root node) adalah $\text{RIDAGEYR}$ (Usia). Pohon memisahkan data berdasarkan $\text{Usia} \le 53.5$ tahun.
Interaksi: Di jalur pohon yang berbeda, model menggunakan variabel lain seperti $\text{NATRIUM\_RERATA}$ dan $\text{BMXWAIST}$ untuk pemisahan lebih lanjut. Misalnya, $\text{BMXWAIST}$ (Lingkar Pinggang) muncul sebagai prediktor penting pada responden yang lebih tua, menunjukkan adanya interaksi yang kompleks: pengaruh $\text{Lingkar Pinggang}$ terhadap status obesitas lebih menonjol pada responden yang berusia di atas $53.5$ tahun.
Kesimpulan: Aturan ini menunjukkan bahwa status $\text{Obesitas}$ tidak diprediksi oleh satu faktor saja, melainkan oleh urutan korelasi yang melibatkan $\text{Usia}$ terlebih dahulu, diikuti oleh $\text{Natrium}$ atau $\text{Lingkar Pinggang}$, tergantung pada jalur yang diambil dalam pohon.
Komentar
Posting Komentar