Kredit Risk Modeli və Hesab Kartı Necə Hazırlanır

Göndərildi: 08.09.2021
Məqalənin müəllifi Adəm Quliyev

Python ilə statistik kredit riski modelləşdirməsinin, defolt proqnozu ehtimalının və kredit kartı kartının inkişaf etdirilməsi

13 Avqust 2020 · 17 dəq oxunub

Hamımız kredit skorlarımızı bilirik və izləyirik, elə deyilmi? 1950-ci illərdən bəri mövcud olan və kredit qabiliyyətimizi təyin edən ən vacib rəqəm. Düşünürəm ki, hamımızın kredit hesabının necə hesablandığı və ya hansı faktorların təsir etdiyinə dair əsas intuisiyaya sahibik. Kredit hesabının nə olduğu haqqında daha çox məlumat üçün əvvəlki məqaləmə baxın.

Bu yazıda, defolt ehtimalını (PD) proqnozlaşdırmaq və mövcud və ya potensial borcalanlara kredit skorlarını təyin etmək üçün Pythonda məlumatlara əsaslanan kredit riski modelini inkişaf etdirmək üçün d addımlı addımlardan keçəcəyik. Kredit skorlarının hesablanmasını asanlaşdıran yüksək dərəcədə başa düşülən və tətbiq olunan kart kartından istifadə edərək kredit puanlarını təyin edəcəyik.

Bu nümunə araşdırması ilə işləyərkən işləyən Python bilikləri və müəyyən statistik və kredit riski anlayışları haqqında əsas anlayışa sahib olacağam.

Ətrafımızda çox şey var, buna görə başlayaq.

İlkin Məlumat Araşdırma və Bölmə

ABŞ -ın P2P kreditoru olan Kredit Klubu tərəfindən verilən istehlak kreditləri ilə əlaqədar Kaggle -də mövcud olan bir məlumat toplusundan istifadə edəcəyik. Xam məlumatlara, 2007-2014 -cü illərdə verilmiş 450,000 -dən çox istehlak krediti haqqında məlumat daxildir ki, bu da 75 -ə yaxın xüsusiyyətə malikdir. Hər bir sütunda daha ətraflı məlumat üçün məlumat lüğətinə baxın.

Burada izah edildiyi kimi, anlayışlar və ümumi metodologiya korporativ kredit portfelinə də aiddir.

İlkin məlumat kəşfiyyatı aşağıdakıları ortaya qoyur:

  • Eksik dəyərlərin 80% -dən çoxu olan 18 xüsusiyyət. Eksik dəyərlərin yüksək nisbətini nəzərə alaraq, onları tətbiq etmək üçün hər hansı bir texnika, çox güman ki, qeyri -dəqiq nəticələrlə nəticələnəcəkdir
  • Kredit riski ilə əlaqəli olmayan müəyyən statik xüsusiyyətlər, məsələn, id, member_id, url, title
  • Borcalanın defolt etdikdən sonra doldurulması gözlənilən digər perspektivli xüsusiyyətlər, məsələn, bərpa, collect_recovery_fee. Buradakı məqsədimiz gələcək defolt ehtimalını proqnozlaşdırmaq olduğundan, modelimizdə bu cür xüsusiyyətlərin olması ziddiyyətli olacaq, çünki bu hadisə baş verənə qədər müşahidə olunmayacaq.

Yuxarıda göstərilən bütün xüsusiyyətlərdən imtina edəcəyik.

Hədəf Dəyişənini müəyyən edin

Məlumat araşdırmasına əsaslanaraq, hədəf dəyişənimiz kredit_statusu kimi görünür. Onun unikal dəyərlərinə və onların nisbətlərinə qısa bir nəzər salmaq da bunu təsdiqləyir.

Domen məlumatlarına əsaslanaraq aşağıdakı kredit_status dəyərləri olan kreditləri defolt (və ya 0) olaraq təsnif edəcəyik:

  • Dolduruldu
  • Defolt
  • Gec (31-120 gün)
  • Kredit siyasətinə uyğun gəlmir. Vəziyyət: Dolduruldu

Bütün digər dəyərlər yaxşı (və ya 1) olaraq təsnif ediləcək.

Məlumat Bölmə

