Deep Learning: Artificial Neural Networks (aplikasi)

BAHASA R

# Mengimpor dataset
dataset = read.csv('Data_bank_churn.csv')
dataset = dataset[4:14]

# Mengonversi data kategori ke numeric
dataset$Geography = as.numeric(factor(dataset$Geography,
                                      levels = c('France', 'Spain', 'Germany'),
                                      labels = c(1, 2, 3)))
dataset$Gender = as.numeric(factor(dataset$Gender,
                                   levels = c('Female', 'Male'),
                                   labels = c(1, 2)))

# Membagi data ke training dan test set
# install.packages('caTools')
library(caTools)
set.seed(123)
split = sample.split(dataset$Exited, SplitRatio = 0.8)
training_set = subset(dataset, split == TRUE)
test_set = subset(dataset, split == FALSE)

# Proses feature Scaling
training_set[-11] = scale(training_set[-11])
test_set[-11] = scale(test_set[-11])

# Aplikasi ANN ke training set
# install.packages('h2o')
library(h2o)
h2o.init(nthreads = -1)
MesinKlasifikasi = h2o.deeplearning(y = 'Exited',
                         training_frame = as.h2o(training_set),
                         activation = 'Rectifier',
                         hidden = c(6,6),
                         epochs = 100,
                         train_samples_per_iteration = -2)

# Memprediksi hasil test set
y_pred = h2o.predict(MesinKlasifikasi, newdata = as.h2o(test_set[-11]))
y_pred = (y_pred > 0.5)
y_pred = as.vector(y_pred)

# Membuat Confusion Matrix
cm = table(test_set[, 11], y_pred)

h2o.shutdown()

Penjelasan:

  • Line 2-3 mengimpor dataset. Kita hanya memerlukan kolom ke 4-14 saja. Tampilan datasetnya adalah sebagai berikut:
Tampilan dataset di R
  • Line 6-11 mengonversi data yang bersifat kategori menjadi numerik. Untuk mereview pembahasan ini, silakan baca artikel saya di link ini.
  • Line 14 menginstall library caTools untuk membagi data ke training dan test set. Jika belum terinstall cukup hilangkan tanda pagar.
  • Line 15 mengaktifkan library caTools.
  • Line 16 menentukan bilangan random 123 sebagai RNG (random number generator).
  • Line 17-19 membagi data ke training dan test dengan ratio 80:20.
  • Line 22-23 melakukan ifeature scaling (menyamakan skala). Kita tidak mengikutkan kolom terakhir (kolom ke 11) sehingga kita tulis [-11] di baris ini.
  • Line 26 menginstall library h20. Ini adalah library khusus dari Oracle untuk R dalam hal pemrosesan deep learning. Nantinya kita akan melakukan proses DL secara online dengan menggunakan server milik Oracle.

Perlu diperhatikan, jika komputer pembaca belum terinstall Java 64 bit, maka silakan download dulu di link ini: https://www.java.com/en/download/manual.jsp

Setelah dibuka pilih Java 64 bit dan sesuaikan dengan OS komputer pembaca (apakah Windows, Mac atau Linux). Java 64 bit diperlukan untuk mengakses sever Oracle.

  • Line 27 mengaktikan library h20.
  • Line 28 menghubungkan koneksi ke server Oracle. Perintah yang kita perlukan adalah h20.init(nthreads=-1). Mengapa pilih nthreads=-1? Artinya kita ingin mengaktifkan semua cores yang ada di server Oracle (triknya menggunakan -1).

Jika berhasil terkoneksi, tampilannya adalah sebagai berikut:

Tampilan koneksi dengan menggunakan library h20
  • Line 29-34 membuat model ANN. Kita definisikan nama objek model ANN kita yaitu MesinKlasifikasi. Tentu saja pemilihan nama ini bebas. Kemudian kita tulis h20.deeplearning.

Untuk mengetahui parameter apa saja yang diperlukan, silakan arahkan kursor pada deeplearning kemudian ketikkan F1 di keyboard. Maka akan muncul tampilan ini di RStudio:

Tampilan bantuan deeplearning di RStudio

