[개발 공부] / Net Reclassification Improvement: 위험군 이동으로 보는 새 모델의 추가 가치.md

Net Reclassification Improvement: 위험군 이동으로 보는 새 모델의 추가 가치

조회

2026년 8월 4일 | 개발 공부


Net Reclassification Improvement(NRI, 순 재분류 향상도)는 기존 위험 예측 모델에 새 변수나 새 모델을 더했을 때, 실제 사건과 비사건의 위험군 이동이 더 나은 방향으로 바뀌었는지 비교하는 지표다. AUC가 거의 움직이지 않아도 위험도 10% 같은 의사결정 경계 주변의 사람이 다른 군으로 옮겨 갈 수 있다. NRI는 바로 그 이동을 사건과 비사건으로 나눠 센다.

나는 처음 이 이름을 봤을 때 ‘전체 대상 중 몇 퍼센트를 올바르게 재분류했는가’라고 읽었다. 이 해석은 틀리기 쉽다. NRI는 네 가지 이동 비율을 더하고 빼서 만든 값이지, 개선된 사람 수를 전체 표본으로 나눈 단순 비율이 아니다. 숫자가 커 보이는 데 비해 임상적 의미는 따로 확인해야 하는 이유도 여기에 있다.

실제 사건과 비사건에서 위험도 상승·유지·하락을 나눠 NRI 0.12를 계산한 도식
실제 사건에서는 위험도 상승을, 실제 비사건에서는 위험도 하락을 유리한 이동으로 계산한 NRI 예시. 전체 0.12는 두 집단 성분의 합이다.

1. 사건과 비사건은 좋은 이동 방향이 반대다

실제 사건이 발생한 사람에게 새 모델이 더 높은 위험을 주면 유리한 이동이다. 반대로 더 낮은 위험군으로 내리면 놓칠 가능성이 커지므로 불리하다. 사건 성분은 사건 중 상승 비율에서 하락 비율을 뺀 값이다. 실제 비사건에서는 방향이 뒤집힌다. 낮은 위험군으로 내리면 불필요한 검사나 개입을 줄일 수 있고, 높은 군으로 올리면 false positive 부담이 늘 수 있다.

그래서 기본 식은 두 줄로 읽는 편이 낫다. 사건 성분은 P(상승 | 사건) - P(하락 | 사건), 비사건 성분은 P(하락 | 비사건) - P(상승 | 비사건)이고, 전체 NRI는 둘의 합이다. 각 성분은 -1부터 1 사이에 놓이며 전체 값은 -2부터 2까지 가능하다.

2. 0.12를 ‘12%가 개선됐다’고 읽으면 안 된다

그림의 합성 예시에서 실제 사건 100명 중 18명은 위험도가 올라가고 8명은 내려갔다. 사건 성분은 (18-8)/100 = 0.10이다. 비사건 900명 중 90명은 내려가고 72명은 올라가서 비사건 성분은 (90-72)/900 = 0.02가 된다. 두 값을 더한 전체 NRI는 0.12다.

여기서 0.12는 전체 1,000명 중 120명이 올바르게 바뀌었다는 뜻이 아니다. 사건과 비사건에서 서로 다른 분모로 구한 두 차이를 단순 합한 값이다. 사건 성분 0.10과 비사건 성분 0.02를 따로 적으면 새 모델의 이득이 어느 쪽에서 왔는지 보이지만, 합계 하나만 쓰면 그 비대칭이 가려진다. 재분류 표와 두 성분을 같이 제시해야 하는 이유다.

3. 위험군 경계는 결과를 본 뒤 고르면 안 된다

Category-based NRI는 저위험·중위험·고위험처럼 미리 정한 구간을 사용한다. 이 구간은 outcome의 시간 범위와 실제 행동 기준에 맞아야 한다. 10년 심혈관 위험 5%와 20%가 검사·치료 결정을 바꾸는 경계라면 의미가 있지만, 계산 결과가 가장 좋아 보이는 cut-off를 사후에 고르면 낙관 편향이 들어간다.

