Tugas Individu 1
STA1382 Teknik Pembelajaran Mesin

Pendahuluan

Neural Network merupakan salah satu teknik dalam algoritma machine learning yang terinspirasi dari cara kerja otak manusia dalam memproses informasi. Secara umum, model Neural Network terdiri atas input layer, hidden layer, dan output layer dengan fungsi aktiviasi di dalamnya. Metode ini menggunakan algoritma yang dapat melakukan prediksi maupun klasifikasi pada data input hingga diperoleh ouput yang mampu merepresentasikan keadaan sesungguhnya (Nielsen 2015).

Eksplorasi Data

Impor Data

Data yang digunakan merupakan data skema pinjaman suatu perusahaan perbakan dengan beberapa peubah penjelas dalam format .csv. Proses impor data ke software R dapat dilakukan dengan menggunakan fungsi read.csv sebagai berikut,

setwd("D:/DATA AKMAL/IPB/Semester 6/Teknik Pembelajaran Mesin/Pertemuan 5")
data.tpm <- read.csv("data ann.csv")
head(data.tpm)
##   besar_pinjaman lama_pembayaran bunga pembayaran_perbulan banyak_cashback
## 1             70               4     1                 130            10.0
## 2            120               3     5                  15             2.0
## 3             70               4     1                 260             9.0
## 4             50               4     0                 140            14.0
## 5            110               2     2                 180             1.5
## 6            110               2     0                 125             1.0
##     rating
## 1 68.40297
## 2 33.98368
## 3 59.42551
## 4 93.70491
## 5 29.50954
## 6 33.17409
str(data.tpm)
## 'data.frame':    75 obs. of  6 variables:
##  $ besar_pinjaman     : int  70 120 70 50 110 110 130 90 90 120 ...
##  $ lama_pembayaran    : int  4 3 4 4 2 2 3 2 3 1 ...
##  $ bunga              : int  1 5 1 0 2 0 2 1 0 2 ...
##  $ pembayaran_perbulan: int  130 15 260 140 180 125 210 200 210 220 ...
##  $ banyak_cashback    : num  10 2 9 14 1.5 1 2 4 5 0 ...
##  $ rating             : num  68.4 34 59.4 93.7 29.5 ...

Dapat diamati bahwa terdapat lima peubah penjelas, yaitu besar pinjaman, lama pembayaran, tambahan bunga, pembayaran per bulan, dan banyak cash back yang diterapkan, serta satu peubah respon, yaitu rating. Seluruh peubah diketahui berjenis numerik, baik itu berkategori integer (bilangan bulat) maupun float (bilangan desimal).

summary(data.tpm)
##  besar_pinjaman  lama_pembayaran     bunga       pembayaran_perbulan
##  Min.   : 50.0   Min.   :1.000   Min.   :0.000   Min.   :  0.0      
##  1st Qu.:100.0   1st Qu.:2.000   1st Qu.:0.000   1st Qu.:132.5      
##  Median :110.0   Median :3.000   Median :1.000   Median :180.0      
##  Mean   :106.9   Mean   :2.547   Mean   :1.013   Mean   :160.2      
##  3rd Qu.:110.0   3rd Qu.:3.000   3rd Qu.:1.500   3rd Qu.:215.0      
##  Max.   :160.0   Max.   :6.000   Max.   :5.000   Max.   :320.0      
##  banyak_cashback      rating     
##  Min.   : 0.000   Min.   :18.04  
##  1st Qu.: 0.500   1st Qu.:32.69  
##  Median : 2.000   Median :40.40  
##  Mean   : 2.183   Mean   :42.48  
##  3rd Qu.: 3.000   3rd Qu.:50.80  
##  Max.   :14.000   Max.   :93.70

Dengan memanfaatkan fungsi summary, dapat diamati secara general sifat sebaran data. Secara umum, seluruh peubah memiliki satuan sebagai berikut,

  1. Besar pinjaman (dalam juta rupiah)
  2. Lama pembayaran (dalam tahun)
  3. Tambahan bunga (dalam persen)
  4. Pembayaran per bulan (dalam ratus ribu rupiah)
  5. Banyak cash back (dalam persen)
  6. Rating (dalam indeks 1-100)

Identifikasi Missing Value

Data merupakan informasi yang diharapkan terkandung dan memiliki nilai tambah dalam suatu kasus. Meskipun demikian, dalam suatu gugus data, sangat mungkin terdapat banyak data hilang (missing value) akibat berbagai macam alasan, baik itu alasan teknis maupun nonteknis. Apabila data hilang tidak ditangani dengan baik, terdapat berbagai macam potensi masalah yang mungkin terjadi, salah satunya adalah hilangnya nilai suatu atribut yang mungkin penting (Arifianto et al 2022). Melalui fungsi is.na, jumlah data hilang dapat diketahui sebagai berikut,

