Reclassification — NRI 와 IDI

Woodward Ch.13.9 — Reclassification (NRI, IDI)

새 변수 추가의 가치 정량 도구. Net Reclassification Improvement (NRI), Integrated Discrimination Improvement (IDI) 의 수식 유도, 임상 활용, 그리고 한계 (post-hoc threshold, 검정력) 를 추상 → 일상어 → 반사실 3 단계 직관으로 풀어낸다.

Experimentation
Modeling
저자

Kwangmin Kim

공개

2026년 05월 08일

1 Reclassification 의 발상

정의: Reclassification

새 변수 추가 시 환자의 위험 카테고리 변경 분석.

예시: 기존 모형 (age + smoking) → 새 변수 (biomarker) 추가 → 환자의 risk 카테고리 변경.

(Pencina et al., 2008; Woodward, 2014, Ch.13.9).

2 NRI — Net Reclassification Improvement

정의: NRI

위험 카테고리 (예: < 5%, 5~20%, > 20%) 변경의 net 이익.

\[\text{NRI} = (P(\uparrow \mid Y=1) - P(\downarrow \mid Y=1)) + (P(\downarrow \mid Y=0) - P(\uparrow \mid Y=0))\]

해석: - Case (Y=1) 의 위험 카테고리가 새 모형에서 ↑ → 좋음. - Control (Y=0) 의 위험이 새 모형에서 ↓ → 좋음.

2.1 직관 — NRI 의 의미

직관 3 단계: NRI 의 두 부분
  • Event NRI: Case 의 위험 ↑ 비율 - ↓ 비율. > 0 이면 case 식별 ↑.
  • Non-event NRI: Control 의 위험 ↓ 비율 - ↑ 비율. > 0 이면 control 정직 분류.
  • Total NRI: 두 부분의 합.

3 단계 직관:

  • 추상 정의: 새 변수가 case 와 control 을 더 정확히 분류.
  • 일상어 비유: 시험 변경 — 합격자 식별 ↑ + 부적격자 식별 ↑ → 정직성 ↑.
  • 반사실 시나리오: NRI > 0 → 새 변수의 가치. < 0 → 모형 악화.

2.2 NRI 의 임계값

정의: NRI 의 임상 의의
NRI 해석
< 0.05 무관
0.05~0.20 Modest
> 0.20 Substantial

(Pencina et al., 2010).

2.3 Continuous NRI

정의: Threshold-free NRI

카테고리 임계값 무관 — 단순 위험 ↑ vs ↓:

\[\text{NRI}_{\text{cont}} = (P(\hat r_{\text{new}} > \hat r_{\text{old}} \mid Y=1) - P(\hat r_{\text{new}} < \hat r_{\text{old}} \mid Y=1))\] \[+ (P(\hat r_{\text{new}} < \hat r_{\text{old}} \mid Y=0) - P(\hat r_{\text{new}} > \hat r_{\text{old}} \mid Y=0))\]

직관: Continuous vs Categorical NRI
  • 추상 정의: Continuous 가 임계값 무관, categorical 이 임상 임계값 사용.
  • 일상어 비유: 시험 점수의 변화 (continuous) vs 등급 변화 (categorical).
  • 반사실 시나리오: 임상 임계값 명확 시 categorical NRI 가 직관. 그렇지 않으면 continuous.

2.4 NRI 의 한계

가정 위반: NRI 의 검정력 한계
  • 임계값 의존: Threshold 변경 시 NRI 변동.
  • Multiple testing: 다중 임계값 시도 시 cherry-picking.
  • CI 산출 어려움: Bootstrap 권장.

3 단계 직관:

  • 추상 정의: 임계값이 자료-driven 면 over-fit 위험.
  • 일상어 비유: 시험 합격선을 결과 본 후 결정 — 자기 선택.
  • 반사실 시나리오: 사전 지정 임계값 + bootstrap CI 가 표준.

3 IDI — Integrated Discrimination Improvement

정의: IDI

평균 예측 확률의 변화:

\[\text{IDI} = (\bar{\hat r}_{\text{new}}^{Y=1} - \bar{\hat r}_{\text{old}}^{Y=1}) - (\bar{\hat r}_{\text{new}}^{Y=0} - \bar{\hat r}_{\text{old}}^{Y=0})\]

해석: - Case 의 평균 예측 위험 ↑ → 좋음. - Control 의 평균 예측 위험 ↓ → 좋음.

(Pencina et al., 2008).

3.1 IDI 의 직관

직관 3 단계: IDI 의 의미
  • 추상 정의: AUC 변화의 continuous version. 두 그룹의 예측 분포의 separation 변화.
  • 일상어 비유: 두 그룹의 평균 점수 차이 변화 — 차이 ↑ 이면 분류 ↑.
  • 반사실 시나리오: IDI 가 작아도 임상 의의 있을 수 있음 — high-risk 영역의 변화.

