0. Outline
- 인하대학교 통계학과 유동현 교수님의 '빅데이터 자료분석' 강의를 수강하면서 조장으로써 총 4명의 인하대학교 학생들과 함께 진행한 프로젝트이다.
- 해당 프로젝트의 주제 및 데이터는 2022 빅콘테스트 데이터분석리그 퓨처스 부문에서 가져왔다.
- 프로젝트 주제는 다음과 같다.
'핀다' 앱 사용성 데이터를 활용한 대출 신청 분류 모델 개발
1. Data
데이터는 앱 사용자 데이터와 대출 상품 정보 데이터를 활용하였다. 각 데이터에 포함된 피처의 내용은 다음과 같다.
- User 데이터 : 가명화된 핀다 앱 사용자의 개인 정보(shape : (1394216,17))
- Loan 데이터 : 핀다 앱을 통해 신청한 금융사별 대출 상품승인 결과(shape : (13527363,7))
두 개의 데이터에서 총 24개의 피처가 존재했고, 타겟 피처는 대출 신청 여부를 나타내는 is_applied
피처이다. 하지만 여러 EDA 과정에서 타겟 피처의 예측에 도움이 될만한 피처를 파악하는데 어려움이 있었고, 분석에 활용할 피처를 선정하기 위해 조금 더 원론적인 방법을 활용했다. 바로 앱을 직접 사용해보면서 신뢰할 수 있는 피처를 선정하는 것이었다.
핀다 앱 시뮬레이션을 통해 선정한 분석 대상 피처는 총 8개였고, 이는 다음과 같다.
- 나이(age)
- 신용 점수(credit_score)
- 대출 희망금액(desired_amount)
- 기대출 수(existing_loan_cnt)
- 기대출 금액(existing_loan_amt)
- 대출 한도(loan_limit)
- 대출 금리(loan_rate)
분석 대상으로 선정한 피처들은 대부분 인증 절차가 있어 해당 값들을 신뢰할 수 있는 경우이다. 앱 특성상 회원 가입 과정에서 특별한 인증 절차가 없는 경우 제대로 값을 입력하지 않을 가능성이 높고, 그러한 피처들은 예측 모델을 만드는 데 성능을 저하시킬 가능성이 높다. 따라서 해당 피처들은 분석 대상에서 제외하였다. 하지만 특별하게 대출 희망 금액을 나타내는 desired_amount
피처의 경우 해당 값에 따라 추천되는 대출 상품의 차이가 커 분석에 활용할 가치가 있다고 판단하여 분석 대상 피처에 추가하였다. 이렇게 선정된 피처들은 총 8개이다.
2. Data preprocessing
2-1. Missing Value
사용자 id(user_id)
를 통해 유추 가능한 고정적인 정보를 포함한 결측치에 대해선 이에 맞게 대체하거나 삭제하였다.
신용점수(credit_score)
에서의 결측치는 시간에 따라 변화할 수 있는 가변적인 특성을 가진 피처의 데이터의 특성상 가장 가까운 날짜의 신용 점수로 대체하였다.
대출 한도(loan_limit)
및대출 금리(loan_rate)
의 결측치의 경우 은행에서 제공해주지 않는 데이터이기 때문에 대회 측에서 무시해도 좋다고 명시되어 있어 삭제하였다.기대출 수(existing_loan_cnt)
의 결측치 값은 기대출 수의 결측치를 제외한 분포를 확인했을 때 최소값이 1인 것을 확인해 이는 기대출 횟수가 아예 없는 0회에 해당한다고 판단하여 0으로 대체하였다.기대출 금액(existing_loan_amt)
의 결측치는 기대출 수가 1 이상인 경우 이를 예측하기 어렵기 때문에 삭제하였다.
2-2. Outlier
데이터 내 이상치의 경우 연속형 변수에 대하여 Boxplot을 이용하여 데이터의 분포를 파악하고 IQR을 이용해 제거하였다. 또한 데이터의 분포를 파악하기 어려운 변수의 경우 로그 변환(log transformation)
을 통해 데이터 분포를 손쉽게 파악한 후 이상치를 제거하였다.
2-3. Feature Engineering
기대출 수가 있는 사람과 없는 사람을 구별하는 것은 중요하지만 기대출 수가 1번, 2번, 3번인 사람을 구별하는 것은 상대적으로 중요성이 떨어진다. 또한 해당 사용자의 총 기대출 금액을 계산하는것 또한 의미가 없다고 판단했다. 따라서 해당 사용자가 한 번의 대출에서 평균적으로 얼마의 금액을 대출했는지를 파악하기 위해 총 기대출 금액을 기대출 수로 나눈 평균 기대출 금액(mean_exloan)
피처를 생성했다.
2-4. Scaling
현재 데이터 내 피처들은 금액과 관련된 피처, 기대출 횟수와 관련된 피처, 나이, 대출 금리 등 단위가 매우 다양하다. 따라서 모든 변수들의 스케일을 동일하게 맞추기 위해 Min-max scaling
을 진행했다.
2-5. Oversampling
이번 프로젝트에서 대출 신청 예측 모델을 만드는 데 가장 중요한 부분이다. 타겟 피처인 is_applied 피처의 경우 데이터 불균형(imbalanced)
이 약 17:1(7,629,488 : 434,688)에 해당한다. 이러한 데이터 불균형 문제에서 가장 일반적으로 사용되는 것이 바로 오버샘플링(Oversampling)이다. 따라서 향후 모델링 과정에서도 여러 샘플링 기법과, 오버샘플링 기법 내 다양한 방식에 대한 비교가 이루어질 예정이다.
데이터 전처리를 모두 마친 후 모델링에 활용한 데이터의 크기는 8,014,178개이다.
해당 프로젝트에서 사용한 코드 및 중간 & 기말 발표 자료 모두 필자의 깃허브에서 확인이 가능하다.