Credit Scoring — Scorecard Development

Randityateri
7 min readNov 5, 2023

--

Randitya Teri Ariyanto

Introduction and Background

Industri kredit merupakan salah satu industri yang berkembang cukup pesat. Didorong oleh kebutuhan yang semakin banyak dan semakin mudahnya untuk bertransaksi.

Industri ini mengambil keuntungan dari bunga pinjaman, denda, dan lain sebagainya dari peminjam. Tetapi bukannya tanpa resiko, terkadang ada peminjam ada yang gagal bayar dan menjadi potensi kerugian bagi perusahaan.

Untuk mengurangi kemungkinan banyaknya gagal bayar, perusahaan memberikan credit scoring untuk setiap calon peminjam. Credit scoring merupakan bentuk penilaian kepada calon peminjam berdasarkan kriteria tertentu dengan hasil tertentu yang dapat membantu perusahaan untuk menentukan layak atau tidaknya seseorang untuk dapat dipinjami.

Project ini ingin menurunkan bad rate.

Dataset Description

Dataset ini diperoleh dari Kaggle dengan nama Credit Risk Dataset.

Dataset memiliki 12 kolom variabel dan 32581 baris, dengan oenjelasan sebagai berikut:

person_age = umur

person_income = pendapatan tahunan

person_home_ownership = status kepemilikan rumah

person_emp_length = lamanya bekerja dalam tahun

loan_intent = keperluan pinjaman

loan_grade = tingkatan pinjaman

loan_amnt = jumlah pinjaman

loan_int_rate = suku bunga

loan_status = status pinjaman (0 untuk non default, 1 untuk default)

loan_percent_income = percentase pendapatan

cb_person_default_on_file = pernah default atau tidak

cb_preson_cred_hist_length = lamanya credit terdahulu

Namun pada project kali ini saya tidak akan menggunakan person_emp_length, loan_intent dan loan_amnt untuk menurunkan bad rate.

Scorecards Development

  1. Data Preparation
semua data

Mengdrop data person_emp_length, loan_intent dan loan_amnt.

drop data

Response atau taget di set ke loan_status dimana 0 bearti non default sedangkan 1 adalah default. Non default memiliki prosentase sebesar 78% dan default sebesar 21 %.

set response target

Split data untuk train set dan test set. Dengan perbandingan 70% training set dan 30% test set.

splitting data

2. Data Exploration

2.1 EDA

Cek missing values pada data. Ditemukan sebesar 2200 pada loan_int_rate, akan exlucle kan setelah proses binning

missing values

Cek data type

data type

Distribusi data rata-rata cenderung untuk skewd ke kanan.

distribusi data

2.2 Check Multicollinearity

Menurut Anwar Hidayat Multikolinearitas adalah sebuah situasi yang menunjukkan adanya korelasi atau hubungan kuat antara dua variabel bebas atau lebih dalam sebuah model regresi berganda.”

Terdapat multicolinearity antara person_age dan cb_person_cred_hist_length yang cukup kuat sebesar 0.86. Nantinya kita akan menggunakan salah satunya saja

check multicolinearity

3. Initial Characteristic Analysis

3.1 Characteristic Binning

Binning pada data dimana menggunakan 2 binning saja.

binning

hasilnya,

hasil binning

Check missing values pada hasil binning

check missing values

Setelah melakukan fillna pada hasil binning

missing values

3.2 WoE and IV

tabel woe
tabel IV

Setelah mendapatkan WOE dan IV , akan mengkatagorikan sebagai berikut:

IV dibawah 0.1 dikategorikan sebagai ‘weak’

IV diantara 0.1 sampai 0.25 dikategorikan sebagai ‘medium’

IV diatas 0.25 dikategorikan sebagai ‘strong’

Hasil dari pengkategorian

Hasil Kategori

3.3 Check Logical Trend and Business Consideration

3.3.1 Person Age

Kelompok umur 19 tahun sampai 26 cenderung memiliki resiko default lebih besar daripada kelompok umur 26 sampai 144

3.3.2 Person Income

Kelompok income 3999 sampai 55000 cenderung memiliki resiko default lebih besar daripada kelompok income 55000 sampai 6000000.

3.3.3 Loan Int Rate

Kelompok loan int rate 10.99 sampai 22.48 cenderung memiliki resiko default lebih besar daripada kelompok 5.419 sampai 10.99

