통계 모형으로부터 Risk Score 산출

Woodward Ch.13.3 — Risk Scores from Statistical Models

Logistic regression, Cox PH, multiple regression 으로부터 individual risk score 를 산출하는 절차, 단순화된 점수 시스템 (integer score) 의 활용, 그리고 단계별 위험 인자 추가의 통계적 정당화를 추상 → 일상어 → 반사실 3 단계 직관으로 풀어낸다.

Experimentation
Modeling
저자

Kwangmin Kim

공개

2026년 05월 08일

1 Logistic 으로부터 Risk Score

정의: Logistic Risk Score

\[\hat r = \frac{1}{1 + \exp(-\hat\beta^T X)}\]

  • \(\hat\beta\) 는 적합된 logistic 계수.
  • \(X\) 는 개인의 위험 인자.

각 개인의 \(\hat r\) 가 그 개인의 위험 예측.

1.1 Framingham Risk Score 의 사례

사례: Framingham 10 년 CV 위험

위험 인자: 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

정의: 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 효과를 곱.

직관 3 단계: Cox Score 의 의미
  • 추상 정의: \(\exp(\text{Score})\) = HR vs reference (baseline). 시점 \(t\) 의 생존 확률.
  • 일상어 비유: 자동차의 마모 속도 ratio — 다른 자동차 baseline 대비.
  • 반사실 시나리오: \(\hat S(t \mid X)\) 가 환자 의사 결정 도구 — 5 년·10 년 생존 예측.

3 단순화 — Integer Score

정의: Integer Score System

복잡한 logistic 계수 → 임상에서 즉시 산출 가능한 정수 점수.

Framingham 의 예: - Age 50 = 5 점. - Smoker = 3 점. - SBP 140 = 2 점. - …

Total 의 분류: - < 5: low. - 5~10: moderate. - > 10: high.

직관 3 단계: Integer 의 활용
  • 추상 정의: 계산기 없이 임상의가 침대 옆에서 산출 가능. 정밀도 trade-off.
  • 일상어 비유: 환율 변환의 단순화 — 정확보다 빠른 산출 우선.
  • 반사실 시나리오: 정밀 도구 (전자 계산기) 가 있다면 logistic 직접 산출. Bedside 활용 위해 integer 단순화.

3.1 Integer 변환 절차

정의: Sullivan 의 5 단계 (2004)
  1. Categorical 변환: 연속 변수를 카테고리로.
  2. Reference 결정: 가장 흔한 카테고리.
  3. β 산출: 각 카테고리의 logistic 계수.
  4. Scaling: 가장 작은 |β| 로 나눠 정수화.
  5. Total score → 위험 변환: 적합된 logistic 으로 위험 산출.

3.2 Integer Score 의 한계

가정 위반: 정밀도 손실

연속 변수의 카테고리화 → 정보 손실. AUC 약간 ↓ (보통 0.01~0.03).

3 단계 직관:

  • 추상 정의: Categorical 변환이 정보 폐기. 임상 활용성과 정밀도의 trade-off.
  • 일상어 비유: 시험 점수의 등급 변환 — 등급 5 단계로는 학생 차이 가림.
  • 반사실 시나리오: Bedside 도구로는 integer 가 표준. 전자 계산 도구 (앱) 가 있으면 logistic 직접.

4 Multiple Regression Score

정의: Continuous Outcome 의 Risk Score

OLS 로부터: \[\hat Y = \hat\alpha + \hat\beta^T X\]

각 개인의 예측값.

직관: Multiple Regression Score 의 활용
  • 추상 정의: Continuous outcome (혈압, BMI, 점수) 의 예측. Logistic 의 continuous 판.
  • 일상어 비유: 학생의 미래 시험 점수 예측.
  • 반사실 시나리오: Continuous 결과는 logistic 부적합. Linear regression score 표준.

5 단계별 위험 인자 추가

정의: Sequential Score Building

Step 1: Baseline 변수 (age, sex) 만. Step 2: Strong predictor 추가 (smoking, SBP). Step 3: 약한 predictor 추가 (diet, exercise).

각 단계의 AUC 변화 확인.

직관 3 단계: Incremental Predictors
  • 추상 정의: 각 변수 추가의 △AUC 가 추가 가치 정량.
  • 일상어 비유: 검사를 추가하면 진단 정확도 ↑ — 추가 비용 대비 가치 평가.
  • 반사실 시나리오: △AUC 작으면 변수 추가 정당화 어려움. NRI/IDI 가 더 정밀 평가.

6 A/B 테스트의 Risk Score

사례: 사용자 churn 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 의 다양성

사례 1: CHA₂DS₂-VASc (심방세동 stroke 위험)
위험 인자 점수
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.
사례 2: Charlson Comorbidity Index

만성 질환 부담의 합산 점수. 1 년·10 년 사망률 예측.

질환 가중치
심근경색·CHF·말초혈관 1
당뇨 (단순) 1
AIDS·전이 종양 6
중증 간 질환 3

3 단계 직관:

  • 추상 정의: 다중 질환의 결합 효과 — 단일 질환 OR 의 합산.
  • 일상어 비유: 자동차 노후화 점수 — 부품별 합산.
  • 반사실 시나리오: 단일 질환 보고만 보면 다중 질환의 결합 위험 가림. Charlson 이 종합 평가.
사례 3: EuroSCORE II (심장 수술 사망률)

수술 전 환자 변수 → 수술 후 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 변환

정의: Integer Score Building 의 5 단계 (Sullivan et al., 2004)

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})))\]

직관 3 단계: Sullivan 의 절차
  • 추상 정의: 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 의 함정

Q1: 모든 변수 입력이 더 좋은가?

A: 아니다. Over-fit 위험.

3 단계 직관:

  • 추상 정의: 변수 ↑ → train AUC ↑ but test AUC ↓ 가능. Bias-variance trade-off.
  • 일상어 비유: 시험 답안에 자세한 정보 ↑ → 모범 답안에 적합 ↑ but 새 시험엔 부정확.
  • 반사실 시나리오: Cross-validation 으로 변수 수 결정. 또는 정규화 (Lasso) 로 자동 선택.
Q2: 정수 score 가 logistic 보다 정확한가?

A: 거의 항상 정수 score 가 약간 부정확 (정보 손실).

3 단계 직관:

  • 추상 정의: Categorical 변환 + 정수 가중 = 정보 폐기. AUC 약간 ↓.
  • 일상어 비유: 시험 점수의 등급 변환 — 등급 5 단계는 학생 차이 가림.
  • 반사실 시나리오: 임상 활용성 ↑ for 정수, 정확도 ↑ for logistic. Trade-off.
Q3: 같은 변수 추가가 항상 △AUC ↑ 인가?

A: 아니다. 추가 변수가 기존과 강한 상관 (multicollinearity) 시 △AUC ≈ 0.

3 단계 직관:

  • 추상 정의: 새 변수의 추가 정보 = 기존 변수와 독립인 부분만.
  • 일상어 비유: 키와 몸무게 — 강한 상관 → 둘 다 추가해도 정보 ≈ 1 개.
  • 반사실 시나리오: 변수 선택 시 correlation 점검 + VIF 평가. 또는 PCA 차원 축소.

11 A/B 테스트의 Risk Score 활용 사례

사례 1: Churn 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 가 표적.
사례 2: Conversion Risk Score (HTE)

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 가 정밀 적용.
사례 3: LTV Score (Customer Lifetime Value)
# 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 관련 주제

Subscribe

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