같은 사람의 예측이 4.9%에서 5.1%로 바뀐 이동과 6%에서 19%로 바뀐 이동도 경계를 넘었는지에 따라 전자는 잡히고 후자는 잡히지 않을 수 있다. 세 개 이상 위험군에서는 한 칸 이동과 두 칸 이동을 같은 방향으로 세는 문제도 생긴다. 따라서 경계 선택 근거, outcome 정의, 예측 기간을 수치와 함께 남겨야 서로 다른 연구의 NRI를 비교할 수 있다.

4. Continuous NRI는 경계를 없애지만 의미까지 해결하지는 않는다

Continuous NRI 또는 category-free NRI는 예측 확률이 조금이라도 위나 아래로 움직이면 이동으로 센다. 임의의 위험군 경계를 피할 수 있다는 장점이 있지만, 0.0001의 변화와 0.20의 변화를 같은 한 건으로 처리한다. 이미 충분히 높은 위험을 더 높인 사건도 유리한 이동으로 잡히지만 실제 치료 결정은 달라지지 않을 수 있다.

이 특성 때문에 continuous NRI는 새 변수가 실제로 주는 추가 가치를 과장할 수 있다는 비판을 받아 왔다. 숫자 하나가 익숙한 비율처럼 보인다고 해서 임상적 효용이 자동으로 생기는 것은 아니다. 나는 category-free라는 이름을 ‘가정이 없는 지표’로 읽지 않고, 위험군 경계 대신 방향만 남긴 비교라고 메모해 둔다.

5. 보정이 어긋난 모델끼리 비교하면 이동도 흔들린다

새 모델이 모든 사람의 위험을 일괄적으로 높게 예측하면 사건 일부는 위로 잘 이동한 것처럼 보인다. 동시에 훨씬 많은 비사건도 위로 올라갈 수 있다. 전체 합에서 사건 성분이 커 보이면 나쁜 보정이 만든 이동을 추가 가치로 오해할 여지가 있다. 외부에서 가져온 점수표나 서로 다른 모집단에서 만든 non-nested model을 바로 비교할 때 특히 조심해야 한다.

두 모델은 같은 독립 평가 데이터에서 예측을 만들고, 사건률·calibration intercept와 slope·calibration curve를 먼저 확인하는 편이 안전하다. bootstrap 신뢰구간을 계산한다면 모델 fitting과 recalibration을 재표본 절차 안에서 어떻게 다뤘는지도 적어야 한다. NRI의 p-value 하나로 새 변수의 유효성을 증명하려 하기보다 회귀계수와 모델 적합도 검정, 외부 검증을 별도로 본다.

6. 내가 결과표에 남길 최소 항목

내가 NRI를 보고해야 한다면 기존 모델과 새 모델의 변수·학습 데이터, 독립 평가 split, outcome과 시간 범위, 사건 수와 비사건 수, 위험군 경계와 선택 근거를 먼저 적는다. 그다음 전체 재분류 표, event NRI, nonevent NRI, 전체 NRI, bootstrap 신뢰구간을 붙인다. Continuous NRI라면 category-free 버전임을 제목 옆에 명시한다.

표본이 작거나 사건이 드문 데이터에서는 몇 명의 이동만으로 성분이 크게 흔들릴 수 있다. 총 NRI를 소수점 아래까지 길게 적기보다 각 셀의 사람 수와 비율을 같이 보여 주고, 기관·기간·하위집단에서도 이동 방향이 유지되는지 확인한다. 새 변수의 측정 비용과 결측률도 표 옆에 둔다. 위험군 이동이 좋아 보여도 새 검사를 모든 대상에게 추가하기 어렵다면 실제 운영 가치는 줄어든다.

마지막에는 AUC 변화, calibration, Brier score 같은 확률 예측 진단과 Decision Curve Analysis의 net benefit을 같은 표에서 본다. Pencina 등의 원 논문은 AUC 밖의 추가 정보를 주는 재분류 지표를 제안했고, Pepe 등의 비판적 리뷰는 성분 분리와 bootstrap, net benefit 중심 해석을 권한다. 내가 남길 결론은 NRI가 높다는 한 줄이 아니라, 누가 어느 경계를 넘었고 그 이동이 실제 행동을 더 낫게 만들었는가다.

댓글

홈으로 돌아가기

검색 결과

"" 검색 결과입니다.