İndi məlumatlarımızı aşağıdakı dəstlərə ayıraq: təlim (80%) və test (20%). Modelimizi əvvəlcədən qiymətləndirmək üçün təlim testində Təkrarlı Stratified k Fold testi aparacağıq, test dəsti son model qiymətləndirilməsinə qədər toxunulmamış qalacaq. Bu yanaşma ən yaxşı model qiymətləndirmə təcrübəsini izləyir.

Yuxarıdakı Şəkil 1, məlumatlarımızın gözlənildiyi kimi yaxşı kreditlərə yönəldildiyini göstərir. Buna görə, təsadüfi qarışıq seçmələrə əlavə olaraq, qatar/test bölgüsünü də təbəqələşdirəcəyik ki, test dəstində yaxşı və pis kreditlərin paylanması əvvəlcədən bölünmüş məlumatlarla eyni olsun. Bu, train_test_split funksiyasının təbəqələşmə parametri vasitəsilə əldə edilir.

Hər hansı bir məlumat təmizlənmədən və ya dəyər itkisindən əvvəl məlumatlarımızın bölünməsi test dəstindən təlim dəstinə hər hansı bir məlumat sızmasının qarşısını alır və daha dəqiq model qiymətləndirilməsi ilə nəticələnir. Daha ətraflı məlumat üçün əvvəlki məqaləmə baxın.

İndiyə qədər görülən işlər üçün bir kod parçası aşağıdakı kimidir:

Məlumatların Təmizlənməsi

Sonra aşağıdakı kimi bəzi lazımlı məlumatların təmizlənməsi vəzifələri gəlir:

  • Mətni emp_length sütunundan (məsələn, illər) silin və rəqəmə çevirin
  • Tarixi olan bütün sütunlar üçün: onları Python -un datetime formatına çevirin, model inkişaf tarixi ilə müvafiq tarix xüsusiyyəti arasında yeni bir sütun yaradın və sonra orijinal xüsusiyyəti buraxın
  • Termin sütunundakı mətni çıxarın və rəqəmə çevirin

Yuxarıdakı vəzifələrin hər biri üçün köməkçi funksiyaları təyin edəcəyik və onları təlim məlumatlarına tətbiq edəcəyik. Bu köməkçi funksiyalara sahib olmaq, kodumuzu təkrarlamadan test tapşırıqlarında eyni vəzifələri yerinə yetirməkdə bizə kömək edəcək.

Xüsusiyyət Seçimi

Bundan sonra, kateqoriyalı xüsusiyyətlər üçün Chi-square testini və rəqəmsal xüsusiyyətlər üçün ANOVA F-statistikasını istifadə edərək ikili təsnifat problemimiz üçün ən uyğun xüsusiyyətləri müəyyən etmək üçün xüsusiyyət seçimi həyata keçirəcəyik. Bu xüsusiyyət seçmə üsulları və kateqoriya və ədədi dəyişənlərə niyə fərqli texnikalar tətbiq edildiyi haqqında daha ətraflı məlumat üçün əvvəlki məqaləmə baxın.

Kateqoriyalı xüsusiyyətlər üzrə Chi-square testimizdən artan qaydada p dəyərləri aşağıdakı kimidir:

Sadəlik naminə, yalnız ilk dörd xüsusiyyəti saxlayacağıq və qalanlarını buraxacağıq.

34 rəqəmsal xüsusiyyət üçün ANOVA F-statistikası, 23.513 ilə 0.39 arasında geniş bir F dəyər aralığını göstərir. İlk 20 xüsusiyyəti saxlayacağıq və potensial olaraq model qiymətləndirmə nəticələrimizin kifayət qədər ağlabatan olmadığı halda daha çoxunu seçmək üçün geri dönəcəyik.

Sonra, hər hansı bir potensial çox xətti dəyişənləri aşkar etmək üçün seçilmiş ilk 20 ədədi xüsusiyyətin cütlük korrelyasiyalarını hesablayacağıq. Bu cütlüklü korrelyasiyaların istilik xəritəsi iki xüsusiyyəti (out_prncp_inv və total_pymnt_inv) yüksək əlaqəli olaraq təyin edir. Buna görə də onları modelimiz üçün buraxacağıq.

