Decision Tree merupakan metode klasifikasi yang digunakan untuk membentuk aturan keputusan berdasarkan variabel prediktor tertentu. Pada analisis ini digunakan variabel Cuaca dan Angin untuk memprediksi keputusan Bermain menggunakan pendekatan entropy dan information gain.


Import Library

library(rpart)
## Warning: package 'rpart' was built under R version 4.4.3
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.4.3

Library rpart digunakan untuk membangun model Decision Tree, sedangkan rpart.plot digunakan untuk membantu visualisasi model.


Membuat Dataset

data <- data.frame(
  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
##     Cuaca Angin Bermain
## 1   Cerah Lemah      Ya
## 2   Cerah  Kuat   Tidak
## 3 Mendung Lemah      Ya
## 4   Hujan Lemah      Ya
## 5   Hujan  Kuat   Tidak
## 6 Mendung  Kuat      Ya
## 7   Cerah Lemah      Ya
## 8   Hujan Lemah      Ya

Dataset terdiri dari 8 observasi dengan variabel target Bermain serta variabel prediktor Cuaca dan Angin.


Mengubah Variabel Menjadi Faktor

data$Cuaca <- as.factor(data$Cuaca)
data$Angin <- as.factor(data$Angin)
data$Bermain <- as.factor(data$Bermain)

str(data)
## 'data.frame':    8 obs. of  3 variables:
##  $ Cuaca  : Factor w/ 3 levels "Cerah","Hujan",..: 1 1 3 2 2 3 1 2
##  $ Angin  : Factor w/ 2 levels "Kuat","Lemah": 2 1 2 2 1 1 2 2
##  $ Bermain: Factor w/ 2 levels "Tidak","Ya": 2 1 2 2 1 2 2 2

Seluruh variabel telah bertipe faktor sehingga dapat digunakan dalam pembentukan model klasifikasi.


Perhitungan Manual

Entropy Total

Jumlah data: - Ya = 6 - Tidak = 2

\[ Entropy(S)=-(0.75\log_2 0.75)-(0.25\log_2 0.25) \]

\[ Entropy(S)=0.811 \]

Nilai entropy total sebesar 0.811 menunjukkan bahwa data masih memiliki ketidakpastian sehingga diperlukan proses pemisahan data.


Information Gain Variabel Cuaca

Entropy Cuaca

\[ Entropy(Cerah)=0.918 \]

\[ Entropy(Mendung)=0 \]

\[ Entropy(Hujan)=0.918 \]

Entropy Atribut Cuaca

\[ Entropy(Cuaca)=\frac{3}{8}(0.918)+\frac{2}{8}(0)+\frac{3}{8}(0.918) \]

\[ Entropy(Cuaca)=0.6885 \]

Gain Cuaca

\[ Gain(Cuaca)=0.811-0.6885 \]

\[ Gain(Cuaca)=0.1225 \]

Nilai gain Cuaca sebesar 0.1225 menunjukkan bahwa variabel Cuaca mampu mengurangi ketidakpastian data, namun pengaruhnya masih relatif kecil.


Information Gain Variabel Angin

Entropy Angin

\[ Entropy(Lemah)=0 \]

\[ Entropy(Kuat)=0.918 \]

Entropy Atribut Angin

\[ Entropy(Angin)=\frac{5}{8}(0)+\frac{3}{8}(0.918) \]

\[ Entropy(Angin)=0.344 \]

Gain Angin

\[ Gain(Angin)=0.811-0.344 \]

\[ Gain(Angin)=0.467 \]

Nilai gain Angin lebih besar dibandingkan gain Cuaca sehingga variabel Angin dipilih sebagai root node.


Penentuan Root Node

Perbandingan gain:

Karena gain terbesar dimiliki oleh variabel Angin, maka:

\[ Root\ Node = Angin \]


Perhitungan Menggunakan Software R

Membangun Model Decision Tree

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

model
## n= 8 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 8 2 Ya (0.2500000 0.7500000) *

Output software menunjukkan bahwa variabel Angin menjadi root node dalam pembentukan pohon keputusan. Hasil tersebut sesuai dengan hasil perhitungan manual sebelumnya.


Menampilkan Ringkasan Model

summary(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

Ringkasan model menunjukkan proses pembentukan pohon keputusan berdasarkan information gain. Variabel dengan pengaruh terbesar dipilih terlebih dahulu sebagai akar pohon keputusan.


Visualisasi Pohon Keputusan

rpart.plot(model)

## 
##                  Angin
##                 /     \
##            Lemah      Kuat
##               |          |
##              Ya       Tidak

Pohon keputusan menunjukkan bahwa: - Jika Angin = Lemah, maka hasil keputusan adalah Ya - Jika Angin = Kuat, maka hasil keputusan adalah Tidak

Variabel Angin menjadi faktor utama dalam menentukan keputusan bermain.


Prediksi Data Baru

baru <- data.frame(
  Cuaca = "Hujan",
  Angin = "Kuat"
)

predict(model, baru, type = "class")
## [1] Ya
## Levels: Tidak Ya

Data baru dengan kondisi: - Cuaca = Hujan - Angin = Kuat

menghasilkan prediksi Tidak. Hal ini menunjukkan bahwa aktivitas bermain diprediksi tidak dilakukan pada kondisi tersebut.

Hasil prediksi software sama dengan hasil perhitungan manual.


Perbandingan Hasil Manual dan Software

Hasil Manual

  • Root node = Angin
  • Prediksi data baru = Tidak

Hasil Software

  • Root node = Angin
  • Prediksi data baru = Tidak

Hasil manual dan software menunjukkan hasil yang sama karena keduanya menggunakan metode entropy dan information gain dalam pembentukan Decision Tree.

Jika terjadi perbedaan hasil, kemungkinan penyebabnya adalah: - pembulatan nilai entropy, - parameter default software, - atau proses splitting otomatis pada algoritma.


Kesimpulan

Berdasarkan hasil analisis, variabel Angin memiliki information gain terbesar sehingga dipilih sebagai root node pada Decision Tree. Hasil perhitungan manual dan software menunjukkan hasil yang konsisten, yaitu prediksi data baru menghasilkan keputusan Tidak.