Artificial Neural Network (ANN) in the Classification of Titanic Survival using R
Assalamualaikum Wr. Wb.
hai data enthusiast!
Pada kesempatan kali ini kita akan melakukan analisis menggunakan Artificial Neural Network (ANN). Sebenarnya, apasih Artificial Neural Network itu? yuk kita pelajari!
Artificial Neural Network Artificial (ANN) atau Jaringan Syaraf Tiruan merupakan sebuah teknik atau pendekatan pengolahan informasi yang terinspirasi oleh cara kerja sistem saraf biologis, khususnya pada sel otak manusia dalam memproses informasi. Elemen kunci dari teknik ini adalah struktur sistem pengolahan informasi yang bersifat unik dan beragam untuk tiap aplikasi. Neural Network terdiri dari sejumlah besar elemen pemrosesan informasi (neuron) yang saling terhubung dan bekerja bersama-sama untuk menyelesaikan sebuah masalah tertentu, yang pada umumnya dalah masalah klasifikasi ataupun prediksi.
Neural Network memproses informasi berdasarkan cara kerja otak manusia. Dalam hal ini Neural Network terdiri dari sejumlah besar elemen pemrosesan yang saling terhubung dan bekerja secara paralel untuk memecahkan suatu masalah tertentu. Neural Network, dengan kemampuannya dapat digunakan untuk memperoleh pengetahuan dari data yang rumit atau tidak tepat, serta juga dapat digunakan untuk mengekstrak pola dan mendeteksi tren yang terlalu kompleks untuk diperhatikan baik oleh manusia atau teknik komputer lainnya. Sebuah Neural Network yang telah terlatih dapat dianggap sebagai “ahli” dalam kategori pemrosesan informasi yang telah diberikan untuk dianalisa. Ahli ini kemudian dapat digunakan untuk menyediakan proyeksi terkait kemungkinan kondisi di masa mendatang serta menjawab pertanyaan “bagaimana jika?”.
Keuntungan lainnya dari penggunaan Neural Network yaitu :
- Pembelajaran adaptif : Kemampuan untuk belajar dalam melakukan tugas-tugas berdasarkan data yang diberikan
- Self-Organization : Sebuah Neural Network dapat membangun representasi dari informasi yang diterimanya selama proses pembelajaran secara mandiri
- Operasi Real-Time : Penghitungan Neural Network dapat dilakukan secara paralel, sehingga proses komputasi menjadi lebih cepat.
Mungkin sudah cukup penjelasan mengenai Artificial Neural Network (ANN), kita akan langsung menuju pada studi kasus. Pada studi kasus kali ini kita akan memprediksi apakah seorang penumpang kapal titanic akan selamat dengan beberapa variabel yang ada. Data dapat diunduh melalui link berikut. Langkah pertama yang harus dilakukan yaitu buka R Studio, kemudian install library berikut.
install.library(nnet)
install.library(data.table)
library(nnet)
library(data.table)
Selanjutnya, input data dari file csv yang telah diunduh dan tampilkan dimensi dan rangkuman dari data tersebut menggunakan syntax berikut.
data = read.csv(file.choose(), header=TRUE, sep=",")
data
dim(data)
summary(is.na(data))
Maka akan muncul output sebagai berikut,
Berdasarkan output tersebut, dapat dilihat bahwa terdapat 891 baris, 13 kolom dan 13 variabel yang tertera pada data titanic. Dari 13 variabel tersebut, hanya 5 variabel yang akan digunakan, yaitu variabel “Survived”, “PClass”, “Sex”, “Age”, dan “Boat”.
Selanjutnya, kita akan melakukan pembersihan data dari nilai NA (not a number) dan dilakukan penyesuaian tipe data menjadi tipe data numeric. Setelah itu, dibuat data frame baru yang memuat tipe data yang telah dirubah menggunakan syntax berikut.
pclass<-as.numeric(data$Pclass)
boat<-as.numeric(data$Boat)
sex<-as.numeric(data$Sex)
survived<-factor(data$Survived)
age<-data$Agetitanic<-data.frame(pclass,sex,boat,survived,age)
head(titanic)
sapply(titanic,class)
class(titanic)
Maka akan muncul output sebagai berikut,
Selanjutnya, kita akan mengambil sampel secara acak tanpa pengembalian sebanyak 600 data dimana 400 data berasal dari data ke 1 hingga 690 untuk survive = 0, dan 200 data selanjutnya berasal dari data ke 691 hingga 891 untuk survive = 1.
sample<-c(sample(1:690,400), sample(691:891,200))
sample
Maka akan muncul output sebagai berikut,
Selanjutnya, kita akan membagi data tersebut menjadi dua yaitu data train (data sampel yang diambil dari keseluruhan data) dan data test (data selain data sampel yang telah digunakan) dengan menggunakan syntax berikut.
titanic.train<-titanic[sample,]
titanic.test<-titanic[-sample,]
Kemudian kita akan melihat keakuratan model dan melakukan prediksi terhadap data masukan yang nantinya akan dilakukan klasifikasi dengan package nnet pada r dengan menggunakan syntax berikut.
titanic1<-nnet(survived~., data = titanic.train, size = 3,
decay = 5e-4, maxit = 600)
titanic1
Maka akan didapatkan output sebagai berikut,
Berdasarkan output tersebut, kita sudah membuat struktur jaringan ANN dengan 4 input, 3 hidden layer, dan 1 output dengan bobot 19. Terdapat 4 variabel yang harus diinputkan yaitu “pclass”, “sex”, “boat” dan “age” agar dapat menghasilkan ouput berupa “survived”.
Selanjutnya, kita akan menampilkan nilai prediksi dari data testing. Variabel Y yang merupakan variabel dependen adalah variabel “survived” dari data titanic.test dan p adalah prediksi data titanic.test menggunakan model data titanic1 dengan type ‘class’ untuk melakukan klasifikasi.
y<-titanic.test$survived
p<-predict(titanic1,titanic.test,type = "class")
p<-round(p)tabelfix<-table(y,p)
tabelfix
sum(diag(table(y,p)))/236
Maka akan didapatkan output sebagai berikut,
Berdasarkan output, dapat diketahui bahwa hasil prediksi data test sudah cukup baik yaitu sebanyak 130 orang yang meninggal dunia diprediksi bahwa 121 orang tepat meninggal dunia (survived=0) dan 9 lainnya berhasil bertahan hidup (survived=1). Pada baris kedua, sebanyak 93 orang yang berhasil bertahan hidup diprediksi bahwa 42 diantaranya meninggal dunia (survived = 0) dan 51 lainnya tepat prediksi yang berhasil bertahan hidup (survived=1). Persentase keakuratan model titanic1 yang telah dibuat cukup tinggi yaitu sebesar 77%.
Selanjutnya, kita akan melihat struktur jaringan yang telah terbuat. Untuk melihat struktur jaringan, kita terlebih dahulu menginstall library yang akan digunakan menggunakan syntax berikut.
install.packages("devtools")
install.packages("reshape")
install.packages("scales")
library(devtools)
library(reshape)
library(scales)
Kemudian, kita akan melihat struktur jaringannya menggunakan syntax berikut.
source_url('https://gist.githubusercontent.com/fawda123/7471137/raw/466c1474d0a505ff044412703516c34f1a4684a5/nnet_plot_update.r')
plot.nnet(titanic1)
Maka akan diperoleh output sebagai berikut,
Berdasarkan plot dapat dilihat bahwa terdapat 4 input yaitu pclass, sex, boat, dan age, 3 hidden layer, dan output survived.
Selanjutnya, kita akan melakukan prediksi data baru dengan menggunakan syntax berikut.
sex<-1
pclass<-1
boat<-8
age<-26
titanic.baru<-data.frame(sex,pclass,boat,age)
titanic.baru
Maka akan muncul output sebagai berikut,
Kemudian, akan dilakukan prediksi dengan menggunakan syntax berikut.
prediksinya<-predict(titanic1, titanic.baru)
prediksinya
Maka akan muncul output sebagai berikut,
Berdasarkan hasil prediksi diatas, jika seorang perempuan dengan pclass 1, boat 8 dan berumur 26 tahun diperoleh nilai 0.9537726 dengan pembulatan 1 sehingga diklasifikasikan hidup (survived=1).
Dan yaaa, Artificial Neural Network Artificial (ANN) kita berhasil !!!
Cukup sekian penjelasan mengenai Artificial Neural Network (ANN) in the Classification of Titanic Survival using R. Semoga dapat menambah ilmu teman-teman semua.
Terima kasih, Wassalamualaikum Wr. Wb.
Referensi :