Dalam dunia keuangan/kredit, kemampuan perusahaan untuk menganalisa konsumen dan menentukan siapa yang layak diberikan pinjaman adalah hal yang sangat krusial. Tepat atau tidaknya sebuah institusi keuangan untuk melakukan pinjaman ke nasabah akan menentukan apakah institusi tersebut dapat memperoleh keuntungan, atau justru akan menambah presentase NPL (Non-Performing Loan) yang akan merugikan perusahaan tersebut.
Project ini didesain untuk mempermudah sebuah institusi keuangan dalam menganalisa konsumen dan menentukan konsumen yang akan mendapatkan pinjaman. Informasi “eligibility” konsumen akan diidentifikasi dengan beberapa variabel prediktor dengan hasil yang ditampilkan dalam sebuah dashboard secara realtime. Dengan begitu, perusahaan akan segera mengetahui calon konsumen yang diprediksi mampu melakukan pembayaran. Di samping itu, perusahaan juga mampu mengurangi presentasi NPL.
Target: memprediksi apakah calon konsumen mampu membayar pinjaman/gagal bayar dengan beberapa variabel prediktor.
Membuat sebuah model machine learning yang mampu memprediksi “eligibility” pinjaman oleh calon konsumen berdasarkan profil calon konsumen tersebut secara real time.
Data yang akan digunakan adalah data Dream Housing Finance yang bersumber dari Kaggle. Data ini berisi beberapa kolom antara lain:
Loan_ID: Unique Loan IDGender: Male/FemaleMarried: Applicant Married (Y/N)Dependents: Number of dependentsEducation: Applicant Education (Graduate/ Under
Graduate)Self_Employed: Self-employed (Y/N)ApplicantIncome: Applicant incomeCoapplicantIncome: Coapplicant incomeLoanAmount: Loan amount in thousandsLoan_Amount_Term: Term of a loan in monthsCredit_History: Credit history meets guidelinesProperty_Area: Urban/ Semi-Urban/ RuralLoan_Status: Loan approved (Y/N)Dari kolom-kolom tersebut, kolom Loan_Status akan
menjadi variabel target.
Output dari project ini adalah sebuah dashboard realtime yang akan menampilkan informasi mengenai status pinjaman calon konsumen yang diproses berdasarkan permodelan machine learning. Informasi yang ditampilkan oleh dashboard adalah data profil calon konsumen sebagai variabel prediktor, serta status pinjaman calon konsumen tersebut akan disetujui/tidak.
Proses yang akan dilakukan adalah: 1. Melihat dan mengubah tipe data
2. Menghapus kolom yang tidak diperlukan 3. Mengecek dan mengisi baris
yang kosong 4. Mengubah isi kolom Gender,
Married, Education,
Self_Employed, dan Loan_Status dengan data
numerik 5. Membuat permodelan dan prediksi 6. Mengevaluasi model dan
hasil prediksi
Beberapa proses awal yang akan dilakukan adalah sebagai berikut.
# menyiapkan library
options(scipen = 999)
library(lattice)
library(data.table)
library(ggplot2)
library(dplyr)
library(caret)
library(randomForest)
library(tidyr)
library(stringr)
# membaca data train
loan <- read.csv("loan-train.csv")
glimpse(loan)
## Rows: 614
## Columns: 13
## $ Loan_ID <chr> "LP001002", "LP001003", "LP001005", "LP001006", "LP0…
## $ Gender <chr> "Male", "Male", "Male", "Male", "Male", "Male", "Mal…
## $ Married <chr> "No", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "Yes"…
## $ Dependents <chr> "0", "1", "0", "0", "0", "2", "0", "3+", "2", "1", "…
## $ Education <chr> "Graduate", "Graduate", "Graduate", "Not Graduate", …
## $ Self_Employed <chr> "No", "No", "Yes", "No", "No", "Yes", "No", "No", "N…
## $ ApplicantIncome <int> 5849, 4583, 3000, 2583, 6000, 5417, 2333, 3036, 4006…
## $ CoapplicantIncome <dbl> 0, 1508, 0, 2358, 0, 4196, 1516, 2504, 1526, 10968, …
## $ LoanAmount <int> NA, 128, 66, 120, 141, 267, 95, 158, 168, 349, 70, 1…
## $ Loan_Amount_Term <int> 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 36…
## $ Credit_History <int> 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, NA, …
## $ Property_Area <chr> "Urban", "Rural", "Urban", "Urban", "Urban", "Urban"…
## $ Loan_Status <chr> "Y", "N", "Y", "Y", "Y", "Y", "Y", "N", "Y", "N", "Y…
# mengubah tipe data
loan_clean <- loan %>%
mutate(Gender = as.factor(Gender),
Married = as.factor(Married),
Dependents = as.factor(Dependents),
Education = as.factor(Education),
Self_Employed = as.factor(Self_Employed),
Loan_Amount_Term = as.factor(Loan_Amount_Term),
Credit_History = as.factor(Credit_History),
Property_Area = as.factor(Property_Area),
Loan_Status = as.factor(Loan_Status))
glimpse(loan_clean)
## Rows: 614
## Columns: 13
## $ Loan_ID <chr> "LP001002", "LP001003", "LP001005", "LP001006", "LP0…
## $ Gender <fct> Male, Male, Male, Male, Male, Male, Male, Male, Male…
## $ Married <fct> No, Yes, Yes, Yes, No, Yes, Yes, Yes, Yes, Yes, Yes,…
## $ Dependents <fct> 0, 1, 0, 0, 0, 2, 0, 3+, 2, 1, 2, 2, 2, 0, 2, 0, 1, …
## $ Education <fct> Graduate, Graduate, Graduate, Not Graduate, Graduate…
## $ Self_Employed <fct> No, No, Yes, No, No, Yes, No, No, No, No, No, , No, …
## $ ApplicantIncome <int> 5849, 4583, 3000, 2583, 6000, 5417, 2333, 3036, 4006…
## $ CoapplicantIncome <dbl> 0, 1508, 0, 2358, 0, 4196, 1516, 2504, 1526, 10968, …
## $ LoanAmount <int> NA, 128, 66, 120, 141, 267, 95, 158, 168, 349, 70, 1…
## $ Loan_Amount_Term <fct> 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, 36…
## $ Credit_History <fct> 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, NA, …
## $ Property_Area <fct> Urban, Rural, Urban, Urban, Urban, Urban, Urban, Sem…
## $ Loan_Status <fct> Y, N, Y, Y, Y, Y, Y, N, Y, N, Y, Y, Y, N, Y, Y, Y, N…