Tugas Decision Tree C4.5 (Gain Ratio)#
Pada tugas ini, saya mendemonstrasikan proses pembuatan model Decision Tree C4.5 menggunakan aplikasi KNIME. Dataset yang digunakan adalah dataset Play Tennis. Penjelasan untuk masing-masing tahap dan komponen di dalam workflow KNIME dijelaskan secara berurutan di bawah.
Raw Data Perhitungan C4.5 Tennis#
Data awal bersumber dari file Excel yang berisi histori kondisi cuaca dan keputusan bermain tenis. Di dalam dataset ini terdapat 14 baris rekaman dengan atribut prediktor: Outlook, Temp., Humidity, dan Wind, serta satu atribut target yaitu Play Tennis.
# |
Outlook |
Temp. |
Humidity |
Wind |
Play Tennis |
|---|---|---|---|---|---|
0 |
Sunny |
Hot |
High |
False |
No |
1 |
Sunny |
Hot |
High |
True |
No |
2 |
Overcast |
Hot |
High |
False |
Yes |
3 |
Rain |
Mild |
High |
False |
Yes |
4 |
Rain |
Cool |
Normal |
False |
Yes |
5 |
Rain |
Cool |
Normal |
True |
No |
6 |
Overcast |
Cool |
Normal |
True |
Yes |
7 |
Sunny |
Mild |
High |
False |
No |
8 |
Sunny |
Cold |
Normal |
False |
Yes |
9 |
Rain |
Mild |
Normal |
False |
Yes |
10 |
Sunny |
Mild |
Normal |
True |
Yes |
11 |
Overcast |
Mild |
High |
True |
Yes |
12 |
Overcast |
Hot |
Normal |
False |
Yes |
13 |
Rain |
Mild |
High |
True |
No |
Impor Data ke KNIME#

Pada KNIME, saya menggunakan node Excel Reader untuk mengimpor file data tersebut. Tampilan di atas adalah hasil pembacaan data. Saya mengecek kembali tipe datanya dan terlihat bahwa semua kolom bertipe String, yang memang sesuai mengingat seluruh variabelnya merupakan data kategorikal.
Pembagian Data dengan Table Partitioner#

Untuk melatih dan menguji model, saya perlu membagi data. Saya menggunakan node Table Partitioner untuk memecah dataset mentah menjadi dua bagian terpisah: data latih (training set) dan data uji (test set). Data latih nantinya akan digunakan oleh algoritma untuk belajar, sedangkan data uji saya pakai untuk mengukur seberapa baik performa model yang sudah jadi.
Pembelajaran Model dengan Decision Tree Learner#

Data latih kemudian saya hubungkan ke node Decision Tree Learner. Di dalam node ini, model membaca pola dari atribut input dan secara rekursif memilih atribut dengan metrik pemisahan terbaik untuk membagi data. Algoritma C4.5 yang digunakan dalam node ini bekerja berdasarkan perhitungan metrik matematis berikut:
Entropy: Mengukur tingkat ketidakpastian atau impurity (ketidakmurnian) dari sekumpulan data. $\(Entropy(S) = - \sum_{i=1}^{c} p_i \log_2 p_i\)\( Di mana \)p_i\( adalah probabilitas kelas \)i\( pada himpunan data \)S$.
Information Gain: Mengukur seberapa besar penurunan Entropy setelah dataset dipisah berdasarkan suatu atribut tertentu. $\(GAIN_{split} = Entropy(Parent) - \sum_{v \in Values(A)} \frac{|S_v|}{|S|} Entropy(S_v)\)$
SplitINFO (Split Information): Nilai yang digunakan untuk mengontrol bias Information Gain terhadap atribut yang memiliki terlalu banyak cabang partisi. $\(SplitINFO = - \sum_{i=1}^{k} \frac{n_i}{n} \log_2 \frac{n_i}{n}\)$ Keterangan:
Parent Node dipisah ke dalam \(k\) partisi.
\(n_i\) = jumlah record (baris data) di dalam partisi ke-\(i\).
\(n\) = jumlah total record pada parent node.
Gain Ratio: Metrik final yang menentukan atribut mana yang paling optimal untuk dijadikan cabang. $\(GainRATIO_{split} = \frac{GAIN_{split}}{SplitINFO}\)$
Node ini menghitung nilai Gain Ratio untuk semua prediktor, lalu atribut dengan Gain Ratio tertinggi akan terpilih sebagai node pemecah (pemisah) utama. Hasil akhir dari pemrosesan node ini berupa model pohon keputusan yang utuh.
Visualisasi Pohon Keputusan#

Untuk mengecek dan memahami logika yang dibuat oleh model, saya menambahkan node Decision Tree View. Node ini menerima output model yang sudah dilatih dan menampilkan grafis struktur pohon keputusannya. Melalui visualisasi interaktif tersebut, saya bisa melakukan penelusuran untuk melihat alasan pemilihan setiap percabangan dari akar (root) sampai ke daun (leaf).
Ringkasan Spesifik Visualisasi Pohon Keputusan: Visualisasi ini merupakan perwujudan langsung dari perhitungan Gain Ratio yang dibahas sebelumnya. Atribut yang menduduki posisi paling atas (Root Node) dipastikan merupakan atribut dengan nilai Gain Ratio paling besar dari seluruh dataset utuh. Cabang-cabang (edges) yang mengarah ke bawah mencerminkan partisi subset data (\(k\) partisi pada rumus SplitINFO). Jika data pada sebuah node turunan sudah seragam atau murni (contoh: semua record adalah “Yes”), maka Entropy menjadi 0 dan node tersebut ditutup sebagai daun keputusan (Leaf Node). Jika belum murni, algoritma menghitung ulang Gain Ratio dari atribut tersisa untuk memecah simpul tersebut lagi.
Prediksi menggunakan Decision Tree Predictor#

Setelah model selesai dilatih, langkah selanjutnya adalah menerapkannya ke data uji. Saya memakai node Decision Tree Predictor dengan memasukkan dua input: model pohon keputusan dan partisi data uji. Node ini akan mencocokkan setiap baris data uji ke dalam aturan model untuk menghasilkan sebuah prediksi baru.
Hasil Prediksi#

Tabel di atas menampilkan keluaran dari node predictor. Terdapat penambahan kolom baru di bagian paling kanan bernama “Prediction (Play Tennis)”. Dari tabel ini, saya bisa langsung mengobservasi perbandingan antara label target yang sebenarnya (Play Tennis) dengan label hasil tebakan algoritma.
Evaluasi Akurasi dengan Scorer#

Sebagai tahap akhir evaluasi, saya melampirkan node Scorer untuk mengukur seberapa akurat prediksi yang dihasilkan. Node ini mengambil data hasil prediksi, lalu membandingkan kolom kelas target asli dengan kelas prediksinya.
Ringkasan Spesifik Hasil Evaluasi: Output dari Scorer memunculkan matriks kebingungan (Confusion Matrix) yang mengategorikan tebakan ke dalam True Positives, True Negatives, False Positives, dan False Negatives. Dari angka-angka spesifik tersebut, model secara otomatis menghitung Accuracy (Akurasi keseluruhan). Tingkat akurasi ini memvalidasi seberapa baik rumus Gain Ratio dalam merumuskan aturan di data latih, dan apakah aturan tersebut cukup kuat (tidak overfitting) saat dites pada baris data uji yang benar-benar baru.