1 Logistic 으로부터 Risk Score
\[\hat r = \frac{1}{1 + \exp(-\hat\beta^T X)}\]
- \(\hat\beta\) 는 적합된 logistic 계수.
- \(X\) 는 개인의 위험 인자.
각 개인의 \(\hat r\) 가 그 개인의 위험 예측.
1.1 Framingham Risk Score 의 사례
위험 인자: age, sex, smoking, SBP, DBP, total cholesterol, HDL, diabetes.
Logistic 적합 (Wilson et al., 1998): \[\text{logit}(\hat r) = \alpha + \beta_1 \log(\text{age}) + \beta_2 \log(\text{SBP}) + \cdots\]
각 환자의 자료 입력 → 10 년 CV 위험 산출.
3 단계 직관:
- 추상 정의: 적합된 모형이 모든 새 환자에 적용 가능 — 위험 분류 도구.
- 일상어 비유: 시험 합격 예측 — 학생의 변수 입력 후 예측.
- 반사실 시나리오: Risk score 없이 의사 직관에만 의존 — 변동 ↑. Risk score 가 표준화 도구.
2 Cox 으로부터 Risk Score
\[\text{Score} = \hat\beta^T X\] \[\hat S(t \mid X) = S_0(t)^{\exp(\text{Score})}\]
Cox 의 baseline survival \(S_0(t)\) 에 covariate 효과를 곱.
- 추상 정의: \(\exp(\text{Score})\) = HR vs reference (baseline). 시점 \(t\) 의 생존 확률.
- 일상어 비유: 자동차의 마모 속도 ratio — 다른 자동차 baseline 대비.
- 반사실 시나리오: \(\hat S(t \mid X)\) 가 환자 의사 결정 도구 — 5 년·10 년 생존 예측.
3 단순화 — Integer Score
복잡한 logistic 계수 → 임상에서 즉시 산출 가능한 정수 점수.
Framingham 의 예: - Age 50 = 5 점. - Smoker = 3 점. - SBP 140 = 2 점. - …
Total 의 분류: - < 5: low. - 5~10: moderate. - > 10: high.
- 추상 정의: 계산기 없이 임상의가 침대 옆에서 산출 가능. 정밀도 trade-off.
- 일상어 비유: 환율 변환의 단순화 — 정확보다 빠른 산출 우선.
- 반사실 시나리오: 정밀 도구 (전자 계산기) 가 있다면 logistic 직접 산출. Bedside 활용 위해 integer 단순화.
3.1 Integer 변환 절차
- Categorical 변환: 연속 변수를 카테고리로.
- Reference 결정: 가장 흔한 카테고리.
- β 산출: 각 카테고리의 logistic 계수.
- Scaling: 가장 작은 |β| 로 나눠 정수화.
- Total score → 위험 변환: 적합된 logistic 으로 위험 산출.
3.2 Integer Score 의 한계
연속 변수의 카테고리화 → 정보 손실. AUC 약간 ↓ (보통 0.01~0.03).
3 단계 직관:
- 추상 정의: Categorical 변환이 정보 폐기. 임상 활용성과 정밀도의 trade-off.
- 일상어 비유: 시험 점수의 등급 변환 — 등급 5 단계로는 학생 차이 가림.
- 반사실 시나리오: Bedside 도구로는 integer 가 표준. 전자 계산 도구 (앱) 가 있으면 logistic 직접.
4 Multiple Regression Score
OLS 로부터: \[\hat Y = \hat\alpha + \hat\beta^T X\]
각 개인의 예측값.
- 추상 정의: Continuous outcome (혈압, BMI, 점수) 의 예측. Logistic 의 continuous 판.
- 일상어 비유: 학생의 미래 시험 점수 예측.
- 반사실 시나리오: Continuous 결과는 logistic 부적합. Linear regression score 표준.
5 단계별 위험 인자 추가
Step 1: Baseline 변수 (age, sex) 만. Step 2: Strong predictor 추가 (smoking, SBP). Step 3: 약한 predictor 추가 (diet, exercise).
각 단계의 AUC 변화 확인.
- 추상 정의: 각 변수 추가의 △AUC 가 추가 가치 정량.
- 일상어 비유: 검사를 추가하면 진단 정확도 ↑ — 추가 비용 대비 가치 평가.
- 반사실 시나리오: △AUC 작으면 변수 추가 정당화 어려움. NRI/IDI 가 더 정밀 평가.
6 A/B 테스트의 Risk Score
A/B 테스트의 retention 분석 → churn risk score.
# 사용자 churn 예측 모형
import statsmodels.api as sm
X = users[["tenure", "engagement", "support_tickets", "subscription"]]
X = sm.add_constant(X)
model = sm.Logit(users["churned"], X).fit()
# 새 사용자의 churn risk
new_user_X = ...
churn_risk = model.predict(new_user_X)활용: - High risk (> 50%): 보존 캠페인. - Medium (10~50%): Engagement 개선. - Low: 일반 유지.
3 단계 직관:
- 추상 정의: 사용자 위험 점수 → personalization 의 도구.
- 일상어 비유: 보험 회사의 사고 위험 점수 — 보험료 결정.
- 반사실 시나리오: 모든 사용자에 같은 캠페인 → 자원 낭비. Risk score 가 정밀 표적.
7 사례 — 임상 Risk Score 의 다양성
| 위험 인자 | 점수 |
|---|---|
| Congestive heart failure | 1 |
| Hypertension | 1 |
| Age ≥ 75 | 2 |
| Diabetes | 1 |
| Stroke 병력 | 2 |
| Vascular disease | 1 |
| Age 65~74 | 1 |
| Sex (female) | 1 |
Total Score → 1 년 stroke 위험: - 0: 0% - 1: 1.3% - 2: 2.2% - 5: 6.7% - 9: 15.2%
임상 활용: - Score ≥ 2 (남) 또는 ≥ 3 (여) → 항응고제 권장.
3 단계 직관:
- 추상 정의: Logistic 의 정수 변환 — 임상의가 즉시 산출.
- 일상어 비유: 시험 점수 합산 → 합격 임계값 비교.
- 반사실 시나리오: 정밀 logistic 적용 시 정확도 ↑ but 임상 활용성 ↓. CHA₂DS₂-VASc 가 표준 trade-off.
만성 질환 부담의 합산 점수. 1 년·10 년 사망률 예측.
| 질환 | 가중치 |
|---|---|
| 심근경색·CHF·말초혈관 | 1 |
| 당뇨 (단순) | 1 |
| AIDS·전이 종양 | 6 |
| 중증 간 질환 | 3 |
| … | … |
3 단계 직관:
- 추상 정의: 다중 질환의 결합 효과 — 단일 질환 OR 의 합산.
- 일상어 비유: 자동차 노후화 점수 — 부품별 합산.
- 반사실 시나리오: 단일 질환 보고만 보면 다중 질환의 결합 위험 가림. Charlson 이 종합 평가.
수술 전 환자 변수 → 수술 후 30 일 사망률 예측.
입력 변수: Age, sex, EF, urgency, NYHA class, …
Logistic regression (정밀): \[\text{logit}(\hat r) = \beta_0 + \sum \beta_j X_j\]
Web calculator: http://www.euroscore.org/calc.html
활용: - 환자 의사 결정 (수술 vs 보존적 치료). - 병원 quality benchmark. - 보험 가격 결정.
3 단계 직관:
- 추상 정의: 환자 + 수술 특성의 종합 평가 → 수술 위험 정량.
- 일상어 비유: 자동차 보험 — 운전자 + 차량 + 환경 종합 점수.
- 반사실 시나리오: Risk score 없이 의사 직관 → 변동 ↑ + 의사 결정 자의성. Score 가 표준화.
8 Sullivan 의 5 단계 Integer 변환
Step 1 — Categorize: 연속 변수를 임상 의의 있는 카테고리로. - Age: < 50, 50~60, 60~70, 70+. - BMI: < 25, 25~30, > 30.
Step 2 — Reference: 가장 흔한 또는 가장 위험 ↓ 카테고리.
Step 3 — Logistic 적합: 카테고리 dummy 로 적합.
Step 4 — Scale: 가장 작은 |β| 로 나눠 정수화. \[w_j^{\text{int}} = \text{round}(\beta_j / \beta_{\text{min}})\]
Step 5 — Total → Risk: 적합된 logistic 으로 total score → 위험. \[\hat r = 1/(1 + \exp(-(\alpha + \delta \cdot \text{Total})))\]
- 추상 정의: Continuous logistic 을 임상 활용 가능 정수 score 로 환원. 5 단계 표준화.
- 일상어 비유: 정밀 측정값 → 시험 채점의 5 단계 등급.
- 반사실 시나리오: 임의 정수화 시 정보 손실 큼. Sullivan 의 표준이 균형.
9 Risk Score 의 Validation 단계
Apparent performance: Train data 에서 측정 — over-fit 위험. Internal validation: Bootstrap 또는 CV — over-fit 보정. External validation: 다른 인구·시점 — 진성 일반화. Impact study: 임상 도입 후 outcome 변화.
(Steyerberg, 2009; Collins et al., 2015 — TRIPOD).
- 추상 정의: 각 단계가 다른 의문에 답. Apparent → Internal → External → Impact.
- 일상어 비유: 시험 → 모의고사 → 본 시험 → 직장 적용.
- 반사실 시나리오: Apparent 만 보고 모형 사용 → 다른 자료에서 부정확. 4 단계 모두 권장.
10 Q&A — Risk Score 의 함정
A: 아니다. Over-fit 위험.
3 단계 직관:
- 추상 정의: 변수 ↑ → train AUC ↑ but test AUC ↓ 가능. Bias-variance trade-off.
- 일상어 비유: 시험 답안에 자세한 정보 ↑ → 모범 답안에 적합 ↑ but 새 시험엔 부정확.
- 반사실 시나리오: Cross-validation 으로 변수 수 결정. 또는 정규화 (Lasso) 로 자동 선택.
A: 거의 항상 정수 score 가 약간 부정확 (정보 손실).
3 단계 직관:
- 추상 정의: Categorical 변환 + 정수 가중 = 정보 폐기. AUC 약간 ↓.
- 일상어 비유: 시험 점수의 등급 변환 — 등급 5 단계는 학생 차이 가림.
- 반사실 시나리오: 임상 활용성 ↑ for 정수, 정확도 ↑ for logistic. Trade-off.
A: 아니다. 추가 변수가 기존과 강한 상관 (multicollinearity) 시 △AUC ≈ 0.
3 단계 직관:
- 추상 정의: 새 변수의 추가 정보 = 기존 변수와 독립인 부분만.
- 일상어 비유: 키와 몸무게 — 강한 상관 → 둘 다 추가해도 정보 ≈ 1 개.
- 반사실 시나리오: 변수 선택 시 correlation 점검 + VIF 평가. 또는 PCA 차원 축소.
11 A/B 테스트의 Risk Score 활용 사례
# 사용자 churn 예측 모형
features = ["tenure_days", "engagement", "support_tickets", "subscription_tier"]
X = users[features]
X = sm.add_constant(X)
model = sm.Logit(users["churned"], X).fit()
# 새 사용자의 churn 위험
def predict_churn_risk(user):
eta = model.params["const"]
for f in features:
eta += model.params[f] * user[f]
return 1 / (1 + np.exp(-eta))
# 캠페인 표적
high_risk = users[users["churn_risk"] > 0.5]
print(f"고위험 {len(high_risk)} 명 → 보존 캠페인")3 단계 직관:
- 추상 정의: 사용자 위험 점수 → personalization 도구. Score → 카테고리 → 캠페인.
- 일상어 비유: 보험 회사의 위험 분류 → 보험료 차등.
- 반사실 시나리오: 모든 사용자 균일 캠페인 → 자원 낭비 + 고위험 보존 실패. Score 가 표적.
A/B 테스트의 lift 가 사용자 segment 별 다르면, HTE risk score 산출.
# Treatment effect heterogeneity
# 각 사용자의 individual lift 예측
ite_model = CausalForest(features=user_features, treatment=treatment, outcome=conversion)
ite_model.fit()
# 새 사용자의 expected lift
user_ite = ite_model.predict(new_user)
# 정책: lift > 임계값 인 사용자에만 처치
if user_ite > 0.05:
apply_treatment(new_user)3 단계 직관:
- 추상 정의: ITE (individual treatment effect) 가 risk score 의 인과 일반화.
- 일상어 비유: 약 효과의 환자 별 예측 → 약 처방 자유 결정.
- 반사실 시나리오: 평균 lift 만 보고 모든 사용자 처치 → 일부에 부정 효과. ITE 가 정밀 적용.
# Cox PH 로 retention curve → expected tenure
cph = CoxPHFitter()
cph.fit(users, "tenure", "churned", formula="age + channel + engagement")
# 사용자별 expected lifetime
expected_tenure = cph.predict_expectation(user)
# LTV = expected tenure × monthly revenue
LTV = expected_tenure * monthly_revenue활용: 마케팅 자원 배분 — high-LTV 에 우선 투자.
3 단계 직관:
- 추상 정의: Survival 모형의 평균 생존 시간 = LTV 의 통계 기초.
- 일상어 비유: 자동차의 평균 수명 + 연간 가치 = total 가치.
- 반사실 시나리오: Single-period revenue 만 보면 long-term 가치 가림. LTV 가 종합 평가.
12 결론
Logistic·Cox·Multiple regression 으로부터 risk score 산출. Sullivan 의 5 단계 정수 변환이 표준. CHA₂DS₂-VASc·Charlson·EuroSCORE 같은 임상 score 의 다양성. A/B 테스트의 IT 활용 (churn, ITE, LTV) 도 동일 통계 도구. 검증 단계 (apparent → internal → external → impact) 가 신뢰성의 표준.
다음 글 (H-WOO13-4) 에서 ROC 와 AUC 의 깊은 분석을 본다.
13 관련 주제
- Association vs Prognosis
- 1111-11-11, ROC 와 AUC