Tugas Individu 1 STA1382 Teknik Pembelajaran Mesin
Pendahuluan
Artificial Neural Network (ANN) atau Jaringan Saraf Tiruan adalah sebuah model komputasi yang terinspirasi dari cara kerja otak manusia dalam memproses informasi. ANN terdiri dari banyak unit pemrosesan (neuron) yang saling terhubung dan mampu belajar dari data masukan yang diberikan. Secara umum, model Neural Network terdiri atas input layer, hidden layer, dan output layer dengan fungsi aktiviasi di dalamnya. Keluaran yang dihasilkan oleh ANN untuk suatu pola masukan tertentu tergantung dari nilai (bobot) hubungan antar neuron dalam ANN tersebut.
Pra-Processing Data
Library
Beerikut beberapa library yang akan dipakai pada tugas ini:
library(tensorflow)## Warning: package 'tensorflow' was built under R version 4.1.3
library(keras)## Warning: package 'keras' was built under R version 4.1.3
library(caret)## Warning: package 'caret' was built under R version 4.1.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.1.3
## Loading required package: lattice
##
## Attaching package: 'caret'
## The following object is masked from 'package:tensorflow':
##
## train
library(reticulate)## Warning: package 'reticulate' was built under R version 4.1.3
library(kableExtra)## Warning: package 'kableExtra' was built under R version 4.1.3
Input Data
Data yang digunakan merupakan data skema pinjaman suatu perusahaan perbakan dengan beberapa peubah penjelas
setwd("D:/Kuliah/Semester 6/TPM")
tpm.ind <- read.csv("data ann.csv")
head(tpm.ind)## 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(tpm.ind)## '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 ...
Berdasarkan tabel di atas menunjukkan bahwa data terdiri dari 75 observasi dengan 6 peubah yaitu besar pinjaman, lama pembayaran, bunga, pembayaran per bulan, banyak cashback dan rating.
Pengecekan Missing Value
colSums(is.na(tpm.ind))## besar_pinjaman lama_pembayaran bunga pembayaran_perbulan
## 0 0 0 0
## banyak_cashback rating
## 0 0
Berdasarkan output di atas menunjukkan bahwa data tidak terdapat data hilang (missing value) untuk semua peubah sehingga tidak perlu dilakukan penanganan.
Eksplorasi Data
library(Hmisc)## Warning: package 'Hmisc' was built under R version 4.1.3
## Loading required package: survival
##
## Attaching package: 'survival'
## The following object is masked from 'package:caret':
##
## cluster
## Loading required package: Formula
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
##
## format.pval, units
hist.data.frame(tpm.ind)Berdasarkan eksplorasi di atas menunjukkan bahwa rerata variabeltidak mengikuti distribusi normal.
Analisis Neural Network
Partisi Data Latih dan Uji
Dataset akan dibagi menjadi 70% data latih dan 30% data uji. Selanjutnya akan dilakukan scaling. Metode scaling yang kita gunakan adalah normalize (minmax scaling) dimana setiap peubah hasil scaling akan memiliki nilai pada interval 0 hingga 1.
# Membagi data menjadi data latih dan data uji dengan createDataPartition
set.seed(456)
train.index <- createDataPartition(tpm.ind$rating, p = 0.7, list = FALSE)
train <- tpm.ind[train.index, ]
test <- tpm.ind[-train.index, ]
# Melakukan Feature Scaling min max (0, 1)
preprocessParams <- preProcess(train[, -6], method=c("range"))
train_X <- as.matrix(predict(preprocessParams, train[, -6]))
test_X <- as.matrix(predict(preprocessParams, test[, -6]))
train_y <- train[, 6]
test_y <- test[, 6]Plot
Menampilkan plot pembelajaran model
plot(history)plot(history2)plot(history3)Prediksi Model
Setelah menentukan nilai parameter model Neural Network, prediksi berdasarkan nilai-nilai peubah penjelas dilakukan dengan menggunakan fungsi predict.
Model 1
prediksi <- predict(model, test_X)
head(prediksi)## [,1]
## [1,] 28.19377
## [2,] 31.48336
## [3,] 21.42753
## [4,] 25.80278
## [5,] 37.50218
## [6,] 40.85134
Model 2
prediksi2 <- predict(model2, test_X)
head(prediksi2)## [,1]
## [1,] 29.97589
## [2,] 31.44557
## [3,] 21.35119
## [4,] 26.27860
## [5,] 39.18937
## [6,] 42.27768
Model 3
prediksi3 <- predict(model3, test_X)
head(prediksi3)## [,1]
## [1,] 29.06664
## [2,] 36.71603
## [3,] 24.29812
## [4,] 25.19027
## [5,] 38.34908
## [6,] 35.85424
Evaluasi Model
Evaluasi model dilakukan pada uji berdasarkan model Neural Network yang telah diperoleh pada data latih. Evaluasi model ini menggunakan fungsi evaluate.
Model 1
scores <- model %>% evaluate(test_X, test_y)
print(scores)## loss mean_squared_error mean_absolute_error mape
## 35.988503 35.988503 4.830355 11.835647
keras_train <- model %>% predict(train_X)
keras_test <- model %>% predict(test_X)
train.hasil <- postResample(keras_train[,1], train$rating)
test.hasil <- postResample(keras_test[,1], test$rating)
data.frame(cbind(train.hasil,test.hasil))## train.hasil test.hasil
## RMSE 5.340177 5.9990411
## Rsquared 0.859803 0.8484312
## MAE 4.472322 4.8303534
Berdasarkan keluaran di atas, dapat diketahui bahwa model Neural Network yang diujikan pada data uji berhasil memiliki nilai koefisien determinasi (R-squared) sebesar 85,42%.
Model 2
scores2 <- model2 %>% evaluate(test_X, test_y)
print(scores2)## loss mean_squared_error mean_absolute_error mape
## 30.343679 30.343679 4.142885 10.597912
keras_train2 <- model2 %>% predict(train_X)
keras_test2 <- model2 %>% predict(test_X)
train.hasil2 <- postResample(keras_train2[,1], train$rating)
test.hasil2 <- postResample(keras_test2[,1], test$rating)
data.frame(cbind(train.hasil2,test.hasil2))## train.hasil2 test.hasil2
## RMSE 5.0001194 5.5085095
## Rsquared 0.8764092 0.8479256
## MAE 4.1623029 4.1428844
Berdasarkan keluaran di atas, dapat diketahui bahwa model Neural Network yang diujikan pada data uji berhasil memiliki nilai koefisien determinasi (R-squared) sebesar 85,06.
Model 3
scores3 <- model3 %>% evaluate(test_X, test_y)
print(scores3)## loss mean_squared_error mean_absolute_error mape
## 175.337860 175.337860 8.682707 18.219975
keras_train3 <- model3 %>% predict(train_X)
keras_test3 <- model3 %>% predict(test_X)
train.hasil3 <- postResample(keras_train3[,1], train$rating)
test.hasil3 <- postResample(keras_test3[,1], test$rating)
data.frame(cbind(train.hasil3,test.hasil3))## train.hasil3 test.hasil3
## RMSE 9.0798536 13.2415205
## Rsquared 0.6081252 0.2674645
## MAE 7.0570441 8.6827068
Berdasarkan keluaran di atas, dapat diketahui bahwa model Neural Network yang diujikan pada data uji berhasil memiliki nilai koefisien determinasi (R-squared) sebesar 30,15%
Perbandingan RMSE
RMSE adalah metode untuk mengevaluasiteknik peramalan yang digunakan untuk mengukur tingkat akurasi hasil prakiraan suatu model.
rmse <- data.frame(train.hasil, test.hasil, train.hasil2, test.hasil2, train.hasil3, test.hasil3)
t(rmse)## RMSE Rsquared MAE
## train.hasil 5.340177 0.8598030 4.472322
## test.hasil 5.999041 0.8484312 4.830353
## train.hasil2 5.000119 0.8764092 4.162303
## test.hasil2 5.508509 0.8479256 4.142884
## train.hasil3 9.079854 0.6081252 7.057044
## test.hasil3 13.241520 0.2674645 8.682707
Diperoleh model terbaik adalah model 2, yaitu model Neural Network dua hidden layer yang terdiri dari 256 neuron.
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. Model Neural Network menghasilkan nilai koefisien determinasi sebesar 85,42% sehingga dapat dikategorikan sebagai model yang kuat dalam memprediksi peubah respon.