3.3.4 Loan Percent Income

Kelompok loan percent income 0.15 sampai 0.83 cenderung memiliki resiko lebih besar default daripada kelompok 0 sampai 0.15

3.3.5 Cb Person Cred Hist Length

Kelompokperson cred hist length 1.99 sampai 4 cenderung memiliki resiko default lebih besar daripada kelompok umur 4 sampai 30

3.3.6 Person Home Ownership

Kelompok person home ownership rent dan other memiliki resiko lebih besar untuk default daripada mortgage dan own

3.3.7 Loan Grade

Kelompok loan grade a memiliki resiko default lebih rendah daripada b kemudian diikuti berurutan oleh c, d, e ,f , dan g.

3.3.8 Cb Person Default on file

Kelompok person default on file yes memiliki resiko lebih besar untuk default daripada no

3.4 Test of Idenpendence

Semua variable merupakan not independent

3.5 Modeling with Logistic Regression

3.5.1 Merubah value ke WOE

Merubah semua value ke bentuk WOE supaya model lebih sederhana.

train woe
test WOE

3.5.2 Logistic Regression

Menggunakan logistic regression dikarenakan metode yang bagus untuk memodelkan biner(yes/no atau 1/0). Selain itu menggunakan metode metode forward selection untuk menghemat waktu dang ruang dengan resiko menurunkan kemungkinan menemukan model terbaik. Metric yang digunakan adalah Recall.

forard selection
best predictor

Didapatkan best predictor yaitu kombinasi loan_int_rate, person_age, cb_person_cred_hist_length_cb_person_default_on_file, person_home_ownership, dan loan_percent_income dengan hasil recall 0.794.

3.5.3 Model Evalution

recall test

Didapatkan nilai recall 0.796. Nilai ini cukup mencurigakan dikarenakan nilai yang cukup mirip, biasanya nilai test akan sedikit menurun daripada nilai recall train. Selanjutnya kita akan melalukan model adjustment.

3.5.4 Model Adjustment

train test
test train

Didapatkan nilai 0.784 pada data training dana 0.787 pada data test.

4. Design Scorecards

Nilai WOE setiap attribute akan dikonversi menjadi score point dan diakumulasikan menjadi scorecard

Rumus konversi adalah

rumus konversi

Setelah dihitung dengan formula diatas

score point

Rentang nilai yang bisa didapat per attribut

rentang nilai

Rentang akumulasi nilai yang mungkin didapat

rentang akumulasi

Mencoba prediksi dengan input(dengan asumsi cutoff 190):

input test

Hasil test

hasil test

Implementation Plan

Untuk menentukan cutoff kita membutuhkan expected badrate dan approval rate. Expected badrate didapatkan dari test dan approval dari train.

Untuk menurunkan badrate, saya berasumsi memilih cut off di 190, dengan approval rate 0.758 dan badrate di 0,24

cut off

Credit Process Workflow

Credit Workflow

Calon cutomer memasukan ID, dan attribut yang dibutuhkan. Model akan menghasilkan credit scoring. Jika lebih dari 190 maka akan diterima dan dibawah itu akan ditolak.

Conclusion and Recommendation

Conclusion

Dataset yang digunakan adalah Credit Risk Dataset dari Kaggle

Model yang digunakan adalah Logistic Regression dengan Forward Seection

Sebelum diadjustment recall train 0.794 dan test 0.796

Setelah diadjustment 0.784 pada data training dan 0.787 pada test

Rentang nilai yang mungkin didapat antara 1 sampai 292, cutoff 190, dengan expected badrate sebesar 0.24 dan approval rate 0.75

Recommendation

Dapat membuat alternatif jika calon customer nilai dibawah 190 agar direview lebih lanjut, untuk meminimalisir kehilangan calon good customer

Bisa mencoba menggunakan metode model lain seperti desision tree atau random forest

Github https://github.com/randityateri/credit-scoring

Youtube https://youtu.be/tUgHmrZhR5Q

Dataset Kaggle https://www.kaggle.com/datasets/laotse/credit-risk-dataset

References

https://www.statistikian.com/2016/11/multikolinearitas.html

Pacmann AI https://pacmann.io/

https://www.youtube.com/watch?v=f2ortkJfTKw&pp=ygUOY3JlZGl0IHNjb3Jpbmc%3D

--

--