colSums(is.na(data.tpm))
##      besar_pinjaman     lama_pembayaran               bunga pembayaran_perbulan 
##                   0                   0                   0                   0 
##     banyak_cashback              rating 
##                   0                   0

Identifikasi data hilang dengan fungsi is.na menginformasikan bahwa tidak ditemukan satu pun data hilang pada gugus data. Analisis data kemudian dapat dilakukan pada langkah selanjutnya.

Identifikasi Sebaran Peubah

library(Hmisc)
hist.data.frame(data.tpm)

Sebaran keenam peubah yang digunakan diketahui beragam, dengan sebagian mendekati sebaran Normal, sementara lainnnya cenderung menjulur ke kanan. Selain itu, satuan dari keenam peubah memiliki skala yang berbeda drastis sehingga memungkinkan terjadinya bias dalam memprediksi nilai respon. Oleh karena itu, perlu dilakukan normalisasi skala peubah guna menstandardisasi satuan.

Pra-processing Data

Normalisasi Data

Proses normalisasi data pada software R dapat dilakukan dengan menggunakan fungsi scale. Normalisasi peubah dilakukan pada seluruh peubah kecuali peubah respon (rating).

data.tpm.norm <- as.data.frame(scale(data.tpm[,-6]))
data.tpm.norm$rating <- data.tpm$rating
head(data.tpm.norm)
##   besar_pinjaman lama_pembayaran       bunga pembayaran_perbulan
## 1     -1.8723125       1.3135571 -0.01324532          -0.3581621
## 2      0.6624066       0.4097334  3.96035175          -1.7220242
## 3     -1.8723125       1.3135571 -0.01324532           1.1835951
## 4     -2.8862001       1.3135571 -1.00664459          -0.2395653
## 5      0.1554628      -0.4940903  0.98015394           0.2348215
## 6      0.1554628      -0.4940903 -1.00664459          -0.4174604
##   banyak_cashback   rating
## 1      3.24677497 68.40297
## 2     -0.07586699 33.98368
## 3      2.83144472 59.42551
## 4      4.90809594 93.70491
## 5     -0.28353211 29.50954
## 6     -0.49119724 33.17409

Identifikasi Sebaran Peubah Hasil Normalisasi

hist.data.frame(data.tpm.norm)

Setelah proses normalisasi data, dapat diamati peubah lebih menyebar Normal dibandingkan sebelumnya. Selain itu, seluurh peubah penjelas sudah memiliki skala satuan yang serupa sehingga diharapkan mampu menurunkan potensi bias terhadap respon.

Analisis Neural Network

Partisi Data Latih dan Uji

Pembagian data aktual menjadi data latih (training) dan data uji (testing) sepenuhnya menjadi subjektivitas peneliti. Dalam praktiknya, terdapat beberapa opsi proporsi antara keduanya, antara lain 70%:30%, 80%:20%, hingga 90%:10% (Avuclu dan Elen 2020). Pada penugasan kali ini, proporsi data latih dan uji akan ditentukan sebesar 70%:30%.

library(keras)
library(caret)
## 
## Attaching package: 'caret'
## The following object is masked from 'package:survival':
## 
##     cluster
library(tensorflow)
## 
## Attaching package: 'tensorflow'
## The following object is masked from 'package:caret':
## 
##     train
set.seed(345)

train.index2 <- createDataPartition(data.tpm.norm$rating, p = 0.7, list = F)
train2 <- data.tpm[train.index2,]
test2 <- data.tpm[-train.index2,]

Scaling Nilai Minimum dan Maksimum

Langkah analisis selanjutnya adalah proses scaling data. Metode scaling yang digunakan menstandardisasi data dari nilai minimum dan maksimum sehingga dihasilkan nilai data dalam skala interva 0-1. Proses scaling dilakukan dengan fungsi preProcess sebagai berikut,

preprocessParams2 <- preProcess(train2[,-6], method = c("range"))
train_X2 <- as.matrix(predict(preprocessParams2, train2[,-6]))
test_X2 <- as.matrix(predict(preprocessParams2, test2[,-6]))

train_y2 <- train2[,6]
test_y2 <- test2[,6]

Model Neural Network dengan 2 Hidden Layer

Setelah seluruh peubah distandardisasi, langkah selanjutnya adalah pembangunan model Neural Network. Pada penugasan kali ini, arsitektur Neural Network yang coba dibangun merupakan model dengan 2 hidden layer dan 1 output layer dengan masing-masing layer mengandung 256 neuron. Selain itu, ditentukan juga fungsi aktivasi yang terkandung dalam setiap layer berupa fungsi aktivasi linear atau ReLU. Penyusunan model dapat dilakukan dengan memanfaatkan fungsi-fungsi pada library keras dengan rangkaian sintaks sebagai berikut,

model2 <- keras_model_sequential() %>%
  layer_dense(units = 256, activation = "relu", input_shape = ncol(train_X2)) %>%
  layer_dropout(0.3) %>%
  layer_dense(units = 256, activation = "relu") %>%
  layer_dropout(0.3) %>%
  layer_dense(units = 1, activation = "linear")

