반응형
반응형

 

첫 번째 단계는 데이터를 잘 이해하는 것입니다. 일반적으로 소비자 대출과 신용 카드는 신용 리스크 모델링이 적용되는 가장 전형적인 소매 금융 상품입니다. 본 프로젝트에서는 소비자 대출에 중점을 두어 모델 구축 과정에서 직면할 수 있는 다양한 도전 과제들을 살펴볼 것입니다. 

 

Lending Club의 데이터셋을 사용하여 신용 리스크 모델링을 진행할 것입니다. Lending Club은 미국 기반의 P2P 대출 회사로, 투자자와 대출자를 매칭하여 운영됩니다. 투자자들은 Lending Club을 통해 자금을 투자하며, 이 자금은 대출자에게 전달됩니다. 대출자는 대출금을 상환하면 원금과 이자가 투자자에게 반환됩니다. 이는 대출자에게는 보통 더 낮은 대출 이율을, 투자자에게는 더 높은 수익률을 제공하는 상호 이익을 실현합니다.

 

이 데이터셋은 Lending Club이 2007년부터 2015년까지 발행한 80만 건 이상의 소비자 대출에 대한 모든 가용 데이터를 포함하고 있습니다. 이 데이터셋에는 현재 대출 상태(loan_status)와 최신 결제 정보가 포함되어 있습니다. 데이터셋의 주요 특징(변수)에는 재무 조회 횟수(inq_fi), 주소(addr_state, zip_code,...), 그리고 회수(collections) 상태 등이 포함됩니다. 회수(수금) 변수는 고객이 하나 이상의 결제를 놓쳤고, 팀이 자금을 회수하려고 노력하고 있는지를 나타냅니다. 

 

다음은 Lending Club 데이터셋의 변수와 설명을 표 형식으로 정리한 것입니다:

