1 Reclassification 의 발상
새 변수 추가 시 환자의 위험 카테고리 변경 분석.
예시: 기존 모형 (age + smoking) → 새 변수 (biomarker) 추가 → 환자의 risk 카테고리 변경.
(Pencina et al., 2008; Woodward, 2014, Ch.13.9).
2 NRI — Net Reclassification Improvement
위험 카테고리 (예: < 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 의 의미
- Event NRI: Case 의 위험 ↑ 비율 - ↓ 비율. > 0 이면 case 식별 ↑.
- Non-event NRI: Control 의 위험 ↓ 비율 - ↑ 비율. > 0 이면 control 정직 분류.
- Total NRI: 두 부분의 합.
3 단계 직관:
- 추상 정의: 새 변수가 case 와 control 을 더 정확히 분류.
- 일상어 비유: 시험 변경 — 합격자 식별 ↑ + 부적격자 식별 ↑ → 정직성 ↑.
- 반사실 시나리오: NRI > 0 → 새 변수의 가치. < 0 → 모형 악화.
2.2 NRI 의 임계값
| NRI | 해석 |
|---|---|
| < 0.05 | 무관 |
| 0.05~0.20 | Modest |
| > 0.20 | Substantial |
(Pencina et al., 2010).
2.3 Continuous 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 가 임계값 무관, categorical 이 임상 임계값 사용.
- 일상어 비유: 시험 점수의 변화 (continuous) vs 등급 변화 (categorical).
- 반사실 시나리오: 임상 임계값 명확 시 categorical NRI 가 직관. 그렇지 않으면 continuous.
2.4 NRI 의 한계
- 임계값 의존: Threshold 변경 시 NRI 변동.
- Multiple testing: 다중 임계값 시도 시 cherry-picking.
- CI 산출 어려움: Bootstrap 권장.
3 단계 직관:
- 추상 정의: 임계값이 자료-driven 면 over-fit 위험.
- 일상어 비유: 시험 합격선을 결과 본 후 결정 — 자기 선택.
- 반사실 시나리오: 사전 지정 임계값 + bootstrap CI 가 표준.
3 IDI — Integrated Discrimination Improvement
평균 예측 확률의 변화:
\[\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 의 직관
- 추상 정의: 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
가설: 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 et al. (2013) 의 NRI 비판: - NRI > 0 이라도 calibration 부정확 가능. - 임계값 자의성. - Decision curve analysis 가 더 정직.
3 단계 직관:
- 추상 정의: NRI 가 임계값과 모형의 상호작용 측정. 임상 가치 직접 측정 아님.
- 일상어 비유: 시험 변경의 통계 — 임상 의사 결정 가치 아님.
- 반사실 시나리오: Decision Curve Analysis (DCA) 가 임상 net benefit 직접 측정.
5.1 Decision Curve Analysis (DCA)
각 임계값 \(p\) 의 net benefit:
\[\text{Net Benefit} = \frac{TP}{n} - \frac{FP}{n} \cdot \frac{p}{1-p}\]
여러 임계값에서 plot.
- 추상 정의: 임상 의사 결정 (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 의 분해
\[\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 의 정직 분류 변화.
- 추상 정의: Case 와 control 의 분류 변화를 별도 측정. 어느 부분 우월?
- 일상어 비유: 시험 변경 — 합격자 식별 ↑ + 부적격자 식별 ↑.
- 반사실 시나리오: 한 부분만 ↑ 이고 다른 부분 ↓ → 모형 trade-off. 종합 NRI 가 misleading 가능.
보고 권장: NRI_event, NRI_non-event 별도 + 종합.
8 Continuous 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\) 또는 정규화).
- 추상 정의: Continuous 가 임계값 자의성 회피. Categorical 이 임상 의사 결정 직접.
- 일상어 비유: 점수 자체 (continuous) vs 등급 (categorical).
- 반사실 시나리오: 임상 임계값 명확 시 categorical, 그렇지 않으면 continuous.
9 NRI 의 한계 — Pepe 의 비판
Pepe et al. (2013) 의 비판:
- NRI > 0 이라도 calibration 부정확 가능.
- 새 변수가 random noise 라도 NRI > 0 가능.
- 임계값 자의성.
3 단계 직관:
- 추상 정의: NRI 가 임계값 + 모형의 결합 측정. 진성 임상 가치 직접 측정 아님.
- 일상어 비유: 시험 변경의 통계 — 임상 의사 결정 가치 아님.
- 반사실 시나리오: Decision Curve Analysis (DCA) 가 임상 net benefit 직접.
9.1 Vickers’ 권장
- 추상 정의: NRI 가 supplementary, DCA 가 primary.
- 일상어 비유: NRI = 통계 부산물, DCA = 의사 결정 도구.
- 반사실 시나리오: 두 도구 모두 보고가 안전.
10 A/B 테스트의 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 를 본다.