밸런스히어로 | BalanceHero
 
승인율과 연체율을 고려한 Rejection Code 최적화

프로젝트 소개

밸런스히어로는 대출 심사 과정에서 신청자가 사전에 정의된 거절 조건에 해당하면, 해당 사유를 나타내는 Rejection Code를 부여하고 대출을 거절합니다. 
거절 기준을 엄격하게 적용할수록 연체율은 낮아지지만, 동시에 승인율도 감소하는 trade-off가 존재합니다.

목표: 승인율과 연체율 간 trade-off를 고려해 기존 Rejection Code의 효과를 검증하고, 더 나은 신규 Rejection Code를 제안
 
세부 목표:
1. 기존 Rejection Code 제거 우선순위 Ranking
2. 신규 Rejection Code 제안

​​​​​​​​​​​​​​​​​​​​​​​​진행 프로세스
​​​​
​
밸런스히어로_프로젝트_로드맵.png

주제별 세부 프로세스
​
목표 1. 기존 Rejection Code 제거 우선순위 Ranking
​
승인율은 높이되 연체율은 증가시키지 않도록, 기존 Rejection Code를 제거할 경우의 효과를 정량화하고, 제거 우선순위를 도출하는 것이 목표입니다. 거절된 고객은 실제 연체 여부를 알 수 없기 때문에, 이들이 승인되었을 경우 연체했을 가능성을 추정하는 Counterfactual Scenario 분석이 핵심입니다.

EDA 과정에서 확인한 결과, 밸런스히어로의 대안 신용평가 엔진이 산출하는 연체 확률값인 smsProbabilityOfDefault(이하 smsPOD) 는 실제 연체율과 매우 강한 선형 관계를 보였습니다. 따라서 승인자를 smsPOD 외의 다른 변수를 사용해 서로 다른 집단으로 1차적으로 쪼갠 다음, 같은 집단 안에서 smsPOD 값으로 회귀를 통해 연체율을 예측하는 방향으로 진행했습니다.

  1. 인과추론을 활용한 변수 선택
    1. 인과추론 기법인 Linear DML(Double Machine Learning)을 활용해 교란 변수를 통제한 상태에서 변수들의 순수 인과 효과를 추정
    2. p-value를 기준으로 유의미한 변수만 최종 선택
  2. 선정된 변수들로 승인자 클러스터링
    1. 유사한 변수들은 PCA를 통해 변수들 간 영향력을 비슷하게 맞춤
    2. 승인자를 Kmeans 클러스터링 (클러스터 개수는 실루엣 스코어와 각 클러스터의 데이터 수를 기준으로 결정)
  3. ​클러스터 내에서 smsPOD와의 선형 회귀로 거절자의 연체율 예측
    1. 승인자의 이진 연체 여부(0/1) 대신, smsPOD가 유사한(차이 ≤ 1) 이웃들의 연체 여부를 Gaussian 커널 가중 평균으로 스무딩해 연속형 ‘연체율’로 변환
    2. 클러스터별로 연체율과 smsPOD 간의 선형회귀식을 도출
    3. 거절자를 가장 가까운 클러스터에 할당한 뒤, 해당 회귀식을 적용해 예상 연체율을 계산
  4. Score 정의 및 최종 제거 우선순위 제시
    1. 연체율을 1%p 증가시키는 대신 승인율을 몇%p나 올릴 수 있는지를 나타내는 ∆승인율/∆연체율을 기준으로 각 Rejection Code들을 스코어링
    2. 최종 Rejection Code 제거 우선순위를 도출
목표 2. 신규 Rejection Code 제안
​
연체율은 낮추면서도 승인율은 과도하게 낮추지 않는 새로운 Rejection Code를 제안하는 것을 목표로 합니다. 새로운 조건을 정의하기 위해서는 (1) 어떤 변수를 사용할지, (2) 변수 값을 어디서 컷오프할지 결정하는 과정이 필요합니다.
​
  1. 승인자 세그먼트별로 인과추론을 활용한 변수 선택
    1. 같은 대출 상품을 이전에 대출받은 경험이 있는지 여부에 따라 승인자 세그먼트를 분류
    2. 세그먼트별로 LinearDML을 활용해 연체 여부에 인과적으로 유의미한 변수를 필터링
    3. 선정된 변수 조합으로 Rejection Code 후보군을 생성​​
  2. CPM(Contrast Pattern Mining)으로 수치형 변수들의 cutoff 설정
    1. 수치형 변수는 qcut으로 binning하여 후보군을 생성
    2. 해당 조건을 만족하는 사람 중에 연체자 비율을 비연체자 비율로 나눈 growth rate를 계산
    3. 연체자가 가장 뚜렷하게 분포하는 최적 cutoff 값을 선정
  3. Score 정의 및 최종 Rejection Code 제안
    1. 승인율을 1%p 양보해 연체율을 몇%p 줄일 수 있는지를 나타내는 ∆연체율/∆승인율을 기준으로 Rejection Code 조건 후보군을 스코어링
    2. 최종 Rejection Code 조건을 제시