addr_state 대출 신청서에서 대출자가 제공한 주(State)
annual_inc 대출 신청 시 대출자가 제공한 연간 소득
annual_inc_joint 공동 대출자들이 제공한 연간 소득
application_type 대출이 개인 신청인지 공동 신청인지 나타냅니다
collection_recovery_fee 채무 불이행 후 회수 수수료
collections_12_mths_ex_med 의료 채무를 제외한 12개월 내 채무 회수 건수
delinq_2yrs 최근 2년간 30일 이상 연체된 건수
desc 대출자가 제공한 대출 설명
dti 총 월 부채 상환액을 월 소득으로 나눈 비율(모기지 및 요청한 LC 대출 제외)
dti_joint 공동 대출자의 총 월 부채 상환액을 월 소득으로 나눈 비율(모기지 및 요청한 LC 대출 제외)
earliest_cr_line 대출자의 가장 오래된 신용 계좌 개설 월
emp_length 고용 기간(연 단위, 0은 1년 미만, 10은 10년 이상)
emp_title 대출자가 대출 신청 시 제공한 직무 제목
fico_range_high 대출 원가 시 대출자의 FICO 점수 상한 범위
fico_range_low 대출 원가 시 대출자의 FICO 점수 하한 범위
funded_amnt 대출에 대해 현재까지 배정된 총 금액
funded_amnt_inv 투자자들이 해당 대출에 대해 현재까지 배정한 총 금액
grade LC가 지정한 대출 등급
home_ownership 대출 신청 시 대출자가 제공한 주택 소유 상태(예: 임대, 소유, 모기지, 기타)
id 대출 상장에 대한 LC의 고유 ID
initial_list_status 대출의 초기 상장 상태(예: W, F)
inq_last_6mths 최근 6개월 내 신용 조회 횟수(자동차 및 모기지 조회 제외)
installment 대출이 시작될 때 대출자가 매월 지불해야 하는 금액
int_rate 대출의 이자율
is_inc_v 소득이 LC에 의해 검증되었는지 여부(검증됨, 검증되지 않음)
issue_d 대출이 자금이 지원된 월
last_credit_pull_d LC가 해당 대출에 대해 가장 최근에 신용 조회를 한 월
last_fico_range_high 최근 신용 조회 시 대출자의 FICO 점수 상한 범위
last_fico_range_low 최근 신용 조회 시 대출자의 FICO 점수 하한 범위
last_pymnt_amnt 마지막으로 받은 총 지불 금액
last_pymnt_d 마지막으로 지불이 이루어진 월
loan_amnt 대출자가 신청한 대출 금액, 신용 부서에서 금액을 조정한 경우 반영됩니다.
loan_status 대출의 현재 상태 (예: 현재, 연체, 전액 상환)
member_id 대출자의 고유 LC ID
mths_since_last_delinq 대출자의 마지막 연체 후 경과된 개월 수
mths_since_last_major_derog 가장 최근의 90일 이상 심각한 신용 기록 후 경과된 개월 수
mths_since_last_record 마지막 공적 기록 후 경과된 개월 수
next_pymnt_d 다음 예정된 지불 날짜
open_acc 대출자의 신용 파일에 열린 신용 계좌의 수
out_prncp 총 자금 배정액 중 남은 원금
out_prncp_inv 투자자들에 의해 배정된 총 자금의 남은 원금
policy_code 공공 데이터 접근 정책 코드(공개 제품은 1, 비공개 제품은 2)
pub_rec 공적 기록의 수
purpose 대출 요청에 대해 대출자가 제공한 카테고리
pymnt_plan 대출에 대한 지불 계획 여부
recoveries 채무 불이행 후 회수된 총 금액
revol_bal 총 신용 회전 잔액
revol_util 총 회전 신용 한도 대비 사용 비율
sub_grade LC가 지정한 대출 하위 등급
term 대출의 상환 개월 수 (36개월 또는 60개월)
title 대출자가 제공한 대출 제목
total_acc 대출자의 신용 파일에 있는 총 신용 계좌 수
total_pymnt 지금까지 받은 총 지불 금액
total_pymnt_inv 투자자들에 의해 지금까지 받은 총 지불 금액
total_rec_int 지금까지 받은 총 이자 금액
total_rec_late_fee 지금까지 받은 총 연체 수수료
total_rec_prncp 지금까지 받은 총 원금 금액
url 대출 상장 데이터가 있는 LC 페이지의 URL
verified_status_joint 공동 대출자의 공동 소득 검증 여부
zip_code 대출 신청서에서 대출자가 제공한 우편번호의 첫 3자리
open_acc_6m 최근 6개월 내 열린 거래의 수
open_il_6m 현재 활성화된 할부 거래의 수
open_il_12m 최근 12개월 내 개설된 할부 계좌의 수
open_il_24m 최근 24개월 내 개설된 할부 계좌의 수
mths_since_rcnt_il 가장 최근의 할부 계좌 개설 이후 경과된 개월 수
total_bal_il 모든 할부 계좌의 현재 총 잔액
il_util 모든 할부 계좌의 총 현재 잔액 대비 최고 신용 한도 비율
open_rv_12m 최근 12개월 내 개설된 회전 거래의 수
open_rv_24m 최근 24개월 내 개설된 회전 거래의 수
max_bal_bc 모든 회전 계좌에서의 최대 현재 잔액
all_util 모든 거래의 잔액 대비 신용 한도 비율
total_rev_hi_lim 총 회전 신용 한도
inq_fi 개인 금융 조회 횟수
total_cu_tl 금융 거래의 수
inq_last_12m 최근 12개월 내 신용 조회 횟수
acc_now_delinq 현재 연체 상태인 계좌의 수
tot_coll_amt 지금까지의 총 채무 회수 금액
tot_cur_bal 모든 계좌의 현재 총 잔액

 


 

 

이 프로젝트에서는 신용 리스크 분석을 위해 기대 손실(Expected Loss, EL)을 계산할 것입니다. 기대 손실은 다음 세 가지 주요 요소인 PD (Probability of Default), LGD (Loss Given Default), EAD (Exposure at Default)를 곱하여 산출됩니다.

우리는 이 세 가지 요소를 각각 모델링하여 신용 리스크를 보다 정확하게 평가할 계획입니다.

  1. PD (Probability of Default) 모델: 대출 부도 확률을 예측하기 위한 모델입니다. 이는 차용자가 대출을 부도낼 가능성을 평가하는 데 중점을 둡니다.
  2. LGD (Loss Given Default) 모델: 부도 발생 시 실제 손실 비율을 예측하는 모델입니다. 이는 대출이 부도났을 때 손실의 정도를 평가합니다.
  3. EAD (Exposure at Default) 모델: 부도 발생 시 대출의 노출 금액을 예측하는 모델입니다. 이는 부도가 발생했을 때 남아있는 대출의 총 잔액을 측정합니다.