Proses compile perlu dilakukan pula guna menentukan parameter-parameter evaluasi dalam model Neural Network. Terdapat beberapa opsi parameter yang dapat dipilih dalam library keras. Pada penugasan kali ini, opsi parameter yang digunakan adalah sebagai berikut,

model2 %>% compile(
  loss = "mean_squared_error",
  optimizer = "adam",
  metrics = list("mean_squared_error", "mean_absolute_error")
)

Selain parameter evaluasi, perlu ditentukan pula parameter lain seperti epoch, batch size, dan validation split. Secara umum, epoch dapat didefinisikan sebagai suatu siklus yang dilakukan alogritma Neural Network untuk mengambil informasi dari data latih. Penentuan nilai parameter ini dilakukan guna menghasilkan nilai bobot yang konvergen (Wibawa 2017). Pada penugasan kali ini, ditentukan nilai epoch sebesar 500, batch size sebesar 64, dan validation split sebesar 0.2.

print(model2)
## Model: "sequential"
## ________________________________________________________________________________
##  Layer (type)                       Output Shape                    Param #     
## ================================================================================
##  dense_2 (Dense)                    (None, 256)                     1536        
##  dropout_1 (Dropout)                (None, 256)                     0           
##  dense_1 (Dense)                    (None, 256)                     65792       
##  dropout (Dropout)                  (None, 256)                     0           
##  dense (Dense)                      (None, 1)                       257         
## ================================================================================
## Total params: 67,585
## Trainable params: 67,585
## Non-trainable params: 0
## ________________________________________________________________________________
plot(history2)

Prediksi Model

Setelah menentukan nilai parameter model Neural Network, prediksi nilai respon berdasarkan nilai-nilai peubah penjelas dapat dilakukan dengan memanfaatkan fungsi predict pada nilai-nilai data uji. Proses prediksi dapat diamati dalam rangkaian sintaks sebagai berikut,

prediksi2 <- predict(model2, test_X2)
head(prediksi2)
##          [,1]
## [1,] 37.85464
## [2,] 27.91291
## [3,] 40.72640
## [4,] 37.95988
## [5,] 38.43535
## [6,] 39.68523

Evaluasi Model

Evaluasi model dilakukan pada data uji berdasarkan model Neural Network yang didapatkan pada data latih. Proses evaluasi model dilakukan dengan memanfaatkan fungsi evaluate dengan parameter loss, MSE, dan MAE sebagai berikut,

print(scores2)
##                loss  mean_squared_error mean_absolute_error 
##           41.363861           41.363861            5.270816
postResample(keras_train2[,1], train2$rating)
##      RMSE  Rsquared       MAE 
## 4.8796527 0.8800535 4.1036580
postResample(keras_test2[,1], test2$rating)
##      RMSE  Rsquared       MAE 
## 6.4314736 0.8689697 5.2708150

Berdasarkan keluaran di atas, dapat diketahui bahwa model Neural Network yang diujikan pada data uji berhasil memiliki nilai koefisien determinasi (R-squared) sebesar 82,42%. Menurut Chin (1998), model yang dibangun dapat dikategorikan kuat karena memiliki nilai koefisien determinasi lebih dari 0,67.

Kesimpulan

Algoritma Neural Network digunakan untuk memprediksi rating skema pinjaman nasabah berdasarkan peubah-peubah penjelas pada suatu perusahaan perbankan. Model Neural Network yang digunakan terdiri atas dua hidden layer dengan masing-masing terdiri atas 256 neuron dan satu output layer dengan fungsi aktivasi linear. Model Neural Network menghasilkan nilai koefisien determinasi sebesar 82,42% sehingga dapat dikategorikan sebagai model yang kuat dalam memprediksi peubah respon.

Daftar Pustaka

Arifianto AS, Safitri KD, Agustianto K, Wiryawan IG. 2022. Pengaruh prediksi missing value pada klasifikasi decision tree C4.5. Jurnal Teknologi Informasi dan Ilmu Komputer (JTIIK). 9(4): 779-786. doi:10.25126/jtiik.2022944778.

Avuclu E, Elen A. 2020. Evaluation of train and test performance of maching learning algorithm and Parkinson diagnosis with statistical measurements. Medical & Biological Engineering & Computing. 58: 2775-2788.

Chin WW. 1998. The partial least squares approach to structural equation modeling. Modern Methods for Business Research. 295: 336.

Nielsen M. 2015. Neural Networks and Deep Learning: A Textbook. Determination Press.

Wibawa MS. 2017. Pengaruh fungsi aktivasi, optimisasi, dan jumlah epoch terhadap performa jaringan saraf tiruan. J. Sist. dan Inform.. 11(2): 167-174. doi:10.13140/RG.2.2.21139.94241.