Artificial Neural Network (ANN) Using R-Simple example “neuralnet()” & Implementation “nnet()”
Assalamualaikum Warahmatullahi Wabarakatuh.
Pada kesempatan ini akan dibahas contoh sederhana dari Artificial Neural Network (ANN) serta implementasinya.
Pengertian
Artificial neural network atau jaringan saraf tiruan adalah sistem komputasi dimana arsitektur dan komputasi diilhami dari pengetahuan tentang sel saraf dalam otak. ANN merupakan set algoritma yang bekerja seperti jaringan saraf otak manusia, dimana neuron saling terhubung satu dengan lainnya dan bekerja untuk menghasilkan informasi. Dengan melakukan proses belajar jaringan saraf tiruan dapat mengatur dirinya untuk menghasilkan suatu respon yang konsisten terhadap rangkaian masukkan. Jaringan saraf tiruan dirancang dan dilatih untuk memiliki komputer yang berkemampuan seperti otak manusia, kemampuan problem solving, dan dapat melakukan proses pembelajaran.
Simple example using R neural net library — neuralnet()
Perintah neuralnet() adalah sebagai berikut.
neuralnet (formula, data, hidden = 1, threshold = 0.01, stepmax = 1e + 05, rep = 1, startweights = NULL, learningrate.limit = NULL, learningrate.factor = list (minus = 0.5, plus = 1.2), learningrate = NULL, lifesign = "none", lifesign.step = 1000, algorithm = "rprop +", err.fct = "sse", act.fct = "logistic", linear.output = TRUE, exclude = NULL, constant.weights = NULL, likelihood = FALSE)
Penjelasan
formula: Deskripsi simbolis dari model yang akan dipasang.
Data: Dataframe yang berisi variabel yang ditentukan dalam rumus.
Hidden: Vektor bilangan bulat yang menentukan jumlah neuron tersembunyi (simpul) di setiap lapisan.
Threshold: Nilai egativ yang menentukan ambang untuk turunan parsial dari fungsi kesalahan sebagai kriteria penghentian.
Stepmax: Langkah maksimum untuk pelatihan jaringan saraf. Mencapai maksimum ini mengarah pada penghentian proses pelatihan jaringan saraf.
Rep: Jumlah pengulangan untuk pelatihan jaringan saraf.
Startweights: Vektor yang berisi nilai awal untuk bobot. Bobot tidak akan diinisialisasi secara acak.
Learningrate.limit: Vektor atau daftar yang berisi batas terendah dan tertinggi untuk kecepatan pembelajaran. Hanya digunakan untuk RPROP dan GRPROP.
Learningrate.factor: Vektor atau daftar yang berisi faktor perkalian untuk kecepatan pemelajaran atas dan bawah, hanya digunakan untuk RPROP dan GRPROP.
Learningrate: Nilai egativ yang menentukan kecepatan pembelajaran yang digunakan oleh propagasi mundur tradisional. Digunakan hanya untuk propagasi mundur tradisional.
Lifesign: Sebuah string yang menentukan seberapa banyak fungsi akan mencetak selama kalkulasi jaringan saraf-‘none ‘,’ minimal ‘, atau’ full ‘.
lifesign.step: Bilangan bulat yang menentukan ukuran langkah untuk mencetak ambang minimal dalam mode desain tampilan penuh.
Algorithm: String yang berisi jenis algoritme untuk menghitung jaringan saraf.
Err.fct: Fungsi yang dapat dibedakan yang digunakan untuk menghitung kesalahan.
Act.fct: Fungsi yang dapat dibedakan yang digunakan untuk menghaluskan hasil perkalian silang kovariat atau neuron dan bobot.
Linear.output: Logis. Jika act.fct tidak diterapkan ke neuron keluaran, atur keluaran linier ke TRUE, sebaliknya ke FALSE.
Exclude: Vektor atau matriks yang menentukan bobot yang dikecualikan dari perhitungan.
Constant.weights: Vektor yang menentukan nilai bobot yang dikecualikan dari proses pelatihan dan diperlakukan sebagai fix.
Likelihood: Logis. Jika fungsi kesalahan sama dengan fungsi log-likelihood egative, kriteria informasi AIC dan BIC akan dihitung. Selanjutnya penggunaan kepercayaan. Interval berarti.
Oke, langsung saja ke contoh sederhana dari neural network. Langkah pertama yang dilakukan adalah menjalankan package neuralnet. Jika belum ada, silahkan install package terlebih dahulu.
> #Choose the libraries to use> library(neuralnet)
Berikut adalah data sederhana yang akan digunakan untuk melatih fungsi neuralnet di R dan untuk menguji keakuratan neural network yang dibangun.
Kemudian lakukan set direktori data training dan input data ke dalam R dengan menggunakan perintah sebagai berikut.
> #Set working directory for the training data> setwd(“C:/Users/WIN 10/Documents/R”)> getwd()> #Read the input file> mydata=read.csv(‘Squares.csv’,sep=”,”,header=TRUE)> mydata
Input Output
1 0 0
2 1 1
3 2 4
4 3 9
5 4 16
6 5 25
7 6 36
8 7 49
9 8 64
10 9 81
11 10 100
Selanjutnya melatih model berdasarkan output dari input menggunakan hidden layer 10 dan theshold 0.01.
> #Train the model based on output from input
> model=neuralnet(formula = OUTPUT~INPUT,data = mydata,hidden=10,threshold=0.01 )
> print(model)
Bentuk plot neural network berdasarkan model yang diperoleh sebelumnya.
plot(model)
Pada plot neural network diatas ,diketahui nilai error sebesar 0.000218, dan steps diperoleh bahwa mesin telah melakukan 9786 kali iterasi.
Langkah terakhir adalah membandingkan data aktual dan data prediksi. Berikut adalah perintah yang digunakan.
> #Check the data — actual and predicted> final_output=cbind (INPUT, OUTPUT,as.data.frame(model$net.result) )> colnames(final_output) = c(“Input”, “Expected Output”,“Neural Net Output” )> print(final_output)
Input Expected Output Neural Net Output
1 0 0 -0.00190268
2 1 1 1.00293889
3 2 4 3.99986340
4 3 9 9.00151965
5 4 16 15.99782369
6 5 25 25.00537548
7 6 36 35.98932776
8 7 49 49.01208519
9 8 64 63.99045645
10 9 81 81.00570685
11 10 100 99.99806430
Contoh sederhana neural network menggunakan neural net library telah selesai dilakukan dan diperoleh model untuk melakukan prediksi.
Implementation using nnet() library
Perintah nnet() adalah sebagai berikut.
nnet(formula, data, weights,subset, na.action, contrasts = NULL)
Penjelasan
Formula: Rumus dengan bentuk kelas ~ x1 + x2 + …
data: Dataframe dari variabel yang ditentukan dalam rumus yang secara istimewa akan diambil
weights: (Kasus) bobot untuk setiap contoh; jika tidak ada, defaultnya adalah 1
subset: Vektor indeks yang menentukan kasus yang akan digunakan dalam sampel pelatihan
na.action: Fungsi untuk menentukan tindakan yang akan diambil jika NAs ditemukan
constrast: Daftar kontras yang akan digunakan untuk beberapa atau semua faktor yang muncul sebagai variabel dalam rumus model
Untuk meningkatkan latihan dengan library nnet digunakan data yang dikumpulkan di sebuah restoran melalui wawancara dengan pelanggan. Pelanggan diminta memberikan skor pada aspek-aspek berikut: pelayanan, suasana, dan makanan. Mereka juga ditanya apakah mereka akan meninggalkan tip berdasarkan skor ini. Dalam hal ini, jumlah masukan adalah 2 dan keluaran berupa nilai kategorik (Tip = 1 dan No-tip = 0).
Langkah pertama yang dilakukan adalah menjalankan package NeuralNetTools dan nnet. Jika belum ada, silahkan install package terlebih dahulu.
> #Choose the libraries to use> library(NeuralNetTools)> library(nnet)
Kemudian lakukan set direktori data training dan input data ke dalam R dengan menggunakan perintah sebagai berikut.
> ###Set working directory for the training data> setwd("C:/Users/WIN 10/Documents/R")> getwd()> ###Read the input file> mydata=read.csv('RestaurantTips.csv',sep=",",header=TRUE)> mydata
No CustomerWillTip Service Ambience Food TipOrNo
1 1 1 4 4 5 Tip
2 2 1 6 4 4 Tip
3 3 1 5 2 4 Tip
4 4 1 6 5 5 Tip
5 5 1 6 3 4 Tip
6 6 1 3 4 5 Tip
7 7 1 5 5 5 Tip
8 8 1 5 4 4 Tip
9 9 1 7 6 4 Tip
10 10 1 7 6 4 Tip
11 11 1 6 7 2 Tip
12 12 1 5 6 4 Tip
13 13 1 7 3 3 Tip
14 14 1 5 1 4 Tip
15 15 1 7 5 5 Tip
16 16 0 3 1 3 No-tip
17 17 0 4 6 2 No-tip
18 18 0 2 5 2 No-tip
19 19 0 5 2 4 No-tip
20 20 0 4 1 3 No-tip
21 21 0 3 3 4 No-tip
22 22 0 3 4 5 No-tip
23 23 0 3 6 3 No-tip
24 24 0 4 4 2 No-tip
25 25 0 6 3 6 No-tip
26 26 0 3 6 3 No-tip
27 27 0 4 3 2 No-tip
28 28 0 3 5 2 No-tip
29 29 0 5 5 3 No-tip
30 30 0 1 3 2 No-tip
Selanjutnya melatih model berdasarkan output dari input.
> ##Train the model based on output from input> model=nnet(CustomerWillTip~Service+Ambience+Food, data=mydata, size =5,rang=0.1, decay=5e-2, maxit=5000)
# weights: 26
initial value 7.496965
iter 10 value 5.801030
iter 20 value 5.254514
iter 30 value 5.150932
iter 40 value 5.141911
iter 50 value 5.141785
final value 5.141780
converged
> print(model)
a 3-5-1 network with 26 weights
inputs: Service Ambience Food
output(s): CustomerWillTip
options were - decay=0.05
size adalah banyaknya node yang kita gunakan di dalam hidden layer
rang adalah initial random weight dari -0.1 sampai +0.1
decay adalah parameter for weight decay
maxit adalah maksimal iterasinya.
Selanjutnya dibentuk plot neural network berdasarkan model yang diperoleh sebelumnya.
> plotnet(model)
Library NeuralNetTools memungkinkan untuk mendapatkan kepentingan relatif dari variabel input dalam jaringan saraf menggunakan algoritma garson.
> garson(model)
Berdasarkan grafik yang diperoleh dari penerapan algoritma Garson, diketahui bahwa dalam keputusan untuk memberikan tip, pelayanan yang diterima pelanggan memiliki pengaruh yang lebih besar.
Oke, cukup sekian pembahasan Artificial Neural Network (ANN) dengan R. Semoga Bermanfaat.