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.
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.
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.
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.
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.
\[ Entropy(Cerah)=0.918 \]
\[ Entropy(Mendung)=0 \]
\[ Entropy(Hujan)=0.918 \]
\[ Entropy(Cuaca)=\frac{3}{8}(0.918)+\frac{2}{8}(0)+\frac{3}{8}(0.918) \]
\[ Entropy(Cuaca)=0.6885 \]
\[ 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.
\[ Entropy(Lemah)=0 \]
\[ Entropy(Kuat)=0.918 \]
\[ Entropy(Angin)=\frac{5}{8}(0)+\frac{3}{8}(0.918) \]
\[ Entropy(Angin)=0.344 \]
\[ 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.
Perbandingan gain:
Karena gain terbesar dimiliki oleh variabel Angin, maka:
\[ Root\ Node = Angin \]
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.
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.
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.
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.
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.
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.