3.2 IDI vs NRI

측면 NRI IDI
임계값 의존 (categorical) 또는 무관 (continuous) 무관
Discrimination Threshold-based Threshold-free
검정 Bootstrap Asymptotic + bootstrap
임상 활용 임계값 명확 시 종합 평가
직관: 두 측도의 분업
  • 추상 정의: NRI 가 임상 의사 결정 직접, IDI 가 종합 discrimination.
  • 일상어 비유: 합격선 변화 (NRI) vs 점수 분포 변화 (IDI).
  • 반사실 시나리오: 두 측도 모두 보고가 정직.

4 사례 — Biomarker 의 NRI/IDI

사례: hsCRP 의 CV 위험 예측 가치

가설: Framingham 모형 + hsCRP (high-sensitivity CRP) 의 가치.

모형 비교: - Old: Age + Smoke + SBP + Cholesterol. - New: + hsCRP.

결과 (가상): - AUC old: 0.75, new: 0.77 (△AUC = 0.02). - NRI: 0.10 (Modest improvement). - IDI: 0.015.

해석: hsCRP 가 modest 가치. AUC 변화 작지만 NRI 가 임상 활용 가치 시사.

3 단계 직관:

  • 추상 정의: △AUC 가 작아도 NRI 가 의미 있을 수 있음 — 다른 dimension.
  • 일상어 비유: 시험 변경의 평균 점수 차이는 작아도 합격선 부근의 학생 분류 변화는 큼.
  • 반사실 시나리오: △AUC 만 보고하면 hsCRP 무가치 결론. NRI 가 임상 가치 추가 정량.

5 NRI 와 IDI 의 비판

가정 위반: Pepe 의 비판

Pepe et al. (2013) 의 NRI 비판: - NRI > 0 이라도 calibration 부정확 가능. - 임계값 자의성. - Decision curve analysis 가 더 정직.

3 단계 직관:

  • 추상 정의: NRI 가 임계값과 모형의 상호작용 측정. 임상 가치 직접 측정 아님.
  • 일상어 비유: 시험 변경의 통계 — 임상 의사 결정 가치 아님.
  • 반사실 시나리오: Decision Curve Analysis (DCA) 가 임상 net benefit 직접 측정.

5.1 Decision Curve Analysis (DCA)

정의: DCA

각 임계값 \(p\) 의 net benefit:

\[\text{Net Benefit} = \frac{TP}{n} - \frac{FP}{n} \cdot \frac{p}{1-p}\]

여러 임계값에서 plot.

직관 3 단계: DCA 의 임상 가치
  • 추상 정의: 임상 의사 결정 (treat 또는 not) 의 net benefit.
  • 일상어 비유: 광고 캠페인의 ROI — 비용·이익 통합 평가.
  • 반사실 시나리오: NRI/IDI 가 통계 도구, DCA 가 임상 의사 결정 도구.

6 A/B 테스트의 Reclassification

사례: 새 사용자 변수의 가치

A/B 의 conversion 예측 모형 — 새 변수 (예: 광고 클릭 history) 의 가치.

from sklearn.metrics import roc_auc_score

# Old model (without new feature)
auc_old = roc_auc_score(y_test, model_old.predict_proba(X_test_old)[:, 1])

# New model (with new feature)
auc_new = roc_auc_score(y_test, model_new.predict_proba(X_test_new)[:, 1])

print(f"AUC old: {auc_old:.3f}")
print(f"AUC new: {auc_new:.3f}")
print(f"△AUC: {auc_new - auc_old:.3f}")

# NRI (간이)
old_pred = model_old.predict_proba(X_test_old)[:, 1]
new_pred = model_new.predict_proba(X_test_new)[:, 1]

# Threshold 5%, 20%
def categorize(p):
    return np.where(p < 0.05, "low", np.where(p < 0.20, "medium", "high"))

old_cat = categorize(old_pred)
new_cat = categorize(new_pred)

# Event NRI
case_idx = y_test == 1
case_up = ((old_cat[case_idx] == "low") & (new_cat[case_idx] != "low")).sum()
case_down = ((old_cat[case_idx] == "high") & (new_cat[case_idx] != "high")).sum()
event_nri = (case_up - case_down) / case_idx.sum()
print(f"Event NRI: {event_nri:.3f}")

3 단계 직관:

  • 추상 정의: 새 변수의 추가 가치 정량 → A/B 의 사용자 segmentation 정확도 평가.
  • 일상어 비유: 새 검사 도구의 가치 — 진단 정확도 변화.
  • 반사실 시나리오: △AUC 만 보고하면 사용자 영향 모름. NRI 가 segment 변화 정량.

7 NRI 와 IDI 의 분해

정의: NRI 의 두 부분

\[\text{NRI} = \text{NRI}_{\text{event}} + \text{NRI}_{\text{non-event}}\]

