Desicion Tree dengan R
Assalamualaikum semuanyaa.. ❤
kali ini kita akan melakukan klasifikasi desicion tree dengan software R.
sebelumnya udah pada tau belum sih apa itu desicion tree ??
Konsep dari decision tree adalah mengubah data menjadi aturan-aturan keputusan. Manfaat utama dari penggunaan decision tree adalah kemampuannya untuk mem-break down proses pengambilan keputusan yang kompleks menjadi lebih simple, sehingga pengambil keputusan akan lebih menginterpretasikan solusi dari permasalahan.
Decision tree juga berguna untuk mengeksplorasi data, menemukan hubungan tersembunyi antara sejumlah calon variabel input dengan sebuah variabel target. Decision tree memadukan antara eksplorasi data dan pemodelan, sehingga sangat bagus sebagai langkah awal dalam proses pemodelan.
Nama lain dari decision tree adalah CART (Classification and Regression Tree). Dimana metode ini merupakan gabungan dari dua jenis pohon, yaitu classification tree dan juga regression tree.
Jika variabel dependen yang dimiliki bertipe kategorik maka CART menghasilkan pohon klasifikasi (classification trees). Sedangkan jika variabel dependen yang dimiliki bertipe kontinu atau numerik maka CART menghasilkan pohon regresi (regression trees).
contoh desicion tree
contoh regression tree
okee langsung ke practice yaa
jadi kali ini kita akan menggunakan data hujan dari kaggle. jadi tinggal buka web kaggle kemudian cari rain in australia. Tampilannya akan terlihat seperti berikut
kemudian klik Download dan datanya akan tersimpan dalam bentuk csv.
kemudian kita buka Rnya dan install packages berikut
install.packages("party")
library(party)
kemudian kita copy sintaks berikut untuk input data ke R
data<- read.csv ("C:/Users/Asus/Documents/Erina Tri Aptami/Semester 5/BIML/desicion tree/weatherAUS.csv")
View(data)
str(data)
kemudian hasil ouputnya seperti berikut
okeyy dapat dilihat dari hasil output diatas dapat dilihat bahwa tipe datanya masih terdapat yang chr (char), itu karena data yang kita gunakan masih mengandung nilai NA.
dan datanya akan terlihat seperti berikut
kemudian copy sintaks berikut
rawdata <- data
for (i in ncol(rawdata)) {
rawdata[is.na(rawdata[,1]) ,i] <- mean(rawdata[,1], na.rm=T)
}View(rawdata)
dan hasil outputnya seperti berikut
terdapat tulisan warning pada output yang kita miliki, karena data yang kita gunakan masih terdapat data yang NA.
kemudian copy sintaks berikut untuk menghapus nilai NA
rawdata2 <- rawdata
rawdata2 <- na.omit(rawdata)
View(rawdata2)
dan datanya akan terlihat seperti berikut
selanjutnya kita akan membuat desicion treenya dengan packages
sebelumnya install packages berikut
install.packages(dplyr)
library(dplyr)
notes: jika sudah install packages tersebut, langsung aktifkan packagesnya dengan perintah library
okee, selanjutnya silahkan copy sintaks berikut
rawdata2 <- rawdata2 %>%
mutate(across(where(is.character), as.factor))str(rawdata2)
dan hasil outputnya akan terlihat seperti berikut.
dari hasil output diatas dapat dilihat lagi bahwa tipe data chr nya telah berganti menjadi factor.
okee selanjutnya kita akan membuat membagi perbandingan datanya yaitu menjadi data training dan data testing dengan bobot 80% dan 20%.
silahkan copy sintaks berikut
set.seed(1234)
dt <- sample(2, nrow(rawdata2), replace = TRUE, prob = c(0.8, 0.2))trainData <- rawdata2[dt ==1,]
testData <- rawdata2[dt==2,]
selanjutnya kita akan membuat model beserta dengan plotnya dengan sintaks berikut
predictor <- RainTomorrow~MinTemp+MaxTemp+Rainfall+Evaporation+Sunshine+WindGustDir+WindGustSpeed+WindDir9am+WindDir3pm+WindSpeed9am+WindSpeed3pm+Humidity9am+Humidity3pm+Pressure9am+Pressure3pm+Cloud9am+Cloud3pm+Temp9am+Temp3pm+RainToday
tree <- ctree(predictor, data = trainData)
tree
plot(tree)
notes: isi pada variabel predictor tersebut merupakan variabel kolom dari data yang kita gunakan dengan variabel independentnya adalah RainTomorrow
dan hasil output variabel treenya terlihat seperti berikut
okee dari hasil output diatas dapat dilihat bahwa nilai yang paling tinggi adalah pada variabel Humidity 3 pm. yang berati bahwa terjadinya hujan di autralia paling sering disebabkan oleh kelembapan pada pukul 3 sore.
kemudian hasil plotnya akan terlihat seperti ini
nahh temen-temen kalo ketemu hasil output plotnya seperti ini, ini bukan berarti error yaa melainkan data yang kita gunakan sangatlahh banyakk sehingga plotnya akan terlihat seperti itu. kita juga dapat melihat bahwa yang paling atas adalah Humidity 3 pm sama dengan hasil output sebelumnya
kemudian kita akan memprediksi data testing untuk melihat akurasinya dengan sintaks sebagai berikut
testPred <- predict(tree, newdata = testData)
table(testPred, testData$RainTomorrow)
hasil outputnya akan terlihat seperti berikut
okeee untuk melihat akurasinya copy sintaks berikut
confusionMatrix(data = testPred, reference = testData$RainTomorrow)
notes: untuk menggunakan fungsi confusionMatrix, install packages “caret” terlebih dahulu
okee dan hasilnya akan terlihat seperti berikut
dari hasil output diatas dapat dilihat bahwa nilai akurasinya sebesar 0.8405 atau 84.05%. Sedangkan kappa diatas adalah untuk melihat kesalahan prediksi.
oiyaaa kalo kalian pengen liat plotnya lebih sedikit atau skit 80% dari data kita gunakan sintaks berikut
cobadata <- rawdata2[c(1:204),]
tail(cobadata)hasilakhir <- ctree (RainTomorrow~MinTemp+MaxTemp+Rainfall+Evaporation+Sunshine+WindGustDir+WindGustSpeed+WindDir9am+WindDir3pm+WindSpeed9am+WindSpeed3pm+Humidity9am+Humidity3pm+Pressure9am+Pressure3pm+Cloud9am+Cloud3pm+Temp9am+Temp3pm+RainToday, data = cobadata)
plot(hasilakhir)
dannnnnn hasill outputnya akan terlihat seperti iniii
jauh lebihh dimengerti , lebih singkatt, dan lebih rapih dari yang sebelumnyaa yaaa..
okeee sekiann duluu materi singkat dan practice kita kali ini
semoga bermanfaat..
see u ❤