Sonra, sadəcə siyahıya salınacaq bütün xüsusiyyətləri qeyd edəcəyik və onları atmaq üçün bir funksiya təyin edəcəyik. Bu xüsusiyyət seçmə texnikasının kodu aşağıdakı kimidir:

Tək İstifadəli Kodlaşdırma və Test Məlumat Küməsini Yeniləyin

Daha sonra, dörd son kateqoriyalı dəyişənin saxta dəyişənlərini yaradacağıq və təlim məlumat bazasına indiyə qədər tətbiq olunan bütün funksiyalar vasitəsilə test məlumatlarını yeniləyəcəyik.

Kukla dəyişənləri necə yaratmağımızla bağlı bir neçə məqama diqqət yetirin:

  • Bütün dəyişənlər üçün xüsusi bir adlandırma konvensiyasından istifadə edəcəyik: orijinal dəyişən adı, iki nöqtə, kateqoriya adı
  • Ümumiyyətlə, multikollinearlığın qarşısını almaq üçün pd.get_dummies -in drop_first parametri vasitəsilə saxta dəyişənlərdən biri düşür. Ancaq bu mərhələdə bunu etməyəcəyik, çünki bütün saxta dəyişənlərdən kateqoriyalarımızın Sübut Ağırlığını (WoE) və Məlumat Dəyərlərini (IV) hesablamasını tələb edirik - bu barədə daha sonra. Daha sonra hər bir kateqoriya üçün bir kukla dəyişən buraxacağıq
  • WoE hesablamaları üçün ehtiyac duyduğumuz kateqoriyalı dəyişənləri aşağı salacağımıza görə, təlim məlumatlarımızda da saxta dəyişənlər yaratmayacağıq. Buna görə, yeni bir saxta dəyişənlərdən ibarət bir məlumat çərçivəsi yaradacağıq və sonra orijinal təlim/test məlumat çərçivəsinə birləşdirəcəyik.

Bundan sonra, test məlumat bazasını indiyə qədər müəyyən edilmiş bütün funksiyalardan keçərək yeniləyəcəyik. Kukla dəyişənlər yaratdıqdan sonra yenilənmiş test məlumatlarının yenidən indekslənməsinə xüsusi diqqət yetirin. Bunu praktik bir nümunə ilə izah edim.

Öncədən bölünmüş məlumatlarda aşağıdakı bənzərsiz dəyərləri olan dərəcəli adlanan kateqoriyalı bir xüsusiyyəti nəzərdən keçirək: A, B, C və D Sınıf kateqoriyasında D ilə müşahidələr test dəstində seçilir. Buna görə də, təlim məlumatlarında sinifin kukla dəyişənləri not olacaq: A, not: B, sinif: C, və not: D, lakin sinif: D test dəstində saxta dəyişən kimi yaradılmayacaq. Modelin mövcud olması gözlənilən bir xüsusiyyət olmadığı təqdirdə, proqnozlar vermək üçün uyğun bir modeli test dəstinə tətbiq edə bilməyəcəyik. Buna görə, test dəstini təlim məlumatları ilə eyni sütunlara malik olmasını təmin etmək üçün yenidən indeksləyirik və hər hansı bir itkin sütun 0 dəyərlə əlavə olunur.0 dəyəri olduqca intuitivdir, çünki bu kateqoriya heç bir test nümunəsində müşahidə edilməyəcəkdir.

WoE Binning və Xüsusiyyət Mühəndisliyi

WoE-ə əsaslanan bütün sayısal və kateqoriyalı dəyişənlər üçün yeni kateqoriyalı xüsusiyyətlər yaratmaq, kredit riski modeli hazırlamadan əvvəl ən kritik addımlardan biridir və həm də çox vaxt aparır. Bu məşqi yerinə yetirmək üçün GitHub -da və başqa yerlərdə xüsusi xüsusi Python paketləri və funksiyaları mövcuddur. Ancaq bir az daha rahatlıq və prosesə nəzarət etməyimə imkan verdiyindən bunu əllə etməyi üstün tuturam.

Bəs WoE və IV nədir?

Dəlilin Ağırlığı (WoE) və Məlumat Dəyəri (IV) xüsusiyyət mühəndisliyi və seçim üçün istifadə olunur və kredit skorlama sahəsində geniş istifadə olunur.

