Dalam machine learning sering kita mendengar tentang metode Random Forest yang digunakan untuk menyelesaikan permasalahan. Metode Random Forest merupakan salah satu metode dalam Decision Tree. Decision Tree atau pohon pengambil keputusan adalah sebuah diagram alir yang berbentuk seperti pohon yang memiliki sebuah root node yang digunakan untuk mengumpulkan data, Sebuah inner node yang berada pada root node yang berisi tentang pertanyaan tentang data dan sebuah leaf node yang digunakan untuk memecahkan masalah serta membuat keputusan. Decision tree mengklasifikasikan suatu sampel data yang belum diketahui kelasnya kedalam kelas – kelas yang ada. Penggunaan decision tree agar dapat menghindari overfitting pada sebuah set data saat mencapai akurasi yang maksimum.
data <- read.csv('winequality-red.csv', sep=";",header = TRUE)
data$quality <- ifelse(data$quality <= 6, 0, 1)
#model random forest
library(randomForest)
## Warning: package 'randomForest' was built under R version 4.0.5
## randomForest 4.6-14
## Type rfNews() to see new features/changes/bug fixes.
Berikut ini ilustrasi penerapannya pada data winequality-red.csv yang memuat informasi karakteristik 1599 anggur merah di Portugas, beserta dengan hasil penilaian kualitasnya menurut pakar wine. Data diperoleh dari UCI Machine Learning Repository, pada laman https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/.
Nilai kualitas yang semula berada pada selang 0-10 dikelompokkan terlbeih dahulu menjadi dua kelas yaitu yang nilainya kurang dari atau sama dengan 6 masuk dalam kelas 0 (kurang), selainnya dimasukkan pada kelas 1 (baik).
Pada program di bawah ini, replikasi bootstrap yang dilakukan adalah 500 kali, yang berarti ada 500 kali pengambilan sampel ulang dari data dan 500 kali pembuatan pohon klasifikasi dari setiap sampel tersebut. Pohon yang dibuat sedemikian rupa dengan setting mtry=3 yang berarti bahwa pada proses splitting pemebntukan pohon klasifikasinya, hanya 3 variabel secara acak yang dicek/dibandingkan untuk menentukan splitting terbaik.
model_rf <- randomForest(as.factor(quality) ~ .,
data=data,
ntree = 1000, mtry=3)
model_rf
##
## Call:
## randomForest(formula = as.factor(quality) ~ ., data = data, ntree = 1000, mtry = 3)
## Type of random forest: classification
## Number of trees: 1000
## No. of variables tried at each split: 3
##
## OOB estimate of error rate: 8.07%
## Confusion matrix:
## 0 1 class.error
## 0 1350 32 0.02315485
## 1 97 120 0.44700461
Terlihat dari hasil di atas bahwa berdasarkan amatan OOB (out-of-bag), tingkat kesalahan klasifikasi yang diperoleh adalah sekitar 8.2% atau akurasi sebesar 91.8%.
#MELAKUKAN PREDIKSI
Jika model sudah didapatkan, maka melakukan prediksi dapat dilakukan dengan mudah menggunakan fungsi predict() terhadap amatan yang tersimpan pada suatu dataframe.
Berikut ini ilustrasi proses prediksi kualitas anggur merah dengan karakteristik sebagai berikut:
1 - fixed acidity = 8.1
2 - volatile acidity = 0.45
3 - citric acid = 0.10
4 - residual sugar = 2.1
5 - chlorides = 0.080
6 - free sulfur dioxide = 14
7 - total sulfur dioxide = 43
8 - density = 0.9981
9 - pH = 4.50
10 - sulphates = 0.64
11 - alcohol = 10.3
Hasil prediksi menunjukkan bahwa kualitas anggur tersebut tergolong kurang (kategori 0).
anggurbaru <- data.frame(
fixed.acidity = 8.1,
volatile.acidity = 0.45,
citric.acid = 0.10,
residual.sugar = 2.1,
chlorides = 0.080,
free.sulfur.dioxide = 14,
total.sulfur.dioxide = 43,
density = 0.9981,
pH = 4.50,
sulphates = 0.64,
alcohol = 10.3)
prediksi <- predict(model_rf, newdata=anggurbaru)
prediksi
## 1
## 0
## Levels: 0 1