이러한 요소를 정확하게 모델링하기 위해 각 요소별로 독립 변수와 종속 변수를 정의하고 모델을 구축할 필요가 있습니다. PD (Probability of Default) 모델을 위해서는 차용자의 부도 여부를 나타내는 지표가 필요합니다. 이 지표는 대출 상태(loan_status) 열을 통해 확인할 수 있으며, 이를 종속 변수로 사용합니다. LGD (Loss Given Default) 모델에서는 부도 발생 후 회수된 대출 금액을 측정해야 합니다. 이 정보는 회수액(recoveries) 열에서 제공되며, LGD 모델의 종속 변수로 활용됩니다. 마지막으로 EAD (Exposure at Default) 모델에서는 부도 시 대출의 총 노출 금액을 계산해야 합니다. 이를 위해 총 회수 원금(total_rec_prncp) 열을 참조하여, 부도 발생 시점의 대출 노출을 평가할 수 있습니다.


 

# Column Non-Null Count Dtype
0 id 466285 non-null int64
1 member_id 466285 non-null int64
2 loan_amnt 466285 non-null int64
3 funded_amnt 466285 non-null int64
4 funded_amnt_inv 466285 non-null float64
5 term 466285 non-null object
6 int_rate 466285 non-null float64
7 installment 466285 non-null float64
8 grade 466285 non-null object
9 sub_grade 466285 non-null object
10 emp_title 438697 non-null object
11 emp_length 445277 non-null object
12 home_ownership 466285 non-null object
13 annual_inc 466281 non-null float64
14 verification_status 466285 non-null object
15 issue_d 466285 non-null object
16 loan_status 466285 non-null object
17 pymnt_plan 466285 non-null object
18 url 466285 non-null object
19 desc 125983 non-null object
20 purpose 466285 non-null object
21 title 466265 non-null object
22 zip_code 466285 non-null object
23 addr_state 466285 non-null object
24 dti 466285 non-null float64
25 delinq_2yrs 466256 non-null float64
26 earliest_cr_line 466256 non-null object
27 inq_last_6mths 466256 non-null float64
28 mths_since_last_delinq 215934 non-null float64
29 mths_since_last_record 62638 non-null float64
30 open_acc 466256 non-null float64
31 pub_rec 466256 non-null float64
32 revol_bal 466285 non-null int64
33 revol_util 465945 non-null float64
34 total_acc 466256 non-null float64
35 initial_list_status 466285 non-null object
36 out_prncp 466285 non-null float64
37 out_prncp_inv 466285 non-null float64
38 total_pymnt 466285 non-null float64
39 total_pymnt_inv 466285 non-null float64
40 total_rec_prncp 466285 non-null float64
41 total_rec_int 466285 non-null float64
42 total_rec_late_fee 466285 non-null float64
43 recoveries 466285 non-null float64
44 collection_recovery_fee 466285 non-null float64
45 last_pymnt_d 465909 non-null object
46 last_pymnt_amnt 466285 non-null float64
47 next_pymnt_d 239071 non-null object
48 last_credit_pull_d 466243 non-null object
49 collections_12_mths_ex_med 466140 non-null float64
50 mths_since_last_major_derog 98974 non-null float64
51 policy_code 466285 non-null int64
52 application_type 466285 non-null object
53 annual_inc_joint 0 non-null float64
54 dti_joint 0 non-null float64
55 verification_status_joint 0 non-null float64
56 acc_now_delinq 466256 non-null float64
57 tot_coll_amt 396009 non-null float64
58 tot_cur_bal 396009 non-null float64
59 open_acc_6m 0 non-null float64
60 open_il_6m 0 non-null float64
61 open_il_12m 0 non-null float64
62 open_il_24m 0 non-null float64
63 mths_since_rcnt_il 0 non-null float64
64 total_bal_il 0 non-null float64
65 il_util 0 non-null float64
66 open_rv_12m 0 non-null float64
67 open_rv_24m 0 non-null float64
68 max_bal_bc 0 non-null float64
69 all_util 0 non-null float64
70 total_rev_hi_lim 396009 non-null float64
71 inq_fi 0 non-null float64
72 total_cu_tl 0 non-null float64
73 inq_last_12m 0 non-null float64

 

데이터셋에는 총 74개의 변수가 있고, 대부분의 변수는 int 또는 float 데이터 유형을 가지고 있다는 것을 알 수 있습니다. 


다음 포스팅에서 이어집니다.

반응형
올리브한입