기초 게시 2026년 6월 21일

통계가 먼저입니다: 신용 데이터를 읽는 법

머신러닝으로 가기 전에 통계가 먼저입니다. 신용에서는 '모델이 잘 맞나'보다 '이 차이가 진짜인가 우연인가'를 더 자주 묻습니다. 금융 데이터의 분포, 다중검정의 함정, 작은 표본을 다루는 법, 그리고 기본값으로 깔린 편향까지 정리했습니다.

Part 1에서 도메인을 봤으니, 이제 데이터로 내려갑니다. 그런데 머신러닝으로 바로 가지 않고 통계부터 짚는 데는 이유가 있습니다. 신용에서 우리가 하루 종일 던지는 질문은 “모델이 잘 맞나”보다 “이 차이가 진짜인가, 아니면 우연인가”에 가깝습니다. 그 질문에 답하는 도구가 통계입니다.

화려한 부분은 아닙니다. 그래도 이 층이 무너지면 그 위에 올린 모델은 사상누각이 됩니다. 보통 모델이 현실과 맞지 않는 결론을 낸다면 이 부분이 문제인 경우가 많습니다.

분포부터 다릅니다

일반적인 통계 입문은 정규분포에서 시작합니다. 그런데 금융 데이터를 정규분포라고 가정하고 들어오면 대부분 빗나갑니다. 신용 데이터는 모양부터 다릅니다.

부도 여부 LGD (손실률) 거래 금액 정상(0) 부도(1) 0 근처와 1 근처에 몰림 긴 오른쪽 꼬리 정규분포라고 가정하고 들어오면 대부분 빗나갑니다. 분포를 먼저 봐야 합니다.
  • 부도 여부는 0(정상)과 1(부도) 중 하나인데, 부도는 보통 1~5%의 희귀 사건입니다. 대부분이 정상 쪽에 쏠려 있습니다.
  • 부도 시 손실률(LGD)은 0 근처(거의 다 회수)와 1 근처(거의 못 회수)에 몰리는 이봉형이 흔합니다. 평균을 내면, 정작 그 평균값 근처에는 데이터가 별로 없습니다.
  • 거래 금액 같은 변수는 오른쪽으로 긴 꼬리를 끕니다. 대부분 작고 가끔 아주 큰, 두꺼운 꼬리입니다.

그래서 신용에서는 분포를 먼저 봅니다. 로그변환으로 꼬리를 제어하고, 평균보다 분위수를 보고, 베타분포(LGD)나 음이항분포(연체 건수)처럼 데이터 모양에 맞는 분포를 고릅니다. 분포를 잘못 가정하면, 그 위의 모든 계산이 틀어지기 시작합니다.

점이 아니라 구간으로

“이 세그먼트의 부도율은 3%입니다”라는 말은 사실 현상의 절반밖에 표현하지 못합니다. 표본이 100명이었는지 10만 명이었는지에 따라 그 3%의 무게가 전혀 다르니까요. 그래서 점추정만큼 구간추정이 중요합니다. 신뢰구간도 “참값이 이 구간에 있을 확률”이 아니라, 같은 방식으로 추정을 반복했을 때 그 구간들이 참값을 담는 비율이라는 점을 짚어둘 만합니다. 자주 오해하는 부분입니다.

신용에서는 표본이 작은 세그먼트가 자주 생깁니다. 신상품 초기 고객, 특정 한도 구간, 특정 채널 같은 것들입니다. 이럴 때 부트스트랩이 실용적입니다. 가진 데이터를 복원추출로 여러 번 다시 뽑아, 그때마다 통계량이 얼마나 달라지는지를 보고 불확실성을 가늠하는 방법입니다.

통계의 가장 흔한 함정: 다중검정

이 부분은 따로 강조하고 싶습니다. 신용 모델을 만들다 보면 변수 후보가 수백 개씩 나옵니다. 그것을 하나씩 부도율과 비교하면서 “유의미한가”를 봅니다. 그런데 수백 개를 동시에 검정하면, 순전히 우연으로도 “유의미해 보이는” 변수가 쏟아집니다. 아무 관계 없는 변수 100개를 5% 기준으로 테스트하면, 평균 5개는 유의하게 나옵니다.

