Pendahuluan
Neural Networks merupakan sebuah metode soft computing atau Data Mining yang banyak digunakan untuk melakukan pengklasifikasian dan prediksi. Artificial Neural Networks (ANN) pertama kali dikembangkan oleh McCulloch dan Pitts pada tahun 1943, dan sekarang ini telah banyak dikembangkan menjadi bentuk ANN yang bermacam-macam ( Yanto M., et al., 2015 ).
Eksplorasi Data
Import Data
Data yang digunakan merupakan data skema pinjaman suatu perusahaan perbankan dengan beberapa peubah penjelas dalam format (.csv). Proses import data ke software R dapat dilakukan dengan menggunakan fungsi (read.csv) sebagai berikut:
data_tpm <- read.csv("C:/Users/HP/Downloads/TPM/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 ...
Diketahui bahwa terdapat lima peubah penjelas, yaitu besar pinjaman, lama pembayaran, tambahan bunga, pembayaran per-bulan, dan banyaknya cash back yang diterapkan, serta satu peubah respond, 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
Dari hasil summary data yang dilakukan, dapat kita ketahui bahwa data yang kita gunakan memiliki satuan sebagai berikut :
- Besar pinjaman (dalam juta rupiah)
- Lama pembayaran (dalam tahun)
- Tambahan bunga (dalam persen)
- Pembayaran per-bulan (dalam ratus ribu rupiah)
- Banyaknya cash back (dalam persen)
- Rating (dalam indeks 1-100)
Identifikasi Missing Value
colSums(is.na(data_tpm))
## besar_pinjaman lama_pembayaran bunga pembayaran_perbulan
## 0 0 0 0
## banyak_cashback rating
## 0 0
Tidak terdapat missing value (data hilang) pada data yang kita gunakan. Maka analisis data dapat kita lakukan.
Identifikasi Sebaran Peubah
library(Hmisc)
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## Loading required package: ggplot2
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
##
## format.pval, units
hist.data.frame(data_tpm)
Dapat kita ketahui bahwa sebaran semua peubah yang digunakan beragam. Selain itu, satuan dari semua peubah memiliki skala yang sangat berbeda sehingga memungkinkan terjadinya bias dalam memprediksi nilai respond yang akan dilakukan. Oleh karena itu, perlu dilakukan normalisasi skala peubah pada data guna menstandardisasi satuan pada semua peubah.
Pra-Processing Data
Normalisasi Data
Proses normalisasi data yang dilakukan pada software R dapat dilakukan dengan menggunakan fungsi (scale). Normalisasi peubah dilakukan pada seluruh peubah kecuali peubah respond yaitu peubah (rating).
norm_data_tpm <- as.data.frame(scale(data_tpm[,-6]))
norm_data_tpm$rating <- data_tpm$rating
head(norm_data_tpm)
## 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 Setelah Normalisasi
hist.data.frame(norm_data_tpm)
Setelah proses normalisasi data, dapat kita lihat semua peubah lebih
menyebar Normal jika dibandingkan sebelum di normalisasi. Selain itu,
semua peubah penjelas sudah memiliki skala satuan yang sama.
Analisis Neural Network (ANN)
Partisi Data Latih dan Uji
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(567)
train_index <- createDataPartition(norm_data_tpm$rating, p = 0.7, list = F)
data_train <- data_tpm[train_index,]
data_test <- data_tpm[-train_index,]
Scaling Nilai Minimum dan Maksimum
preprocess_param <- preProcess(data_train[,-6], method = c("range"))
data_trainX2 <- as.matrix(predict(preprocess_param, data_train[,-6]))
data_testX2 <- as.matrix(predict(preprocess_param, data_test[,-6]))
data_trainY2 <- data_train[,6]
data_testY2 <- data_test[,6]
Prediksi Model
prediksi_model <- predict(NN_model2, data_testX2)
head(prediksi_model)
## [,1]
## [1,] 40.38409
## [2,] 92.17080
## [3,] 30.86653
## [4,] 33.10130
## [5,] 55.71132
## [6,] 52.56963
Evaluasi Model
eval_model <- NN_model2 %>% evaluate(data_testX2, data_testY2)
print(eval_model)
## loss mean_squared_error mean_absolute_error
## 18.861685 18.861685 3.408228
hasil_data_train <- postResample(prediksi_model[,1], data_train$rating)
## Warning in pred - obs: longer object length is not a multiple of shorter object
## length
## Warning in pred - obs: longer object length is not a multiple of shorter object
## length
hasil_data_train
## RMSE Rsquared MAE
## 19.25900 NA 16.05263
hasil_data_test <- postResample(prediksi_model[,1], data_test$rating)
hasil_data_test
## RMSE Rsquared MAE
## 4.3430028 0.9172816 3.4082273
Berdasarkan hasil diatas, dapat kita ketahui bahwa model Neural Network yang diujikan pada data test berhasil memiliki nilai koefisien determinasi (R-squared) sebesar ± 90%.
Kesimpulan
Artificial Neural Networks (ANN) digunakan untuk memprediksi rating skema pinjaman nasabah bank berdasarkan peubah-peubah penjelas yang ada pada suatu perusahaan perbankan. Model Neural Network yang digunakan terdiri atas dua hidden layer, masing-masing terdiri atas 256 neuron, dan satu output layer dengan fungsi aktivasi linear. Model Neural Network ini menghasilkan nilai koefisien determinasi (R-squared) sebesar ± 90,49%. Sehingga dapat dikategorikan sebagai model yang kuat dalam memprediksi peubah respond yang ada.
Daftar Pustaka
Musli Yanto, Sarjo Defit dan Gunadi Widi Nurcahyo (2015), Analisis Jaringan Syaraf Tiruan untuk memprediksi jumlah reservasi kamar hotel dengan mentode Backpropagation, Jurnal KomTekInfo Fakultas Ilmu Komputer, Hal. 34-39