프로젝트별 성과

  1. 승인자 세그먼트별 smsPOD 영향력 정량화 및 거절자의 연체율 추정
    1. 승인자 세그먼트별로 smsPOD와 연체율 간의 회귀 직선 기울기를 계산해, smsPOD가 연체율에 미치는 영향력을 정량화
    2. e.g. 평균 연체율이 높은 세그먼트에서는 smsPOD가 0.01 증가할 때 연체 확률 n% 증가
  2. 기존 Rejection Code 제거 시 비즈니스 임팩트 정량화하여 제시
    1. 거절자의 연체율을 추정해, Rejection Code 제거 시 승인율 증가와 예상 연체율 증가를 계산
    2. 승인율 최적화를 위한 Rejection Code 제거 우선순위를 제시
  3. 새로운 Rejection Code 도입 시 비즈니스 임팩트 정량화하여 제시
    1. 세그먼트마다 일반화 가능한 신규 Rejection Code 후보를 도출하고, Rejecion Code를 도입했을 때의 승인율 증가와 연체율 증가 효과를 수치적으로 제시
    2. e.g. 새로운 Rejection Code 도입 시, 기존 대비 승인율 3.41% 감소, 연체율 8.24% 감소


PM 소회

 밸런스히어로와 프로젝트를 진행하며 좋았던 점은 무엇인가요?

 • 금융 데이터를 다룰 수 있어 좋았습니다. 금융 데이터는 보안상의 이유로 외부에서 분석하기 어려운 경우가 많은데 실제 대출 심사 데이터를 바탕으로 현재 사용하고 있는 Rejection Code에 대해 분석할 수 있어 좋았습니다. 데이터의 양과 질 또한 만족스러웠습니다.
 • 킥오프 미팅에서 담당자님이 이번 프로젝트를 위한 PPT를 직접 준비해서 설명해 주실 만큼, 주제와 데이터를 깔끔하게 정리해 주셔서 사측의 요구사항이 뭔지 헤매거나 추가로 전달주신 데이터를 처리하는데 불필요한 리소스를 쓰지 않아도 됐습니다. 또 담당자분들이 AI/ML 팀에서 근무하셔서, 저희의 분석 내용에 대한 이해도가 높았고, 그만큼 유의미한 피드백도 많이 받을 수 있었습니다.
 프로젝트 진행 중 겪었던 가장 큰 어려움은 무엇이었나요? 이를 어떻게 해결했나요?
 • 저희는 프로젝트에서 크게 연체 예측 모델 기반과 매칭 기반 방향성을 시도해 보았는데, 두 가지 방향 모두에서 연체자 수가 너무 적어 어려움을 겪었습니다. 먼저 연체 여부를 예측하는 binary classification 모델을 구축하는 방향에서, oversampling 같은 방법을 적용해도 recall과 precision 간의 불균형이 심각했습니다. sms POD 값이 유사한 승인자 클러스터와 거절자를 매칭하는 방향에선, 각 클러스터에 속하는 연체자 수가 너무 적어 작은 데이터 변화에도 결과가 크게 흔들리는, 즉 variance가 매우 커지는 문제가 발생했습니다. 이러한 문제를 완화하기 위해 최대한 간단한 방법론을 사용하는 방향으로 프로젝트를 진행했습니다. 사용하는 feature 개수를 줄이고, 가장 기본적인 선형 회귀를 메인 골자로 연체율을 예측하면서 overfitting을 방지하고자 했습니다.

 이번 경험을 통해 어떤 인사이트나 역량을 얻으셨나요?

 • 이번 프로젝트에서 여러 방향성이 나왔는데, 각자의 단점이 매우 명확해서 어떤 것을 선택해야 할까 고민이 많았습니다. 그때마다 각 방법론에서 단점을 보완할 수 있는 최대치까지 시도한 다음, 덜 치명적인 단점을 가진 방법을 선택했습니다. 당시엔 삽집하고 있는 것 같다는 느낌을 지울 수 없었지만 지금 생각해보면 완벽한 답을 찾아 무한히 헤매는 것보다 지금 나온 방법론을 최대한 develop 했던 것이 잘 한 선택이라고 생각합니다.
 향후 유사한 프로젝트를 진행할 학회원들에게 전하고 싶은 조언이 있나요?
 • 시간 여유가 있는 프로젝트 초반에 다양한 방법론을 폭넓게 리서치하고, 팀원 각자 다른 방법론을 시도해보는 방식이 장기적으로 좋은 결과로 이어지는 것 같습니다. 초반부터 하나의 방법론에만 집중하면, 사소한 것에 매몰되기 쉽기 때문에 초반에는 방향성이 하나로 모이지 않아 조급함이 있더라도 큰 틀에서 비교해가며 최적의 방향을 선택하는 과정이 필요하다고 생각합니다.