WoE, hədəf dəyişənə nisbətən müstəqil bir dəyişənin proqnozlaşdırıcı gücünün ölçüsüdür. Xüsusi bir xüsusiyyətin, hədəf siniflərimiz arasında fərqləndirə biləcəyini ölçür: yaxşı və pis müştərilər.

IV xüsusiyyətlərimizi nisbi əhəmiyyətinə görə sıralamağa kömək edir.

Baesens et al.¹ və Siddiqi² -ə görə, WOE və IV analizləri aşağıdakıları etməyə imkan verir:

  • Hər bir dəyişənin nəticəyə müstəqil töhfəsini nəzərdən keçirin
  • Xətti və xətti olmayan əlaqələri aşkar edin
  • Dəyişkənləri birmənalı olmayan proqnozlaşdırma gücü baxımından
  • Dəyişənlər və ikili nəticə arasındakı əlaqəni təsəvvür edin
  • Kütləvi dəyişənlər yaratmadan davamlı və kateqoriyalı dəyişənlərin gücünü müqayisə edin
  • Eksiklikləri dəyərləndirmədən problemsiz idarə edin. (Qeyd edək ki, indiyə qədər heç bir itkin dəyər hesab etməmişik, bunun səbəbi budur. Eksik dəyərlərə WoE xüsusiyyət mühəndisliyi mərhələsində ayrı bir kateqoriya veriləcək)
  • Eksik dəyərlərin proqnozlaşdırıcı gücünü qiymətləndirin

Dəlilin Ağırlığı (WoE)

WoE hesablamaq üçün düstur aşağıdakı kimidir:

Müsbət WoE, yaxşı müştərilərin nisbəti pis müştərilərdən daha çox və mənfi WoE dəyəri üçün əksinə deməkdir.

WoE xüsusiyyət mühəndisliyi üçün addımlar

  1. Kateqoriyalı bir dəyişənin hər bir unikal dəyəri (bin) üçün WoE hesablayın, məsələn, hər bir dərəcə üçün: A, grad: B, grad: C və s.
  2. Davamlı bir dəyişəni, paylanmasına və bənzərsiz müşahidələrin sayına görə, bəlkə də pd.cut (incə təsnifat adlanır) istifadə edərək diskret qutulara bölün.
  3. Davamlı dəyişənin hər bir törəmə qutusu üçün WoE hesablayın
  4. Həm kateqoriya, həm də ədədi xüsusiyyətlərin hər bir bölməsi üçün WoE hesablandıqdan sonra, qabları aşağıdakı qaydalara uyğun olaraq birləşdirin (qaba təsnifat adlanır)

WoE qutularının birləşdirilməsi ilə bağlı qaydalar

  1. Hər bir çöpdə ən azı 5% müşahidələr olmalıdır
  2. Hər bir qutu həm yaxşı, həm də pis kreditlər üçün sıfır olmamalıdır
  3. WOE hər bir kateqoriya üçün fərqli olmalıdır. Bənzər qruplar bir yerə yığılmalı və ya birləşdirilməlidir. Bənzər WoE olan qutular, eyni proqnozlaşdırma gücünü nəzərdə tutaraq, demək olar ki, eyni nisbətdə yaxşı və ya pis kredit nisbətinə sahib olmasıdır.
  4. WOE monotonik olmalıdır, yəni çöplərlə birlikdə ya böyüyür, ya da azalır
  5. Eksik dəyərlər ayrıca qeyd olunur

Yuxarıda göstərilən qaydalar ümumiyyətlə qəbul edilir və akademik ədəbiyyatda yaxşı sənədləşdirilir³.

Niyə ədədi xüsusiyyətləri ayırd etmək

Rəqəmsal xüsusiyyətlərin diskretləşdirilməsi və ya yığılması, ümumiyyətlə məlumat itkisinə səbəb olduğu üçün maşın öyrənmə alqoritmləri üçün tövsiyə edilmir. Ancaq burada son məqsədimiz, nəticədə kredit skorinq modelinə əsaslanan bir kart kartı yaratmaqdır. Qiymət kartı, yeni bir təlimsiz müşahidəni (məsələn, test verilənlər bazasından) kart kartı meyarlarına uyğun olaraq təsnif etməklə istifadə olunur.

