[기초] Part 5. 순위만 잘 매겨선 안 됩니다: 신용 모델 평가의 세 축
잘 만든 모델인지 어떻게 확인할 수 있을까요. 신용에서는 순위를 잘 매기는지(판별)만 보지 않습니다. AUC와 PR-AUC로 판별을 보고, 캘리브레이션으로 확률이 실제와 맞는지 보고, PSI로 시간이 지나도 버티는지 봅니다. 일반 ML이 잘 안 보는 두 축까지 정리했습니다.
Part 4에서 모델을 만들었습니다. 그럼 이제 그 모델이 쓸 만한지 어떻게 평가할 수 있을까요. 일반적인 머신러닝의 분류 모델이라면 보통 한 가지를 봅니다. 얼마나 잘 맞히느냐, 즉 순위를 잘 매기느냐입니다. 그런데 신용에서는 그것만으로 부족합니다.
신용 모델 평가는 세 가지 질문으로 나뉩니다. 누가 더 위험한지 순위를 잘 매기는가(판별), 그 위험이 실제 부도확률과 일치하는가(보정), 그리고 시간이 지나 고객이 바뀌어도 평가가 일관되는가(안정성)입니다. 첫 번째는 일반 ML도 챙기지만, 뒤의 두 가지는 신용이라서 더 중요합니다.
판별: 순위를 얼마나 잘 매기나
먼저 판별입니다. 위험한 고객과 안전한 고객을 얼마나 잘 갈라놓는가죠.
실무에서 가장 흔히 헤드라인으로 보고하는 판별 지표는 AUC입니다. AUC는 무작위로 부도 한 명과 정상 한 명을 뽑았을 때 모델이 부도에게 더 높은 위험 점수를 줄 확률입니다. 0.5면 동전 던지기, 1.0이면 완벽한 분리고, ROC 곡선 아래 면적이라고도 하죠. 신용에서는 이걸 Gini로 자주 바꿔 씁니다. Gini는 2 × AUC − 1이라, AUC 0.5는 Gini 0, AUC 1.0은 Gini 1이 됩니다. 같은 정보를 0을 기준으로 다시 쓴 것뿐이라, 업계에서 “Gini 0.5짜리 모델”이라고 하면 AUC 0.75를 가리킵니다.
그런데 Part 3에서 본 것처럼 부도는 보통 1~5%의 희귀 사건입니다. 이렇게 한쪽이 드물면 ROC 기반 AUC는 실제보다 후하게 보일 수 있습니다. 그래서 부도 같은 불균형 문제에서는 PR-AUC(정밀도와 재현율로 그린 곡선 아래 면적, average precision)나 상위 k% 포착률을 같이 봅니다. 드문 부도를 실제로 얼마나 걸러내는지에 더 민감하기 때문입니다. SSL 편에서 본 AMEX 지표도 상위 4% 포착률과 Gini를 섞은, 이 계열의 지표였습니다.
다만 둘은 성격이 다릅니다. AUC와 Gini는 부도율이 달라져도 값이 흔들리지 않아(prevalence-invariant) 포트폴리오나 시점이 다른 모델을 비교하기 좋습니다. 반면 PR-AUC는 부도율 자체에 의존해서, 부도율이 다른 데이터끼리는 숫자를 직접 비교하기 어렵습니다. 그래서 경쟁이 아니라 용도가 다릅니다. 비교가 필요하면 AUC를, 희귀한 부도를 잘 잡는지가 궁금하면 PR-AUC를 봅니다.
그 이외에, 판별 지표 중에 신용에 유난히 깊게 뿌리내린 게 하나 더 있습니다. KS(Kolmogorov-Smirnov)입니다. 원리는 단순합니다. 점수를 낮은 쪽부터 높은 쪽으로 훑으면서, 그 지점까지 부도 고객이 몇 퍼센트 쌓였는지와 정상 고객이 몇 퍼센트 쌓였는지를 비교합니다. 좋은 모델이라면 부도는 낮은 점수에, 정상은 높은 점수에 몰려 있을 테니 두 누적 곡선이 크게 벌어집니다. 그 벌어짐이 가장 큰 지점의 간격이 KS입니다.
KS가 신용에서 오래 쓰인 데는 이유가 있습니다. 숫자 하나로 요약되고, 0에서 100 사이라 직관적이며, AUC처럼 부도율에 흔들리지 않고, 무엇보다 컷오프 한 줄로 승인과 거절을 가르는 심사의 사고방식과 잘 맞습니다. KS가 가장 큰 지점이 곧 정상과 부도가 가장 잘 갈리는 컷오프 후보가 되니까요. 대략 20을 넘으면 쓸 만하고, 40을 넘으면 강한 모델로 봅니다. 너무 높으면 오히려 Leakage를 의심하고요. Part 3에서 본 그 이야기입니다.
요즘 실무에서는 AUC나 PR-AUC를 헤드라인으로 더 자주 보지만, KS는 규제 문서와 스코어카드 검증에서 여전히 표준처럼 등장합니다. 직접 쓰지 않더라도 만날 일이 많으니 읽을 줄은 알아둬야 합니다. 어느 쪽이든, 순위를 아무리 잘 매겨도 그것만으로는 신용 모델을 다 평가한 게 아닙니다.
보정: 확률이 실제와 맞아야 합니다
Part 4에서 판별과 보정은 다른 문제라고 했습니다. 누가 더 위험한지 순서를 맞히는 것과, 그 사람의 부도확률이 정확히 몇 퍼센트인지 맞히는 것은 별개입니다. 그리고 신용에서는 이 보정이 필수입니다.
왜냐하면 Part 1에서 본 EL = PD × LGD × EAD 때문입니다. 충당금을 쌓고, 위험에 따라 금리나 한도액을 설정하고, 기대손실을 계산하려면 부도확률 그 자체가 맞아야 합니다. 순위만 맞고 확률이 부풀려져 있으면, 줄은 제대로 세웠어도 가격을 틀리게 매깁니다.
보정을 확인하는 방법은 눈으로 보는 게 제일 빠릅니다. 고객을 예측 부도확률로 몇 개 구간으로 나눈 다음, 각 구간에서 모델이 예측한 평균 확률과 실제로 부도가 난 비율을 나란히 찍습니다. 잘 보정된 모델이라면 둘이 같아서 점들이 대각선 위에 놓입니다. 대각선에서 벗어나면 그만큼 확률이 틀어진 겁니다.
여기서 중요한 건, 판별이 좋아도 보정은 틀릴 수 있다는 점입니다. AUC가 높은 모델이 확률은 엉뚱하게 부풀려져 있을 수 있습니다. 특히 Part 3에서 본 것처럼 불균형을 다루겠다고 표본을 절반씩 다시 뽑거나, 트리 모델의 점수를 그대로 확률처럼 쓰면 보정이 깨집니다. 그래서 판별 지표와 보정을 항상 같이 봐야 합니다. 숫자로는 Brier 점수나 기대 보정 오차(ECE)로 요약하지만, 먼저 위 그림처럼 눈으로 확인하는 습관이 좋습니다.
특히 자주 마주치는 원인이 학습 단계의 가중치입니다. 판별을 끌어올리려고 소수 클래스인 부도에 가중치를 주거나 과다표집하면(Part 3), 순위는 좋아져도 출력 확률이 실제 부도율보다 부풀려집니다. 그래서 판별은 판별대로 학습하고, 확률은 학습이 끝난 뒤 따로 맞춥니다. 대표적인 방법이 셋입니다. Platt 스케일링은 모델 출력을 로지스틱 함수로 다시 매핑하고, isotonic 회귀는 단조 계단함수로 더 유연하게 비모수 보정을 합니다. 그리고 표집이나 가중치 비율을 아는 경우에는, 로그오즈에 그 비율만큼 오프셋을 더해 부풀려진 확률을 제자리로 되돌립니다. Part 4에서 본 스코어카드의 오프셋과 같은 원리입니다.
안정성: 시간이 지나도 버티나
세 번째 질문은 신용에서 특히 중요한 안정성입니다. 모델은 과거 데이터로 만들어 미래에 적용합니다. 그런데 시간이 지나면 경기도, 고객층도, 상품도 바뀝니다. 만들 때 좋았던 모델이 반년 뒤엔 무너질 수 있습니다.
이걸 감시하는 표준 지표가 PSI(Population Stability Index)입니다. 개발할 때의 점수 분포와 지금 들어오는 고객의 점수 분포가 얼마나 달라졌는지를 한 숫자로 잽니다. 대략 0.1 아래면 안정, 0.1에서 0.25면 주의, 0.25를 넘으면 분포가 크게 움직였다는 신호라 모델을 다시 봐야 합니다. 같은 방식으로 변수 하나하나의 분포 변화(CSI, Characteristic Stability Index)도 잴 수 있어, 어떤 변수가 흔들렸는지까지 짚어냅니다.
PSI가 입력 분포의 조기 경보라면, 결과가 쌓인 뒤에는 성능 자체를 다시 잽니다. 실제 부도가 확정되는 대로 AUC와 KS, 그리고 예측 부도율 대비 실제 부도율을 주기적으로 재계산해 열화를 추적하는 거죠. 다만 Part 1에서 봤듯 부도는 한참 뒤에야 확정되니, 결과를 기다리는 동안은 점수 분포와 승인율, 거절 사유 분포 같은 선행 신호를 먼저 봅니다. 전체는 멀쩡해 보여도 특정 세그먼트에서 먼저 무너지는 일이 많아, 연령대나 상품처럼 의미 있는 그룹으로 나눠서도 봅니다. 그리고 이 지표들이 미리 정한 임계치를 넘으면, 확률만 다시 맞추는 재보정으로 끝낼지 아예 모델을 새로 학습할지를 정합니다.
안정성은 Part 3에서 강조한 out-of-time 검증과 한 몸입니다. 무작위로 섞은 검증에서는 잘 나오던 모델이 시간을 존중한 검증과 실제 운영에서 무너지는 이유가 바로 이 분포 이동입니다. 그래서 신용 모델은 한 번 잘 만들고 끝이 아니라, 계속 모니터링해야 하는 대상입니다.
비즈니스로 번역: 컷오프와 트레이드오프
지표는 결국 결정으로 옮겨야 의미가 있습니다. 신용에서 그 결정은 보통 컷오프, 즉 몇 점부터 승인할 것인가입니다.
컷오프를 올리면 거절이 늘어 부도는 줄지만 승인율도 같이 떨어집니다. 내리면 반대고요. 그래서 한 점수가 아니라 곡선으로 봅니다. 승인율을 바꿔가며 부도율이 어떻게 변하는지, 상위 몇 퍼센트를 잡으면 전체 부도의 몇 퍼센트를 걸러내는지를 gains와 lift 곡선으로 따집니다.
컷오프 하나를 놓고 보면 두 가지를 같이 따집니다. 그 기준으로 걸렀을 때 전체 부도자의 몇 퍼센트를 잡아내는가(재현율, recall), 그리고 걸러낸 사람 중 실제로 몇 퍼센트가 부도자인가(정밀도, precision)입니다. 컷오프를 낮춰 더 많이 거절하면 부도자를 더 많이 잡지만(recall↑) 걸러낸 무리에 정상 고객이 섞여 정밀도는 떨어집니다. 반대도 마찬가지고요. 앞의 판별에서 본 PR 곡선이 바로 이 둘의 관계이고, gains 곡선은 그중 재현율을 승인율에 대고 그린 셈입니다. 그래서 한 지점만 보지 않고, recall과 precision을 함께 놓고 컷오프를 정합니다.
기존 모델을 새 모델로 바꿀 때는 swap set을 봅니다. 같은 승인율에서 누가 새로 승인되고(swap-in) 누가 새로 거절되는지(swap-out)를 비교해, 정말 더 나은 사람을 받고 더 나쁜 사람을 거르는지 확인하는 거죠. 평균 지표 한 줄이 좋아져도 막상 바뀌는 고객층이 엉뚱하면 의미가 없으니까요. Part 0에서 본 비대칭 비용을 떠올리면, 어느 쪽 실수가 더 비싼지에 따라 컷오프와 트레이드오프의 무게가 달라집니다.
정리
신용 모델 평가는 한 숫자로 끝나지 않습니다. 세 가지 질문을 같이 던집니다.
- 판별: 순위를 잘 매기는가. AUC와 Gini가 헤드라인이고, 부도 같은 불균형에는 PR-AUC를 봅니다. KS는 규제와 스코어카드의 전통적 단골입니다.
- 보정: 확률이 실제 부도율과 맞는가. 예측과 실제를 구간별로 찍어 눈으로, Brier나 ECE로 숫자로 봅니다. 판별이 좋아도 따로 틀릴 수 있습니다.
- 안정성: 시간이 지나도 버티는가. PSI로 분포 이동을 감시합니다. out-of-time 검증과 한 몸입니다.
일반 ML이 판별 하나로 끝낼 때, 신용은 보정과 안정성을 더 봅니다. 확률로 가격을 매기고, 미래에 적용하는 일이기 때문입니다.
다음 Part 6에서는 방향을 한 번 틀어, 상관에서 인과로 넘어갑니다. 한도를 올리면 부도가 늘어날까 같은 질문은 예측이 아니라 인과의 문제이고, 그 답은 인과추론과 실험에서 나옵니다.