NRI_event: \[P(\text{up} \mid Y=1) - P(\text{down} \mid Y=1)\] Case 의 정직 분류 변화.

NRI_non-event: \[P(\text{down} \mid Y=0) - P(\text{up} \mid Y=0)\] Control 의 정직 분류 변화.

직관 3 단계: 두 부분의 분업
  • 추상 정의: Case 와 control 의 분류 변화를 별도 측정. 어느 부분 우월?
  • 일상어 비유: 시험 변경 — 합격자 식별 ↑ + 부적격자 식별 ↑.
  • 반사실 시나리오: 한 부분만 ↑ 이고 다른 부분 ↓ → 모형 trade-off. 종합 NRI 가 misleading 가능.

보고 권장: NRI_event, NRI_non-event 별도 + 종합.

8 Continuous NRI

정의: Threshold-free NRI

카테고리 임계값 무관:

\[\text{cNRI} = (P(\hat r_{\text{new}} > \hat r_{\text{old}} | Y=1) - P(\hat r_{\text{new}} < \hat r_{\text{old}} | Y=1))\] \[+ (P(\hat r_{\text{new}} < \hat r_{\text{old}} | Y=0) - P(\hat r_{\text{new}} > \hat r_{\text{old}} | Y=0))\]

Range: \(-2\) ~ \(+2\) (보고 시 \(/2\) 또는 정규화).

직관: cNRI vs Categorical NRI
  • 추상 정의: Continuous 가 임계값 자의성 회피. Categorical 이 임상 의사 결정 직접.
  • 일상어 비유: 점수 자체 (continuous) vs 등급 (categorical).
  • 반사실 시나리오: 임상 임계값 명확 시 categorical, 그렇지 않으면 continuous.

9 NRI 의 한계 — Pepe 의 비판

가정 위반: NRI 의 misuse

Pepe et al. (2013) 의 비판:

  • NRI > 0 이라도 calibration 부정확 가능.
  • 새 변수가 random noise 라도 NRI > 0 가능.
  • 임계값 자의성.

3 단계 직관:

  • 추상 정의: NRI 가 임계값 + 모형의 결합 측정. 진성 임상 가치 직접 측정 아님.
  • 일상어 비유: 시험 변경의 통계 — 임상 의사 결정 가치 아님.
  • 반사실 시나리오: Decision Curve Analysis (DCA) 가 임상 net benefit 직접.

9.1 Vickers’ 권장

직관: DCA 가 표준 권장
  • 추상 정의: NRI 가 supplementary, DCA 가 primary.
  • 일상어 비유: NRI = 통계 부산물, DCA = 의사 결정 도구.
  • 반사실 시나리오: 두 도구 모두 보고가 안전.

10 A/B 테스트의 NRI

사례: 새 사용자 변수의 NRI

A/B 의 conversion 모형에 새 변수 (광고 클릭 history) 추가.

Old model: User segment (3 카테고리) → low/med/high risk. New model: + 광고 클릭 → low/med/high risk.

# Threshold 5%, 20%
old_cat = pd.cut(old_pred, [0, 0.05, 0.20, 1.0], labels=["low", "med", "high"])
new_cat = pd.cut(new_pred, [0, 0.05, 0.20, 1.0], labels=["low", "med", "high"])

# Event NRI (Y=1)
case = y == 1
case_up = ((old_cat[case] < new_cat[case])).sum()
case_down = ((old_cat[case] > new_cat[case])).sum()
event_nri = (case_up - case_down) / case.sum()

# Non-event NRI
ctrl = y == 0
ctrl_down = ((old_cat[ctrl] > new_cat[ctrl])).sum()
ctrl_up = ((old_cat[ctrl] < new_cat[ctrl])).sum()
nonevent_nri = (ctrl_down - ctrl_up) / ctrl.sum()

print(f"Event NRI: {event_nri:.3f}")
print(f"Non-event NRI: {nonevent_nri:.3f}")
print(f"Total NRI: {event_nri + nonevent_nri:.3f}")

3 단계 직관:

  • 추상 정의: A/B 의 segment 분류 정확도 변화 — 새 변수의 가치 정량.
  • 일상어 비유: 마케팅 segment 변경의 ROI.
  • 반사실 시나리오: △AUC 만 보면 segment 변화 모름. NRI 가 직접.

11 결론

NRI 와 IDI 가 새 변수의 가치 정량 도구. Continuous NRI 가 임계값 무관 안전. AUC 외 임상 가치 평가에 유용. 단 임계값 자의성 + DCA 와의 비교 필요. NRI 의 분해 (event + non-event) 가 모형 trade-off 진단 도구.

다음 글 (H-WOO13-9) 에서 validation, presentation, impact studies 를 본다.

12 관련 주제

Subscribe

Enjoy this blog? Get notified of new posts by email: