Home Credit Default Risk — Part 1: EDA(Exploratory Data Analysis)

JEON
Almighty Data Science Bootcamp
10 min readJun 6, 2018

: Can you predict how capable each applicant is of repaying a loan?

HOME CREDIT는 1997년 체코에 설립된 국제적인 비은행 금융기관으로 14개 국가에서 운영되며 신용기록이 거의 없는 사람들을 대상으로 대출해줍니다. 때문에 고객의 상환 능력을 예측하기위해 거래정보 등 다양한 대체 데이터를 사용하고있습니다.

HOME CREDIT은 고객의 상환 능력을 예측하기위해 다양한 통계 및 머신러닝 방법을 사용하고있지만, Kaggle을 통해 더 나은 예측을 희망하며 August 29, 2018 까지 Home Credit Default Risk Featured Prediction Competition을 시행하고있습니다.

Kaggle에서 제공되는 파일은 application_{train|test}, bureau, bureau_balance, previous_application, POS_CASH_balance, instalments_payments, credit_card_balance 로 총 8가지 입니다. 각 데이터들은 아래와 같은 구조로 key 값들로 서로 연결되어있습니다.

DATA Structure

파일들 간의 연결 구조를 보면 application_{train|test}를 기준으로 왼쪽으로는 신용 관리국에 보고 된 다른 금융 기관에서 제공한 모든 고객의 이전 크레딧에 관한 정보가 나타나있고, 오른쪽으로는 샘플에 있는 고객의 이전 주택 대출에대한 정보가 있습니다.

8개의 csv 파일 중 가장 중요한 application_{train|test} 에서 application_train을 이번 포스팅에서 살펴보겠습니다.

application_train 의 상위 5개 데이터를 불러오면 다음과 같습니다.

SK_ID_CURR 별로 성별, 자차 소유여부, 자녀 수 등 SK_ID_CURR를 제외한 121개의 feature를 가지고있습니다. 눈에 보이는 특징으로는 NaN 값이 보이는데 전체의 데이터에서 NaN 이 어느정도 차지하는지 결측치를 일부분 살펴보면

OWN_CAR_AGE 의 경우 전체 데이터의 65%가 NaN 값이고, OCCUPATION_TYPE 의 경우도 31%가 NaN 인 것을 알 수있습니다. OWN_CAR_AGE 의 경우를 예로봤을 때 NaN 값이 진짜로 결측치인지, 아니면 차가 없는 경우에 data를 입력하지않아 NaN 이 된것인지를 파악하여 이를 0 으로 대체하거나 다른 방식으로 어떻게 결측치 처리를 해야할지 고민해봐야합니다.

feature 들을 살펴보기 앞서 우리가 예측해야 할 ‘TARGET’ 은 0 과 1 값으로 이루어져있습니다. 0 은 상환 능력이 있음, 1 은 상환 능력이 없음으로 상환 능력이 없을 확률값을 내는 것이 목표입니다. 전체의 데이터에서 0과 1의 비율은 0 일때 92%, 1 일때 8%로 CLASS 가 Imbalance한 문제가 발생합니다. 따라서 추후에 Over sampling, Under sampling을 고려해야합니다.

TARGET 에 영향을 미치는 다른 feature들을 보기 앞서 기본적인 데이터 타입을 살펴보면,

122개의 변수들의 Data type은 float, int, object 로 나타나는데 이를 Categorical data, Numerical data, Binary data로 나누어서 우리가 예측하고자하는 1 (상환 능력 없음)에 feature들이 어떤 특성을 가지고있는지 시각화 EDA를 해보겠습니다.

categorical features

  1. NAME_FAMILY_STATUS

NAME_FAMILY_STATUS 는 가족 구성의 상태를 나타내는 변수입니다. Client의 대다수는 결혼을 했고 Single/not married, Civil marriage, Separated, Widow 순으로 뒤따릅니다.

대출금 상환 능력이 없는(Target=1) 사람의 가족 구성 상위에 Civil marriage와 Single/not married가 있음을 확인할 수 있습니다.

1–1 CNT_CHILDREN

CNT_CHILDREN 는 Client의 자녀 수를 나타내는 변수로 눈에 띄는 특징은 자녀가 9명, 11명인 경우 상환되지않는 대출의 비율이 100%임을 보여줍니다. 4명과 6명의 자녀를 가진 고객의 비율도 상대적으로 높고, 자녀가 없거나 1명, 2명, 3명, 5명인 사람들은 10%정도는 대출금을 상환하지않는 것을 알 수 있습니다.

1–2 CNT_FAM_MEMBERS