그래서 변수를 훑다가 발견한 “신기한 패턴”은 대부분 다중검정의 산물입니다. 보정 없이는 믿으면 안 됩니다. 가장 단순한 보정은 Bonferroni입니다. 검정을 많이 할수록 통과 기준을 그만큼 엄격하게 높이는데, 변수 100개를 본다면 5%가 아니라 0.05%를 기준으로 삼는 식입니다. 안전하지만 너무 보수적이어서 진짜 변수까지 떨어뜨리기 쉽습니다. 그래서 실무에서 더 자주 쓰는 것이 Benjamini-Hochberg(FDR)입니다. “유의하다고 고른 것들 중 가짜가 몇 퍼센트까지 섞여도 되는가”를 통제하는 방식이라, 약간의 가짜를 허용하는 대신 진짜 변수를 더 많이 건집니다. Part 0에서 “검증 지표는 좋은데 실전에서 무너지는” 이야기를 했는데, 그 원인 중 하나가 이것입니다.

작은 세그먼트를 다루는 베이지안의 눈

빈도주의가 데이터에게만 말을 시킨다면, 베이지안은 “사전에 알던 것”과 “데이터가 말하는 것”을 곱해 믿음을 갱신합니다. 신용에서 이것이 특히 쓸모 있는 자리는 작은 세그먼트의 부도율 추정입니다. 고객 30명짜리 세그먼트의 부도율이 0%로 나왔다고 해서 정말 0%일 리는 없습니다. 데이터가 적을수록 그 추정값을 전체 평균 쪽으로 더 많이 끌어당기고, 데이터가 쌓일수록 자기 관측값을 믿게 두는 것, 이것이 shrinkage입니다. 표본이 작은 세그먼트일수록 전체 평균에 가깝게, 큰 세그먼트일수록 자기 값에 가깝게 보정되는 셈입니다. 계층모형은 이 끌어당김을 손으로 하지 않고 모델 구조 안에서 자동으로 처리합니다. 세그먼트마다 따로 추정하되 전체에서 정보를 빌려와, 데이터가 적은 세그먼트가 자연스럽게 전체 쪽으로 모이게 만드는 방식입니다.

편향은 기본값입니다

마지막은 편향입니다. 그리고 신용에서는 편향이 예외가 아니라 기본값입니다.

  • 선택편향: 승인한 고객만 결과가 보입니다. Part 0의 그 이야기입니다.
  • 생존편향: 이미 이탈한 고객이 데이터에서 빠지면, 남은 사람만 보고 잘못된 결론을 냅니다.
  • 누출(leakage): 의사결정 시점에는 알 수 없었던 미래 정보가 변수에 새어 들어오는 것입니다. 부도가 난 뒤에 갱신된 필드를 무심코 쓰는 식이죠. 검증 지표를 비현실적으로 좋게 만드는 주범입니다.
  • 표본과 모집단의 불일치: 학습한 모집단과 실제로 모델을 적용할 모집단이 다른 경우입니다. 신규 심사가 늘 안고 있는 문제입니다.

표본을 다룰 때 불균형 데이터에서는 층화추출이 거의 필수이고, 무엇보다 “이 데이터가 내가 답하려는 질문의 모집단을 대표하는가”를 끊임없이 물어야 합니다.

정리

통계는 화려하지 않지만, 결국 정직함의 도구입니다. 분포를 먼저 보고, 점이 아니라 구간으로 말하고, 다중검정을 의심하고, 작은 표본을 겸손하게 다루고, 편향을 기본값으로 가정하는 것. 신용 데이터를 읽는 눈은 여기서 시작합니다.

다음 Part 3에서는 이 토대 위에 머신러닝을 올립니다. 왜 로지스틱 회귀가 부스팅 시대에도 스코어링의 표준으로 살아남았는지, 그리고 금융에서는 교차검증마저 왜 다르게 해야 하는지를 보겠습니다.

← 글 목록

새 글을 메일로 받기

연재가 올라오면 메일로 알려드립니다. 스팸은 없고, 언제든 해지할 수 있습니다.

스팸 없음, 언제든 해지