Credit Scoring — Scorecard Development
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
- Data Preparation
Mengdrop data person_emp_length, loan_intent dan loan_amnt.
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 %.
Split data untuk train set dan test set. Dengan perbandingan 70% training set dan 30% test set.
2. Data Exploration
2.1 EDA
Cek missing values pada data. Ditemukan sebesar 2200 pada loan_int_rate, akan exlucle kan setelah proses binning
Cek data type
Distribusi data rata-rata cenderung untuk skewd ke kanan.
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
3. Initial Characteristic Analysis
3.1 Characteristic Binning
Binning pada data dimana menggunakan 2 binning saja.
hasilnya,
Check missing values pada hasil binning
Setelah melakukan fillna pada hasil binning
3.2 WoE and 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
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.
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.
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
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
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
Setelah dihitung dengan formula diatas
Rentang nilai yang bisa didapat per attribut
Rentang akumulasi nilai yang mungkin didapat
Mencoba prediksi dengan input(dengan asumsi cutoff 190):
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
Credit Process 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