CNT_FAM_MEMBERS는 가족 구성원을 나타내는 변수로 CNT_CHILDREN에 자녀가 없는 사람이 대다수였던것처럼 가족구성원이 2명인 고객이 가장 많고, 1명, 3명, 4명 순으로 높은 것을 알 수 있습니다.

가족구성원이 11명, 13명인경우 대출상환금을 100% 갚지않는 다는 것을 알 수 있습니다. 10명, 8명은 35%정도 상환하지못하고 7명 이하인 가정에서는 상환률이 10%정도 되는 것을 알 수 있습니다. CNT_CHILDREN와 같이 가족구성원의 숫자가 늘어날수록 대출금 상환 능력이 없는(Target=1) 사람일 확률이 높습니다.

2. NAME_INCOME_TYPE

NAME_INCOME_TYPE은 소득유형을 나타내는 변수로 근로 소득, 자영업, 연급 수급자, state servant 순으로 대출한 것을 알 수 있습니다.

Maternity leave, Unemployed의 표본 수는 적지만 대출금 상환 능력이 없는(Target=1) 사람 약 40%정도입니다. 출산휴가자와 실업자는 소득이 없기 때문에 대출금 상환에 어려움을 가질 수 있다는 가설을 세워볼 수 있습니다.

2–1 OCCUPATION_TYPE

OCCUPATION_TYPE은 What kind of occupation does the client have 를 나타내는 변수로 대출을 많이하는 순으로 Laborers, Sales staff, Core staff 순이고 가장 적게하는 직업군으로는 IT staff, HR staff 등 입니다.

Low-skill Laborers과 같은 단순 노무직인 경우 상환 능력이 없는(Target=1) 사람일 확률이 높습니다.

3. NAME_EDUCATION_TYPE

NAME_EDUCATION_TYPE 은 Level of highest education the client achieved 로 2차 교육, 고등 교육까지 받은 사람일수록 대출을 많이 하고 학사학위 소지자는 매우 적은 것을 볼 수 있습니다.

상환하지 못하는 순위로보면 학력이 낮을수록 상환하지 못하는 비율이 높은 것을 알 수 있습니다.

4. NAME_HOUSING_TYPE

NAME_HOUSING_TYPE은 What is the housing situation of the client (renting, living with parents, … ) 를 나타냅니다. House/apartment 에 사는 사람이 앞도적으로 많은 것을 알 수 있는데, 상환하지 못하는 비율에서 이들중의 8%가 상환하지 못하는 것을 알 수 있습니다. House/apartment를 제외한 변수에서는

그리고 임대한 아파트에 살고 있거나, 부모님과 함께 거주하는 경우 다른 유형에 비해 상대적으로 상환 능력이 없는(Target=1) 사람일 확률이 높습니다.

numerical features

  1. AMT_INCOME_TOTAL

AMT_INCOME_TOTAL 은 소득을 나타내는데 밀도함수를 그려보니 그래프가 이상한형태를 띄고있어서 INCOME과 관련된 다른 feature 인 NAME_INCOME_TYPE 과 연결지어봤더니

Working 의 max 값인 117000000과같은 몇몇의 이상치들의 영향을 받아 위와같은 그래프의 형태로 나타나게된 것을 알 수있습니다.

2. AMT_CREDIT

AMT_CREDIT 은 Credit amount of the loan 로 대출금액을 나타내는데, 이 분포표에는 눈에 띄는 특징으로 여러개의 분포가 합쳐있는 것같은 모습을 볼 수 있습니다. 분포를 하나의 특징으로 생각한다면 연령대별, 직업별, 학력별로 좀 더 자세한 분석을 해서 각 분포별로 어떤 특징을 가지고있는지 볼 것입니다.

3. AMT_GOODS_PRICE

AMT_GOODS_PRICE는 For consumer loans it is the price of the goods for which the loan is given 인데 냉장고, 자동차, 컴퓨터 등 고가의 상품을 사기 위해서 대출을 하는 것입니다. 이 분포의 가장 눈에 띄는 특징으로 분포가 많게 9개로 나눌수있는데 예상하기로는 금액대 분포 별로 상품이 있을거라 생각해서 분포 하나하나 자체가 군집으로 묶일 수 있을 것이라 보입니다.

binarical features

  1. REG_CITY_NOT_LIVE_CITY

REG_CITY_NOT_LIVE_CITY 은 고객의 주소가 연락처 주소랑 일치할 경우 0, 일치하지 않은 경우는 1 로 나타냅니다. (1 = 불일치, 0 = 일치)

실제 고객의 주소가 연락처 주소와 일치하지 않을 때 상환하지 않는 비율이 10%가 넘는것을 알 수 있습니다.

다음 Posting에서는 application_{train|test} 외 다른 변수들의 시각적 EDA와 변수들간의 관계를 좀 더 깊게 살펴보겠습니다.

--

--