Kita cukup menggunakan beberapa parameter saja, antara lain:

  1. y=’Exited’. Ini adalah nama dependen variabel kita, yaitu kolom yang menunjukkan keputusan apakah pegawai keluar (1) atau tidak (0).
  2. training_frame = as.h2o(training_set). Training_frame yang diperlukan adalah data frame yang ingin diolah. Karena Training_frame memerlukan data dengan format h20, maka kita cukup tambahkan h20 di depannya dan diikuti dengan tanda kurung data frame asal (dalam hal ini adalah training_set).
  3. activation = ‘Rectifier’. Kita menggunakan activation function rectifier karena ini yang paling cocok (dan sering dipakai oleh banyak orang) untuk ANN.
  4. hidden = c(6,6). Ada dua vektor di perintah ini (artinya ada 2 hidden layer). Kemudian isi vektor di dalamnya adalah berapa banyak nodes (neuron) di layer tersebut. Jadi c(10,12) artinya ada 2 hidden layer. Hidden layer pertama terdiri dari 10 nodes. Hidden layer kedua terdiri dari 12 nodes. Kali ini kita gunakan 2 hidden layer, dan masing-masing ada 6 nodes, sehingga kita tulis c(6,6). Mengapa kita pilih 6 nodes? Kita pilih 1 (1dependen variabel) + 11 independen variabel = 12. Kemudian kita hitung rataanya (12/2 = 6). Tidak ada metode baku untuk penentuan jumlah nodes, tapi ini bisa cukup membantu (berdasarkan pengalaman).
  5. epochs=100. Kita pilih model kita untuk melakukan iterasi 100 kali. Tentu saja angka ini bebas. Semakin besar semakin lama prosesnya.
  6. train_samples_per_iteration = -2. Ini adalah parameter untuk menentukan batch size. Batch size 10 artinya program akan mengeksekusi 10 baris, jika sudah lanjut ke 10 baris di bawahnya. Kita pilih nilai -2 agar program h20 yang akan menentukan sendiri nilai yang terbaik.

Sekarang jalankan line 29-34 (sangat cepat hanya beberapa detik, karena menggunakan server Oracle). Tampilannya jika sudah selesai adalah sebagai berikut:

Tampilan eksekusi model h20
  • Line 37 adalah memprediksi y_pred berdasarkan model ANN kita. Kita definisikan y_pred kemudian diikuti dengan h20.predict. Kemudian di dalam tanda kurung kita tulis nama model kita yaitu MesinKlasifikasi, diikuti dengan datanya yang diprediksi yaitu test_set (tanpa variabel dependen, kolom ke 11).
  • Line 38 memilih nilai probabilitas > 0.5 menjadi bernilai 1, dan sebaliknya bernilai 0. Waau demikian format dari data ini bukan berbentuk vektor (hasil proses h20), maka kita ubah menjadi vektor di line bawahnya.
  • Line 39 merubah y_pred menjadi berbentuk vektor. Jika dieksekusi tampilannya adalah sebagai berikut:
Tampilan y_red di RStudio
  • Line 42 kita buat confusion matrix nya. Jika dieksekusi tampilan cm adalah sebagai berikut:
Tampilan confusion matrix di RStudio

Ternyata akurasi dari artificial neural networks yang kita buat sangat baik. Tampilan confusion matrix di atas menunjukkan bahwa prediksi benar sebesar (1531+190 = 1721), dan prediksi salah sebesar (217+62 = 279). Dengan demikian akurasi kita adalah (1721/2000 = 0.86) 86%.


Sampai di sini saya harap pembaca bisa memahami langkah-langkah deep learning di R. Penulisan DL di R memang lebih ringkas, dan lebih cepat dengan menggunakan server Oracle. Tapi tentu saja itu semua kembali lagi ke preferensi pembaca, lebih nyaman menggunakan Python atau R. Jika sudah familiar dengan Pyhton tentu agak susah beralih ke R, begitu pula sebaliknya.

Tetap semangat belajar AI bersama saya, dan nantikan artikel-artikel AI saya selanjutnya.

Semoga bermanfaat.

Bagikan artikel ini:

Pages: 1 2 3 4

Leave a Reply

avatar
  Subscribe  
Notify of