....md - candrayu/SistemOperasiGenap24-25 GitHub Wiki
🌲 Perhitungan Manual Random Forest
📊 Contoh Dataset Sederhana
Misalnya kita punya data berikut untuk memprediksi apakah seseorang akan beli produk atau tidak:
| Umur | Penghasilan | Beli |
|---|---|---|
| Muda | Rendah | Tidak |
| Muda | Tinggi | Tidak |
| Paruh | Rendah | Ya |
| Tua | Sedang | Ya |
| Tua | Tinggi | Ya |
| Tua | Rendah | Tidak |
| Paruh | Tinggi | Ya |
Jumlah total data S = 7
Jumlah "Ya" = 4, "Tidak" = 3
1️⃣ Entropy(S) - Sebelum Split
Rumus:
Entropy(S) = -p_ya * log2(p_ya) - p_tidak * log2(p_tidak)
Perhitungan:
p_ya = 4/7 ≈ 0.571 p_tidak = 3/7 ≈ 0.429
Entropy(S) ≈ -0.571 * log2(0.571) - 0.429 * log2(0.429) ≈ -0.571 * (-0.807) - 0.429 * (-1.222) ≈ 0.461 + 0.524 ≈ 0.985
2️⃣ Split Berdasarkan Umur
Data Per Umur:
- Muda (2 data): Tidak, Tidak → Entropy = 0
- Paruh (2 data): Ya, Ya → Entropy = 0
- Tua (3 data): Ya, Ya, Tidak → 2 Ya, 1 Tidak
Entropy(Tua):
p_ya = 2/3 ≈ 0.667 p_tidak = 1/3 ≈ 0.333
Entropy(Tua) = -0.667 * log2(0.667) - 0.333 * log2(0.333) ≈ -0.667 * (-0.585) - 0.333 * (-1.585) ≈ 0.390 + 0.528 ≈ 0.918
3️⃣ Information Gain dari Atribut Umur
Rumus:
Gain(S, Umur) = Entropy(S) - ∑(|Sv|/|S|) * Entropy(Sv)
Perhitungan:
Gain(S, Umur) = 0.985 - [(2/7)*0 + (2/7)*0 + (3/7)*0.918] = 0.985 - (0 + 0 + 0.393) = 0.592
4️⃣ Gini Index S (Sebelum Split)
Rumus:
Gini(S) = 1 - (p_ya² + p_tidak²)
Perhitungan:
p_ya = 4/7 ≈ 0.571 p_tidak = 3/7 ≈ 0.429
Gini(S) = 1 - (0.571² + 0.429²) = 1 - (0.327 + 0.184) = 1 - 0.510 = 0.49
✅ Kesimpulan:
- Entropy(S) = 0.985
- Gain dari atribut Umur = 0.592
- Gini(S) = 0.49