Algoritma C4.5
Pengertian Algoritma C4.5
Algoritma C4.5 merupakan algoritma yang digunakan untuk membentuk pohon keputusan (Decision Tree). Algoritma C4.5 menggunakan klasifikasi data dengan teknik pohon keputusan yang dapat mengolah data numerik (kontinu) dan diskrit. Algoritma C4.5 adalah membuat suatu klasifikasi dengan menghasilkan sebuah pola dan polanya dapat digunakan untuk prediksi (kuliah teknokrat, 2020). Menurut Quinlan algoritma C4.5 adalah algoritma yang paling terkenal (Pramudiono, 2003). Algoritma C4.5 merupakan pengembangan dari algoritma ID3, Proses pada pohon keputusan adalah mengubah bentuk data (tabel) menjadi model pohon.
Tahapan Algoritma C4.5
Siapkan Dataset
Menghitung Entropy Total di Dataset.
\(\operatorname{Entropy}(\mathrm{S})=\sum_{i=1}^n-p i \times \log _2 p i\)
Menghitung Entropy, Gain, SplitInfo, dan GainRatio untuk masing-masing label.
Mengitung Entropy
\(\operatorname{Entropy}(\mathrm{S})=\sum_{i=1}^n-p i \times \log _2 p i\)
Menghitung Gain
\(\operatorname{Gain}(S, A)=\operatorname{Entropy}(S)-\sum_{i=1}^n \frac{\mid \text { Si } \mid}{|S|} \times \operatorname{Entropy}(\) Si \()\)
Menghitung SplitInfo
\(\operatorname{SplitInfo}(S, A)=\sum_{i=1}^n-\frac{\left|S_i\right|}{|S|} \log _2 \frac{\left|S_i\right|}{|S|}\)
Menghiung GainRatio
\(GainRatio =\frac{\text { Gain }}{\text { SplitInfo }}\)
Mencari nilai GainRatio tertinggi dan membuat pohon keputusan sementara.
Membuat Node selanjutnya dengan mengulangi langkah-langkah diatas hingga pohon keputusan selesai dan dapat dibuat kesimpulan.
Eksperimen Algoritma C4.5
Library
library(caret)## Loading required package: ggplot2
## Loading required package: lattice
library(rpart.plot)## Loading required package: rpart
Import Dataset
library(readxl)
Data_penguin <- read_excel("C:/Users/WINDOWS 10/Downloads/Data penguin.xlsx")
View(Data_penguin)summary(Data_penguin)## Species Culmen.Length Culmen.Depth Flipper.Length
## Length:342 Min. :32.10 Min. :13.10 Min. :172.0
## Class :character 1st Qu.:39.23 1st Qu.:15.60 1st Qu.:190.0
## Mode :character Median :44.45 Median :17.30 Median :197.0
## Mean :43.92 Mean :17.15 Mean :200.9
## 3rd Qu.:48.50 3rd Qu.:18.70 3rd Qu.:213.0
## Max. :59.60 Max. :21.50 Max. :231.0
## Body.Mass
## Min. :2700
## 1st Qu.:3550
## Median :4050
## Mean :4202
## 3rd Qu.:4750
## Max. :6300
str(Data_penguin)## tibble [342 × 5] (S3: tbl_df/tbl/data.frame)
## $ Species : chr [1:342] "Adelie Penguin (Pygoscelis adeliae)" "Adelie Penguin (Pygoscelis adeliae)" "Adelie Penguin (Pygoscelis adeliae)" "Adelie Penguin (Pygoscelis adeliae)" ...
## $ Culmen.Length : num [1:342] 39.1 39.5 40.3 36.7 39.3 38.9 39.2 34.1 42 37.8 ...
## $ Culmen.Depth : num [1:342] 18.7 17.4 18 19.3 20.6 17.8 19.6 18.1 20.2 17.1 ...
## $ Flipper.Length: num [1:342] 181 186 195 193 190 181 195 193 190 186 ...
## $ Body.Mass : num [1:342] 3750 3800 3250 3450 3650 ...
set.seed(3033)
intrain <- createDataPartition(y = Data_penguin$Species, p= 0.7, list = FALSE)
training <- Data_penguin[intrain,]
testing <- Data_penguin[-intrain,]
dim(training);dim(testing)## [1] 241 5
## [1] 101 5
Pohon Keputusan
trctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 3)
set.seed(3333)
dtree_fit_info <- train(Species ~., data = Data_penguin, method = "rpart",
parms = list(split = "information"),
trControl=trctrl,
tuneLength = 10)
prp(dtree_fit_info$finalModel, box.palette="Reds", tweak=1.2)set.seed(3333)
dtree_fit_gini <- train(Species ~., data = Data_penguin, method = "rpart",
parms = list(split = "gini"),
trControl=trctrl,
tuneLength = 10)
prp(dtree_fit_gini$finalModel,box.palette = "Blues", tweak = 1.2)library(rpart)
library(rpart.plot)
tress<-rpart(Species ~., data = Data_penguin, method = 'class' )
rpart.plot(tress)