Artificial Neural Network (ANN) with R
Pada postingan kali ini, penulis akan membahas bagaimana penerapan metode artficial neural network (ANN) menggunakan package ‘nnet’ dengan software R.
Artificial Neural Network (ANN) atau jaringan syaraf tiruan adalah jaringan dari sekelompok unit pemroses kecil yang dimodelkan berdasarkan perilaku jaringan syaraf manusia. 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.
Cara kerja Neural Network dapat dianalogikan sebagaimana halnya manusia belajar dengan mengunakan contoh atau yang disebut sebagai supervised learning. Sebuah Neural Network dikonfigurasi untuk aplikasi tertentu, seperti pengenalan pola atau klasifikasi data, dan kemudian disempurnakan melalui proses pembelajaran. Proses belajar yang terjadi dalam sistem biologis melibatkan penyesuaian koneksi sinaptik yang ada antara neuron, dalam halnya pada Neural Network penyesuaian koneksi sinaptik antar neuron dilakukan dengan menyesuaikan nilai bobot yang ada pada tiap konektivitas baik dari input, neuron maupun output.
Pada contoh Artificial Neural Network kali ini penulis akan mencoba menerapkannya menggunakan data titanic. Dengan data tersebut penulis akan memprediksikan apakah seseorang akan survive dengan beberapa variabel yang ada? (data titanic, klik disini)
Langkah pertama yang dilakukan adalah install package ‘nnet’ dan ‘data.tabel’ kemudian aktifkan dengan fungsi library.
Gambar diatas merupakan proses memanggil data atau memasukkan data menggunakan fungsi ‘read.csv’ dengan directory penyimpanan data titanic pada pc masing-masing. Data yang dimasukkan diberi nama ‘Data’.
Selanjutnya untuk mengetahui dimensi data titanic digunakan fungsi ‘dim’. Data titanic yang telah dimasukkan terdiri atas 1310 baris dengan 14 kolom atau variabel.
Variabel yang digunakan dalam analisis ANN kali ini antara lain :
1. Variabel Survived
2. Variabel Boat
3. Variabel Pclass
4. Variabel Sex
5. Variabel Age
Variabel yang mengandung NA ditunjukkan oleh adanya keterengan dengan status TRUE. Berdasarkan variabel yang akan digunakan dalam analisis, variabel usia memiliki data yang bernilai NA . Selanjutnya lakukan data imputation untuk mengisi data yang bernilai NA menggunakan rata-rata.
Ubah type variabel pclass, boat, dan sex menjadi numerik, sedangkan variabel survived menjadi faktor, dimana 0 = meninggal dunia, dan 1= hidup. Kemudian buatlah data frame dengan nama ‘Titanic’ yang berisikan 5 variabel tersebut. Berdasarkan gambar diatas, dapat dijelaskan bahwa:
- Variabel survived, 3 penumpang meninggal (0) dan 3 selamat (1)
- Variabel pclass, 6 penumpang berasa dari kelas I
- Variabel sex, 3 Wanita (1)dan 3 Pria (2)
- Variabel boat, 1 orang menaiki boat 13, 1 orang menaiki boat 4, 3 menaiki boat 1, dan 1 menaiki boat 14.
- Variabel age, masing-masing usia penumpang pada head data adalah 29 tahun, 9 bulan, 2 tahun, 30 tahun, 25 tahun, dan 48 tahun.
Lalu penulis melakukan pengambilan sampel secara acak tanpa pengembalian sebanyak 600 data : 400 data berasal dari data ke 1 hingga 810 untuk survive =0 , 200 selanjutnya berasal dari data ke 811–1309 untuk survive =1
Kemudian dilakukan pemisahan pada data titanic menjadi data train dan data test. Data train merupakan data sampel yang diambil dari keseluruhan data, sedangkan data test merupakan data selain data sampel yang telah digunakan.
Lakukan percobaan pertama menggunakan perintah ‘nnet’ yang diberi nama ‘titanic1’, lalu masukkan variabel dependent atau target. Variabel dependent yang digunakan adalah survive. Perintah ‘~.’ digunakan untuk memasukkan seluruh variabel independent yaitu pclass, sex, boat, dan age. Perintah ‘nnet’ dijalankan dengan data train. Size menggambarkan banyaknya node yang akan digunakan pada hidden layer, pada kasus ini digunakan 2 node. Decay menggambarkan seberapa cepat penurunan dalam gradient descent. Maxit merupakan maksimum iterasi yang akan dilakukan, pada kasus ini maksimum iterasi yang akan dilakukan adalah 400 iterasi.
Berdasarkan percobaan pertama, diperoleh output berupa bobot sebesar 13, initial value yang diberikan oleh program secara random adalah 453.93 dan final value sebesar 61.327 yang diperoleh setelah 110 kali iterasi dan sudah mencapai nilai konvergen.
Model dapat dipanggil dengan perintah ‘titanic1’. Output diatas menjelaskan bahwa kita sudah membuat struktur jaringan ANN dengan 4 input, 2 hidden layer, dan 1 output dengan bobot 13. Terdapat 4 variabel yang harus diinputkan yaitu pclass, sex, boat dan age agar dapat menghasilkan ouput berupa survived.
Selanjutnya penulis akan melihat nilai prediksi dari data testing . Y atau variabel dependent adalah variabel survived dari data titanic.test dan p adalah prediksi data titanic.test menggunakan model data titanic1 dengan type ‘class’ untuk klasifikasi.
Hasil prediksi data test sudah cukup baik yaitu sebanyak 446 orang yang meninggal dunia diprediksi bahwa 443 orang tepat meninggal dunia dan 3 lainnya berhasil bertahan hidup. Sebanyak 265 orang yang berhasil bertahan hidup diprediksi bahwa 10 diantaranya meninggal dunia dan 253 lainnya tepat prediksi yang berhasil bertahan hidup. Persentase keakuratan model titanic1 yang telah dibuat sangat tinggi yaitu sebesar 98% dengan error sebesar 0.018%.
Selanjutnya untuk melihat struktur jaringan yang telah dibuat, gunakan syntax dibawah ini :
Selanjutnya penulis akan memprediksikan data baru yang ada, apakah berdasarkan data baru tersebut, penumpang akan meninggal atau hidup?
Berikut data baru yang dimiliki :
Diketahui data baru yang dimiliki yaitu sex female, pclass 2, boat 4 dan age, 30. Sebelum melakukan prediksi, buatlah data frame dari data baru yang dimiliki yang diberi nama ‘titanicbaru’ .
Selanjutnya lakukan prediksi dengan model titanic 1.
Berdasarkan prediksi diatas diketahui bahwa data baru akan diklasifikasikan hidup dengan nilai 0.995 dan hampir mendekati nilai 1.
Sekian ya readers, terimakasih telah mengunjungi laman ini. Kritik dan saran sangat terbuka bagi penulis.

