Analisis Bayesian dengan menggunakan Kumpulan data United States Congressional Voting 1984 (HouseVotes84) diambil dari UCI Repository Of Machine Learning Database melalui mlbench package. Data meliputi 435 observasi dengan 17 variabel. 1 variabel class (demokrat, republik) dan 16 suara (ya, tidak) pada topik yang berbeda.
Untuk langkah pertama dalam proses analisis United Stats Congressional voting 1984 menggunakan bayesian dengan mengimport library
library(e1071)
## Warning: package 'e1071' was built under R version 4.0.4
library(mlbench)
## Warning: package 'mlbench' was built under R version 4.0.4
library(ggplot2)
library(caret)
## Warning: package 'caret' was built under R version 4.0.4
## Loading required package: lattice
library(gmodels)
## Warning: package 'gmodels' was built under R version 4.0.4
Selanjutnya mengambil data HouseVotes84
data(HouseVotes84)
Menampilkan data dari HouseVotes84
str(HouseVotes84)
## 'data.frame': 435 obs. of 17 variables:
## $ Class: Factor w/ 2 levels "democrat","republican": 2 2 1 1 1 1 1 2 2 1 ...
## $ V1 : Factor w/ 2 levels "n","y": 1 1 NA 1 2 1 1 1 1 2 ...
## $ V2 : Factor w/ 2 levels "n","y": 2 2 2 2 2 2 2 2 2 2 ...
## $ V3 : Factor w/ 2 levels "n","y": 1 1 2 2 2 2 1 1 1 2 ...
## $ V4 : Factor w/ 2 levels "n","y": 2 2 NA 1 1 1 2 2 2 1 ...
## $ V5 : Factor w/ 2 levels "n","y": 2 2 2 NA 2 2 2 2 2 1 ...
## $ V6 : Factor w/ 2 levels "n","y": 2 2 2 2 2 2 2 2 2 1 ...
## $ V7 : Factor w/ 2 levels "n","y": 1 1 1 1 1 1 1 1 1 2 ...
## $ V8 : Factor w/ 2 levels "n","y": 1 1 1 1 1 1 1 1 1 2 ...
## $ V9 : Factor w/ 2 levels "n","y": 1 1 1 1 1 1 1 1 1 2 ...
## $ V10 : Factor w/ 2 levels "n","y": 2 1 1 1 1 1 1 1 1 1 ...
## $ V11 : Factor w/ 2 levels "n","y": NA 1 2 2 2 1 1 1 1 1 ...
## $ V12 : Factor w/ 2 levels "n","y": 2 2 1 1 NA 1 1 1 2 1 ...
## $ V13 : Factor w/ 2 levels "n","y": 2 2 2 2 2 2 NA 2 2 1 ...
## $ V14 : Factor w/ 2 levels "n","y": 2 2 2 1 2 2 2 2 2 1 ...
## $ V15 : Factor w/ 2 levels "n","y": 1 1 1 1 2 2 2 NA 1 NA ...
## $ V16 : Factor w/ 2 levels "n","y": 2 NA 1 2 2 2 2 2 2 NA ...
Menampilkan ringkasan jumlah kelompok HouseVotes84 dari kolom democrat dan republican
summary(HouseVotes84$Class)
## democrat republican
## 267 168
Menampilkan ringkasan dari data HouseVotes84
summary(HouseVotes84)
## Class V1 V2 V3 V4 V5
## democrat :267 n :236 n :192 n :171 n :247 n :208
## republican:168 y :187 y :195 y :253 y :177 y :212
## NA's: 12 NA's: 48 NA's: 11 NA's: 11 NA's: 15
## V6 V7 V8 V9 V10 V11 V12
## n :152 n :182 n :178 n :206 n :212 n :264 n :233
## y :272 y :239 y :242 y :207 y :216 y :150 y :171
## NA's: 11 NA's: 14 NA's: 15 NA's: 22 NA's: 7 NA's: 21 NA's: 31
## V13 V14 V15 V16
## n :201 n :170 n :233 n : 62
## y :209 y :248 y :174 y :269
## NA's: 25 NA's: 17 NA's: 28 NA's:104
Dari data diatas ada data yang hilang dengan keterangan NA. Maka akan dihapus baris dengan keterangan NA.
head(is.na(HouseVotes84))
## Class V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
## 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
## 2 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 3 FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 4 FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## 5 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## 6 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## V13 V14 V15 V16
## 1 FALSE FALSE FALSE FALSE
## 2 FALSE FALSE FALSE TRUE
## 3 FALSE FALSE FALSE FALSE
## 4 FALSE FALSE FALSE FALSE
## 5 FALSE FALSE FALSE FALSE
## 6 FALSE FALSE FALSE FALSE
Menampilkan dalam bentuk grafik, dari hasil data yang sudah dibersihkan.
CleanDataset <- na.omit(HouseVotes84)
qplot(Class, data=CleanDataset, geom = "bar") + theme(axis.text.x = element_text(angle = 90, hjust = 1))
Pada pengujian kali ini, dilakukan pembagian 2 data menjadi data training dan data testing. dengan 75% untuk data training, dan sisanya data testing.
hv_train<-HouseVotes84[1:326,-1]
hv_test<-HouseVotes84[327:435,-1]
hv_train_labels <- HouseVotes84[1:326, ]$Class
hv_test_labels<- HouseVotes84[327:435, ]$Class
hv_classifier <- naiveBayes(hv_train, hv_train_labels)
Lalu saya akan menyimpan prediksi Naive Bayes di hv_test_pred dan kemudian membandingkannya dengan label yang sebenarnya.
hv_test_pred <- predict(hv_classifier, hv_test)
head(hv_test_pred)
## [1] democrat republican democrat democrat republican democrat
## Levels: democrat republican
Kemudian saya melakukan analisis tabulasi silang (crosstable) untuk melihat hubungan antar variable.
CrossTable(hv_test_pred, hv_test_labels,
prop.chisq = FALSE, prop.t = FALSE, prop.r = FALSE,
dnn = c('predicted', 'actual'))
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Col Total |
## |-------------------------|
##
##
## Total Observations in Table: 109
##
##
## | actual
## predicted | democrat | republican | Row Total |
## -------------|------------|------------|------------|
## democrat | 55 | 3 | 58 |
## | 0.833 | 0.070 | |
## -------------|------------|------------|------------|
## republican | 11 | 40 | 51 |
## | 0.167 | 0.930 | |
## -------------|------------|------------|------------|
## Column Total | 66 | 43 | 109 |
## | 0.606 | 0.394 | |
## -------------|------------|------------|------------|
##
##
Dari hasil diatas memiliki Tingkat akurasi keseluruhan model adalah 87%. 3 suara demokrat diidentifikasi sebagai republik dan 11 suara republik diidentifikasi sebagai demokrat.
Menampilakn data dari hv_test_pred
hv_test_pred
## [1] democrat republican democrat democrat republican democrat
## [7] democrat democrat democrat republican democrat democrat
## [13] democrat republican republican democrat democrat republican
## [19] democrat republican republican republican democrat republican
## [25] democrat republican democrat republican democrat democrat
## [31] republican republican democrat republican democrat democrat
## [37] democrat republican republican republican democrat democrat
## [43] democrat republican democrat democrat republican republican
## [49] republican republican democrat republican republican republican
## [55] democrat democrat republican democrat republican republican
## [61] democrat democrat republican democrat republican democrat
## [67] republican democrat democrat democrat democrat republican
## [73] democrat republican republican republican democrat republican
## [79] republican republican democrat republican democrat republican
## [85] republican democrat republican republican democrat democrat
## [91] republican democrat democrat democrat republican democrat
## [97] democrat democrat democrat democrat democrat republican
## [103] democrat democrat republican democrat republican republican
## [109] republican
## Levels: democrat republican
Selanjutnya dalam meningkatkan model kinerja yaitu dengan mengatur parameter Laplace ke model untuk memeriksa apakah itu dapat meningkatkan akurasi?
hv_classifier2 <- naiveBayes(hv_train, hv_train_labels, laplace = 3)
hv_test_pred2 <- predict(hv_classifier2, hv_test)
CrossTable(hv_test_pred2, hv_test_labels,
prop.chisq = FALSE, prop.t = FALSE, prop.r = FALSE,
dnn = c('predicted', 'actual'))
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Col Total |
## |-------------------------|
##
##
## Total Observations in Table: 109
##
##
## | actual
## predicted | democrat | republican | Row Total |
## -------------|------------|------------|------------|
## democrat | 55 | 3 | 58 |
## | 0.833 | 0.070 | |
## -------------|------------|------------|------------|
## republican | 11 | 40 | 51 |
## | 0.167 | 0.930 | |
## -------------|------------|------------|------------|
## Column Total | 66 | 43 | 109 |
## | 0.606 | 0.394 | |
## -------------|------------|------------|------------|
##
##
Dalam hasil diatas dapat dilihat bahwa tingkat akurasi tetap sama, parameter laplace tidak membantu model untuk berkinerja lebih baik.
Hasil dari pengujian analisis data United States Congressional Voting 1984 dengan bayesian memiliki Akurasi prediksi model 87%. Dalam meningkatkan kinerja model dengan menambahkan Metode Transformasi Laplace, yang dimana metode ini meruapakan suatu metode yang dapat digunakan untuk menyelesaikan persamaan diferensial, yang memetakan masalah nilai awal ke dalam suatu persamaan aljabar atau suatu sistem persamaan yang dapat diselesaikan dengan metode aljabar dan tabel transformasi Laplace, Tidak dapat meningkatkan model yang diuji.