Decision Tree: Cuaca, Angin, dan Bermain

Ham Ramadhan

2026-06-04

1. Data

data <- data.frame(
  No = 1:8,
  Cuaca = c("Cerah", "Cerah", "Mendung", "Hujan", "Hujan", "Mendung", "Cerah", "Hujan"),
  Angin = c("Lemah", "Kuat", "Lemah", "Lemah", "Kuat", "Kuat", "Lemah", "Lemah"),
  Bermain = c("Ya", "Tidak", "Ya", "Ya", "Tidak", "Ya", "Ya", "Ya")
)

data
##   No   Cuaca Angin Bermain
## 1  1   Cerah Lemah      Ya
## 2  2   Cerah  Kuat   Tidak
## 3  3 Mendung Lemah      Ya
## 4  4   Hujan Lemah      Ya
## 5  5   Hujan  Kuat   Tidak
## 6  6 Mendung  Kuat      Ya
## 7  7   Cerah Lemah      Ya
## 8  8   Hujan Lemah      Ya

2. Membuat Model Decision Tree

library(rpart)
library(rpart.plot)

dt_model <- rpart(Bermain ~ Cuaca + Angin,
                  data = data,
                  method = "class",
                  parms = list(split = "information"))

summary(dt_model)
## Call:
## rpart(formula = Bermain ~ Cuaca + Angin, data = data, method = "class", 
##     parms = list(split = "information"))
##   n= 8 
## 
##     CP nsplit rel error xerror xstd
## 1 0.01      0         1      0    0
## 
## Node number 1: 8 observations
##   predicted class=Ya  expected loss=0.25  P(node) =1
##     class counts:     2     6
##    probabilities: 0.250 0.750

3. Visualisasi Pohon Keputusan

rpart.plot(dt_model, type = 2, extra = 104, fallen.leaves = TRUE,
           main = "Decision Tree: Bermain")

4. Prediksi Data Baru

Data yang akan diprediksi:

  • Cuaca = Hujan
  • Angin = Kuat
data_baru <- data.frame(
  Cuaca = factor("Hujan", levels = levels(factor(data$Cuaca))),
  Angin = factor("Kuat", levels = levels(factor(data$Angin)))
)

prediksi <- predict(dt_model, data_baru, type = "class")
prob_prediksi <- predict(dt_model, data_baru, type = "prob")

prediksi
## [1] Ya
## Levels: Tidak Ya
prob_prediksi
##      Tidak   Ya
## [1,]  0.25 0.75

5. Perbandingan dengan Perhitungan Manual

Hasil perhitungan manual menunjukkan bahwa:

  • Entropy total = 0.8113
  • Gain(Cuaca) = 0.1225
  • Gain(Angin) = 0.4669
  • Root node = Angin
  • Prediksi untuk (Cuaca = Hujan, Angin = Kuat) adalah Tidak

Hasil dari software seharusnya sama, yaitu Tidak.

6. Kesimpulan

Hasil manual dan hasil software umumnya sama karena keduanya menggunakan prinsip pemilihan atribut berdasarkan informasi gain.

Jika ada perbedaan kecil, kemungkinan penyebabnya adalah:

  1. pembulatan angka saat menghitung entropy dan gain,
  2. aturan pemotongan pohon pada software,
  3. perbedaan detail implementasi algoritma pada paket yang digunakan.

Namun, untuk data sederhana ini, hasil akhir prediksi tetap sama.