Davamlı dəyişənləri saxlamadığımızı nəzərə alsaq, müvafiq əmsal/çəkiyə malik yalnız bir gəlir kateqoriyasına sahib olacağıq və bütün gələcək potensial borcalanlara gəlirlərindən asılı olmayaraq bu kateqoriyada eyni bal veriləcək. Bununla birlikdə, gəlir kateqoriyasını ayrı -ayrı siniflərə ayırırıqsa (hər biri fərqli WoE ilə), birdən çox kateqoriya ilə nəticələnirsə, potensial yeni borcalanlar gəlirlərinə görə gəlir kateqoriyalarından birinə bölünəcək və buna görə qiymətləndiriləcək.

Davamlı dəyişənlərin WoE binninqi, 1960 -cı illərdə FICO -nun kommersiya qiymətləndirmə kartını ilk dəfə hazırlamasından bəri mövcud olan köklü bir sənaye təcrübəsidir və bunu dəstəkləyən əhəmiyyətli ədəbiyyatlar var. Ədəbiyyatdan davamlı xüsusiyyətləri ayırmaq üçün digər əsaslardan bəziləri bunlardır:

  • Yüksək pul və qeyri-pul səhv təsnifat xərcləri nəzərə alınmaqla, bir hesab kartının bir işçi tərəfindən (Basel Sazişi, demək olar ki, bütün mərkəzi banklar və müxtəlif kredit təşkilatları tərəfindən qoyulan tələb) asanlıqla şərh edilə bilməsi qanuni olaraq tələb olunur. Bu, heç bir davamlı dəyişənə malik olmayan bir hesab kartı ilə asanlıqla əldə edilir və hamısı diskretləşdirilir. Aşağı və ya yüksək balların səbəbləri asanlıqla başa düşülə və üçüncü tərəflərə izah edilə bilər. Bütün bunlar, qiymətləndirmə kartlarının son istifadəçilərdən daha mürəkkəb modellərə nisbətən 'alış' almasını asanlaşdırır
  • Qiymət kartları üçün başqa bir qanuni tələb, aşağı və yüksək riskli müşahidələri ayıra bilmələridir⁴. WoE binning bu məsələni həll edir, çünki WoE bu konsepsiyaya əsaslanır
  • Monotoniklik. Bininq alqoritmindən zibil qutularına daxil olan məlumatların bölünməsini elə bir şəkildə bölmək gözlənilir ki, eyni istiqamətdə bir zibil qutusundan digərinə keçsəniz, kredit riski göstəricisində monotonik bir dəyişiklik olacaq, yəni kreditdə ani sıçrayışlar olmayacaq. Gəliriniz dəyişərsə hesab verin. Bu, bir proqnozlaşdırıcı dəyişənin qlobal monoton olmayan əlaqələr halında daha yüksək riskləri daha aşağı risklərdən ayıra biləcəyi əsas fərziyyəsindən irəli gəlir.
  • Logistik reqressiya modelinin əsas fərziyyəsi, bütün xüsusiyyətlərin hədəf dəyişənin log-odds (logit) ilə xətti bir əlaqəyə sahib olmasıdır. 38 min dollar gəliri olan biri ilə 39 min dolları arasında fərq varmı? Çox güman ki, yox, gəliri davamlı dəyişən kimi qəbul etmək bu fərziyyəni irəli sürür. WoE -yə əsaslanaraq kateqoriyalara bölünərək, modelimizin statistik bir fərq olub -olmamasına qərar verə bilərik; yoxdursa, eyni kateqoriyaya birləşdirilə bilər
  • Eksik və kənar dəyərlər ayrı -ayrılıqda təsnif edilə bilər və ya ən böyük və ya ən kiçik zibil qutusu ilə birləşdirilə bilər - buna görə də itkin dəyərləri hesablamaq və ya kənarları idarə etmək üçün heç bir fərziyyəyə ehtiyac yoxdur.

Məlumat dəyəri (IV)

IV aşağıdakı kimi hesablanır:

Siddiqi² -yə görə, şərti olaraq, kredit skorlamasında IV -ün dəyərləri belə şərh olunur: