Decision tree membelah data selangkah demi selangkah lewat pertanyaan biner (“penghasilan ≤ threshold?”), dan pilihan threshold itu bukan tebakan — ia dihitung lewat kriteria yang disebut Gini impurity. Widget ini memakai data 10 nasabah bank (penghasilan dan rasio utang) untuk memperlihatkan bagaimana satu angka Gini menentukan split mana yang “terbaik” secara matematis.
Cara Pakai
Pilih fitur split lewat tombol Penghasilan atau Rasio utang, lalu geser slider Threshold split. Diagram pencar di kiri menunjukkan 10 nasabah (merah = gagal bayar, hijau = lunas) dengan garis putus-putus sebagai batas split; diagram pohon di kanan menampilkan Gini impurity node akar dan kedua node anak hasil split — makin dekat ke 0, makin “murni” (bersih) node itu terhadap satu kelas. Klik ⌖ Optimum untuk melihat threshold dengan Gini tertimbang paling rendah pada fitur yang sedang dipilih.
Rumus Kunci
Gini impurity satu node (untuk kasus dua kelas, proporsi $p_1$ dan $p_0 = 1-p_1$):
$$\text{Gini}(S) = 1 - p_1^2 - p_0^2$$Setelah split menjadi kelompok kiri ($S_L$, berisi $n_L$ data) dan kanan ($S_R$, berisi $n_R$ data) dari total $n = n_L + n_R$, kualitas split diukur lewat Gini tertimbang:
$$\text{Gini}_{\text{split}} = \frac{n_L}{n}\,\text{Gini}(S_L) + \frac{n_R}{n}\,\text{Gini}(S_R)$$Decision tree memilih fitur dan threshold yang meminimalkan $\text{Gini}_{\text{split}}$ dibandingkan $\text{Gini}(S)$ pada node induk (akar).
Contoh Angka
10 nasabah (x = penghasilan juta Rp/bulan, label 1 = gagal bayar, 0 = lunas): (2,5; 1), (3,0; 1), (3,5; 1), (4,5; 1), (5,5; 0), (6,0; 1), (7,0; 0), (8,0; 0), (9,5; 0), (11,0; 0).
Langkah 1 — Gini akar (sebelum split). Dari 10 nasabah: 5 berlabel 1, 5 berlabel 0 → $p_1 = 0{,}5$, $p_0 = 0{,}5$.
$$\text{Gini}(S) = 1 - 0{,}5^2 - 0{,}5^2 = 1 - 0{,}25 - 0{,}25 = 0{,}50$$Langkah 2 — split di threshold = 4,0 juta pada fitur Penghasilan.
Kelompok kiri (penghasilan ≤ 4,0): nasabah (2,5), (3,0), (3,5) — semuanya berlabel 1 (gagal bayar). $n_L = 3$, murni:
$$\text{Gini}(S_L) = 1 - 1^2 - 0^2 = 0$$Kelompok kanan (penghasilan > 4,0): 7 nasabah sisanya, dengan 2 berlabel 1 dan 5 berlabel 0 → $p_1 = 2/7$, $p_0 = 5/7$:
$$\text{Gini}(S_R) = 1 - \left(\frac{2}{7}\right)^2 - \left(\frac{5}{7}\right)^2 = 1 - \frac{4}{49} - \frac{25}{49} = \frac{20}{49} \approx 0{,}408$$Langkah 3 — Gini tertimbang:
$$\text{Gini}_{\text{split}} = \frac{3}{10}(0) + \frac{7}{10}(0{,}408) = 0{,}286$$Gini turun dari 0,50 (akar) menjadi 0,286 setelah split — kelompok kiri sudah murni sepenuhnya. Tapi ini belum tentu split terbaik: menguji threshold = 5,0 juta (antara nasabah 4,5 dan 5,5) memberi kelompok kiri murni berisi 4 nasabah dan kelompok kanan dengan Gini $1-(1/6)^2-(5/6)^2 \approx 0{,}278$, menghasilkan Gini tertimbang $\frac{4}{10}(0)+\frac{6}{10}(0{,}278) \approx 0{,}167$ — lebih rendah dari 0,286. Inilah kerja algoritma decision tree: menguji semua kandidat threshold dan memilih yang Gini tertimbangnya paling kecil.