✨ 시작 질문
“모델이 틀릴 수도 있는데, 그래도 인과추정을 믿을 수 있을까?”
관측 데이터를 기반으로 인과효과(ATE)를 추정할 때, 모델의 추정이 틀리면 결과는 엉뚱해질 수 있다.
그래서 Doubly Robust Estimator라는 개념이 등장했다.
그중에서도 가장 강력한 무기가 바로 TMLE, Targeted Maximum Likelihood Estimation이다.
🧠 TMLE란 무엇인가?
TMLE는 통계 모델과 머신러닝 모델을 결합한 인과추정 기법이다.
한 문장으로 요약하면:
“결과모형(Outcome Model)과 처치모형(Treatment Model) 중
어느 하나만 맞아도 ATE 추정이 일관되게 가능하도록 만든 방법이다.”
즉, 예측력이 뛰어난 머신러닝 모델을 사용하면서도 인과추론의 수학적 정당성까지 확보하는 방법이다.
🔍 기본 개념: 두 모델을 함께 쓰는 이유
TMLE는 두 가지 예측 모델을 사용한다.
모형 | 설명 | 예시 |
Q(A,X) | 결과 모형 (Outcome model) : 처치 A와 공변량 X를 기반으로 결과 Y를 예측하는 모형 |
“나이, 혈압, 체중 등을 고려했을 때, 환자가 약을 복용하면 심근경색 발생 확률은 얼마일까?” |
g(A | X) | 처치 모형 (Treatment Model) : 공변량 X를 기반으로 환자가 처치 A를 받을 확률을 예측하는 모형 |
“이 환자가 약을 복용할 확률은 얼마일까?” (의사의 판단, 병력, 생활습관 등 포함) |
이 둘을 함께 사용하여, bias를 줄이고 robustness를 높이는 효과를 얻는다.
그래서 TMLE는 doubly robust estimator의 대표적인 예이다.
Q 또는 g 중 하나만 정확하면 ATE는 일관되게 추정 가능하다는 것이 doubly robust의 핵심이다.
그러나 두 모델 모두 잘못되면 추정은 크게 왜곡된다.
→ 특히 g 모델이 매우 낮은 확률을 출력하거나 Q가 특정 변수에 과적합될 경우,
targeting step이 실패하거나 오히려 bias를 증가시킬 수 있다.
📌 따라서 두 모델 모두 가능한 한 잘 예측하도록 구성해야 하며,
cross-fitting과 ensemble 학습이 권장된다.
🎯 Targeting Step이란?
TMLE의 이름이 ‘Targeted Maximum Likelihood Estimation’인 이유는 바로 이 단계 때문이다.
단순히 예측 모형을 만드는 것으로 끝나는 것이 아니라,
예측을 인과추정 목적에 맞게 조정(targeting) 하는 과정이 핵심이다.
💡 왜 Targeting이 필요한가?
처음 만든 Outcome model Q(A, X)는 결과를 예측하는 데 초점을 둔 모형이다.
하지만 예측이 잘 된다고 해서 인과효과(ATE)를 잘 추정하는 건 아니다.
- 예측은 outcome Y를 잘 맞추는 것이고
- 인과추정은 “A=1일 때 Y" - "A=0일 때 Y”의 평균차이를 구하는 것이다
👉 그래서 Q 모델을 g(A|X) 정보(즉, 처치 확률)에 따라 다시 조정하여
‘예측은 유지하면서도 인과추정이 정확해지도록’ 만든다.
이게 바로 targeting이다.
plt.hist(Q_preds, label='Initial Q(A,X)', alpha=0.6)
plt.hist(Q_star_preds, label='Targeted Q*(A,X)', alpha=0.6)
plt.title("Targeting Adjustment: Q vs Q*")
plt.legend()
plt.show()
💬 정리하면
항목 | 의미 |
Targeting Step | Outcome model을 인과추정에 맞게 조정 |
사용 이유 | 예측과 인과추정을 동시에 만족 |
수단 | clever covariate를 활용한 Q의 보정 |
결과 | Doubly Robust ATE 추정 가능 |
이 Targeting Step은 TMLE의 수학적 안정성, 신뢰성, 실무 적용력을 동시에 만들어 주는 핵심이다.
즉, 단순한 예측 모델이 아니라 인과추정에 특화된 모델로 진화시키는 단계라고 할 수 있다.
📈 시각적으로 이해하면?
- Q(A, X): 관측치 기반으로 추정된 예측값
- Q*(A, X): 처치 확률 정보를 반영하여 보정된 예측값
👉 아래와 같은 분포 변화로 시각화 가능하다:
위 그래프는 TMLE(Targeted Maximum Likelihood Estimation)에서
사용하는 두 가지 예측 분포를 비교한 것이다.
- 파란색은 기존 결과 예측모델 Q(A, X)의 예측 분포이다.
- 초록색은 targeting 과정을 거쳐 수정된 예측값 Q*의 분포이다.
📌 Targeting 이후 예측 분포가 변화하는 양상을 통해,
TMLE가 단순 예측이 아닌 인과추정에 적합하도록 조정되었음을 보여준다.
특히 이 과정은 “double robustness” 특성을 만들기 위한 핵심이다.
🔍 어떻게 수행되는가? (수학 개념 요약)
- 먼저 결과 예측값 Q(A, X)를 만든다.
- 처치 확률 g(A|X)를 바탕으로 clever covariate H(A, X)를 정의한다.
- 보통 H는 A/g(A|X) - (1-A)/(1-g(A|X)) 형태
- Q(A, X)를 로지스틱 회귀 등의 형태로 보정하는데,
- 이때 g(A|X)를 기반으로 한 clever covariate를 사용해 Q를 미세 조정한다.
- 결과적으로 나온 Q*는 bias가 줄어든 targeted 예측값이 된다.
📌 이 과정을 통해 outcome 모델이 treatment model의 정보까지 반영하게 되며,
Q 또는 g 중 하나가 틀려도 ATE 추정이 가능한 doubly robust 특성이 성립한다.
🔍 어떻게 보정(Tilting)되는가?
TMLE에서는 처음 만든 결과 예측값(Q 모델)을,
환자가 처치를 받을 확률(g 모델)을 참고해 정확한 방향으로 미세 조정한다.
예측 자체는 유지하면서, 인과추정이 더 공정하고 정확하게 이루어지도록 방향을 잡아주는 과정이다.
✅ 왜 조정하는가?
바로 관측된 데이터가 편향되어 있기 때문이다.
예를 들어 보자.
- 어떤 환자는 건강하지 않은 상태에서도 약을 우연히 복용하지 않았다.
- 보통이라면 이 환자는 약을 복용했을 확률이 높다 → 즉, g(A=0 | X)는 매우 낮다.
- 그런데도 실제로 약을 안 먹고 좋은 결과를 보였다 → 이는 Q(X, A=0)의 예외적 관측치다.
👉 이 환자의 결과는 ‘비정상적’으로 보일 수 있지만,
이런 비정상적인 결과가 오히려 편향된 데이터 분포에서 벗어난 중요한 정보를 담고 있다고 본다.
👉 이처럼 예상과 다른 행동을 보인 관측치는 오히려 중요한 인과 정보를 담고 있을 수 있다.
→ 그래서 TMLE는 ‘clever covariate’라는 가중 벡터를 사용해,
이런 관측치를 기준으로 Q 모델을 조정한다.
📌 clever covariate는 다음처럼 정의된다:
이 값은 예상보다 드물게 특정 처치를 받은 관측치에 더 큰 가중치를 부여한다.
→ 이들의 결과는 편향된 데이터 속에서도 특별한 신호(signal)을 제공한다고 보기 때문이다.
→ 반면, 예상된 대로 행동한 관측치(예: 약을 먹을 확률이 높고 실제로도 먹은 경우)는
이미 데이터에 많이 존재하므로, 조정 영향은 적다.
📌 이런 방식으로 TMLE는:
- Q(A, X)의 예측력은 유지하면서,
- g(A|X) 기반의 조정 방향인 clever covariate를 따라
- 편향된 세계를 공정하게 보정한 Q*(A, X)로 업데이트한다.
🎯 요약하면, targeting step은
“예측은 잘 되지만 인과적으로 편향된 세상”을
→ “예측도 잘 되고, 인과적으로 공정한 세상”으로 정제하는 단계다.
그리고 그 방향을 알려주는 나침반이 바로 clever covariate이다. 🧭
🧠 하나의 의문점
❓ “현실에서는 대부분 사람들이 자신에게 맞는 치료를 받는다.
그런데 TMLE는 ‘예상 밖의 행동’에 더 큰 가중치를 주는 식인데,
이러면 오히려 현실을 왜곡하는 거 아닌가?”
🤔 일단 현실을 정리해보자
- 현실 데이터에서는 치료는 관측자(의사, 환자)의 판단에 따라 정해진다.
- 그래서 어떤 사람은 질병 위험이 높은데도 치료를 안 받고,
어떤 사람은 낮은 위험인데도 과잉 치료를 받는다. - 이런 ‘불일치’ 사례가 적다고 생각할 수 있지만,
실제로는 사회경제적 이유, 의료 접근성, 환자 성향 등으로 인해 꽤 많이 존재한다.
💡 TMLE의 관점: “현실”을 모사하는 게 아니라, “인과”를 추정하는 것
TMLE는 현실에서 어떤 처치를 얼마나 자주 받았는지를 그대로 따라가려는 것이 아니라,
모든 사람이 특정한 처치를 받았다면 결과가 어땠을까?를 추정하는 것이 목표다.
이게 바로 ATE (Average Treatment Effect)다.
📌 그래서 현실에서 자주 관측되는 조합만 보고 추정하면 confounding bias가 생긴다.
→ 예: 건강한 사람이 약을 더 잘 챙겨먹는다면,
→ 약 효과가 과장되게 나올 수 있다.
🔍 왜 ‘예상 밖 처치’를 받은 사람에게 더 큰 역할을 주는가?
- 예: 위험도가 높은데도 치료를 안 받은 사람,
- 예: 위험도는 낮지만 치료를 받은 사람
이런 사람들은 마치 무작위 실험에서 배정된 것처럼,
기존 경향성(PS, g값)과 반대 방향의 처치를 받았기 때문에
📌 이들의 결과는 confounding이 작게 작용했을 가능성이 높다.
👉 그래서 TMLE는 이 사람들의 데이터를 더 중요한 신호로 본다.
(단순히 ‘현실 반영’이 아니라, ‘인과적 해석’이 더 명확하다는 관점)
✅ 결론
- 현실에서는 예상대로의 치료가 많지만, 그건 confounding이 작용했기 때문일 수 있다.
- TMLE는 그 현실을 그대로 따라가는 게 아니라,
- 인과적 시뮬레이션을 위한 구조를 만든다.
- 그래서 현실에서 잘 안 나오는 상황이지만, 인과추정에는 더 신뢰할 수 있는 경우에 가중치를 주는 것이다.
💬 한 줄 요약:
TMLE는 현실의 빈도수가 아니라, 인과적 구조에서 신뢰도 높은 사례에 가중치를 주는 방식이다.
현실 반영이 아닌 인과 추론이 목적이기 때문에, 이런 방식이 더 정밀한 추정으로 이어진다.
✍ TMLE 알고리즘 요약
- Q 모델 (결과모형) 학습:
Y ~ A + X 로 로지스틱 회귀 또는 머신러닝 학습 - g 모델 (처치모형) 학습:
A ~ X 로 로지스틱 회귀 또는 ML 학습 - Initial ATE 추정
- Targeting step:
Q 모델을 g를 기준으로 업데이트하여 bias를 보정 - 최종 ATE 추정:
Targeted Q*에서 전체 ATE 추출
📌 이 targeting step이 바로 TMLE의 핵심이다!
Targeting은 Q모델을 g모델 기반 score function을 사용해 조정하는 과정이다.
로지스틱 손실 함수(log-likelihood)를 최소화하면서 Q(A,X)의 예측값을 g에 따라 미세 조정한다.
수학적으로는 다음 식을 따른다:
Q* = Q + ε * h(A, X)
여기서 h(A,X)는 clever covariate, ε는 targeting parameter이다.
→ 이 ε를 추정하는 것이 TMLE targeting step의 핵심이며, 이 과정을 통해 bias를 줄이고 효율성을 높인다.
🧠 TMLE의 장점
🎯 Doubly robust | Q 또는 g 중 하나만 맞아도 ATE는 일관성 있음 |
🤖 머신러닝 친화적 | XGBoost, Random Forest 등과 쉽게 결합 |
📈 세밀한 보정 | targeting step에서 bias correction 가능 |
🛡 안정적 | small sample에서도 편향 작음 |
📊 TMLE의 Output 해석
TMLE(Targeted Maximum Likelihood Estimation)는 단순히 ATE를 추정하는 데 그치지 않는다.
실제 분석에서는 다음과 같은 다양한 결과를 함께 얻을 수 있으며,
이들은 인과추론의 신뢰도와 세부 해석을 높이는 데 매우 유용하다.
✅ 주요 출력 요소
- ATE (Average Treatment Effect): 전체 모집단에 대한 평균적인 처치 효과
- Influence Function (IF): 각 관측치가 ATE 추정에 미친 영향도를 나타내는 함수 → 분산 추정에 활용됨
- Confidence Interval (CI): IF 기반으로 계산된 신뢰구간 (기본적으로 95% CI)
- p-value: 귀무가설(H0: ATE=0) 하에서의 유의성 검정
또한 econml, zEpid 등 라이브러리에서는 조건부 효과(CATE)도 함께 추정 가능하다.
이를 통해 특정 연령대, 성별, 만성질환 보유군 등 하위집단에서 효과가 달라지는지를 탐색할 수 있다.
🧪 임상 예시: 항혈압제와 심혈관질환 위험
다음은 3년간 고혈압 환자 데이터를 이용한 연구이다.
변수 | 설명 |
A | 항혈압제 복용 여부 (0/1) |
Y | 3년 내 심혈관질환 발생 여부 |
X | 나이, BMI, 기저 혈압, 당뇨 여부 등 |
이제 다음을 알고 싶다고 하자:
“모든 환자가 항혈압제를 복용했다면, 그렇지 않았을 때보다 심혈관 사건 발생률은 얼마나 낮아졌을까?”
이를 추정하는 방법으로 TMLE를 사용할 수 있다.
🧪 Python 코드 예시 (econml 사용)
from econml.drlearner import DRLearner
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
import pandas as pd
# 데이터 구성
df = pd.read_csv('hypertension_data.csv')
X = df[['age', 'bmi', 'baseline_bp', 'diabetes']]
A = df['treatment']
Y = df['cvd_event']
# DRLearner ≈ TMLE 성질 반영
model = DRLearner(
model_propensity=LogisticRegression(),
model_regression=RandomForestRegressor()
)
model.fit(Y, A, X)
ate = model.ate(X)
print(f"Estimated ATE: {ate.mean():.3f}")
⚠️ 실무 주의사항
항목 | 설명 |
Confounder 누락 | TMLE도 unmeasured confounding에는 취약하다 |
ML 과적합 | cross-fitting 필수! |
Sample size | 소규모 데이터일 경우 Bootstrap으로 CI 추정 필요 |
Mediator 포함 금지 | Mediator를 X에 넣으면 bias 유발 |
Q와 g 모델이 같은 데이터를 기반으로 학습되면,
모델 간 상호의존성으로 인해 targeting step에서 편향이 발생할 수 있다.
→ 이를 방지하기 위해 데이터를 fold로 나누고, Q와 g를 각기 다른 fold에서 학습하는 cross-fitting이 필요하다.
특히 작은 표본에서는 반드시 적용할 것을 권장한다.
✅ 언제 TMLE를 써야 할까?
- 머신러닝 기반 예측이 가능한 환경
- Confounder가 관측되었다고 믿을 수 있는 경우
- ATE를 비교적 안정적으로 추정하고 싶은 경우
- PS, G-computation, MSM으로 추정했는데 결과가 들쑥날쑥한 경우
📌 실전에서 TMLE이 효과적인 예:
- 당뇨병 환자의 약물 복용 여부가 매년 바뀌는 경우
- HIV 치료에서 regimen 선택이 과거 상태에 따라 결정되는 경우
- 예방접종 여부에 따라 추적 질병 발생률 추정
→ 복잡한 공변량 구조 속에서도 ATE를 안정적으로 추정할 수 있다.
🧰 TMLE 구현 도구 비교
TMLE는 이론이 복잡한 만큼, 구현을 도와주는 라이브러리를 활용하는 것이 현실적이다.
다음은 대표적인 구현 도구들과 그 특징이다:
라이브러리 | 언어 | 특징 | 추천 용도 |
econml | Python | Microsoft에서 개발. 다양한 ML과의 통합 지원. DRLearner로 TMLE와 유사한 추정 가능 |
실제 적용 및 ML 통합 분석 |
zEpid | Python | TMLE와 IPTW 등 전통적인 인과추론 패키지. 학술 친화적 |
교육 목적, 논문 구현 |
tmle3 | R | 가장 정통적 구현. SuperLearner와 잘 연동됨 |
이론 충실한 분석, R 사용자 |
ctmle | R | C-TMLE(조건부 타겟팅) 가능 | 변수가 많은 고차원 문제 |
🧩 다른 인과추정법과 비교
기법 | PS | G-computation | MSM | TMLE |
머신러닝 친화도 | 낮음 | 높음 | 중간 | ✅ 높음 |
Doubly robust | ❌ | ❌ | ❌ | ✅ |
Targeting 가능 | ❌ | ❌ | ❌ | ✅ |
일반화성 | 중간 | 높음 | 낮음 | 중간~높음 |
🧪 TMLE vs G-Computation: 실전 비교
같은 데이터를 G-Computation과 TMLE로 분석했을 때, 추정값이나 신뢰구간이 어떻게 달라질까?
✅ 예시 시나리오
- 데이터: 3년간의 관찰 데이터를 바탕으로 항혈압제 복용(A)과 심혈관질환 발생(Y) 간 인과효과 추정
- 공변량: 나이, BMI, 기저 혈압, 당뇨병 유무 (X)
방법 | 추정된 ATE | 95% CI | 해석 |
G-Computation | -0.078 | (-0.123, -0.033) | 예측모델이 잘 맞는다는 가정 하에 효과 있음 |
TMLE | -0.065 | (-0.112, -0.018) | Doubly robust 추정치, 편향 보정 포함 |
📌 G-Computation은 모델이 misspecified 되면 크게 편향될 수 있는 반면,
TMLE는 targeting step을 통해 그 편향을 줄인다.
또한 TMLE의 추정치는 통계적으로 더 안정적인 경우가 많으며, 작은 샘플에서도 유리하다.
🧭 TMLE 확장 전략: 더 강력한 추정을 위한 조합
TMLE는 단독으로도 강력하지만,
다음과 같은 전략들과 조합하면 분석의 깊이와 신뢰도를 더욱 높일 수 있다.
✅ TMLE + Ensemble (Super Learner)
- 다양한 모델(XGBoost, GLM, RF 등)을 조합하여 가장 좋은 예측력을 가진 Q/g 모델을 만들 수 있음
- R에서는 SuperLearner, Python에서는 econml에서 유사한 구조 지원
✅ TMLE + Causal Forest
- TMLE로 전체 ATE 추정 후, Causal Forest로 CATE 패턴 확인
- 두 방법은 서로 보완적이며, 해석력을 높이는 데 효과적임
✅ TMLE + Mediation 분석
- TMLE 추정값을 통해 total effect를 구하고, mediation analysis를 통해 direct/indirect effect 분해 가능
- medtmle(R), mediation + TMLE 방식으로 구현
📌 이러한 전략들은 단일 추정 결과에 의존하지 않고, 인과 구조의 다양한 측면을 탐색할 수 있도록 돕는다.
📌 최종 요약
TMLE은 ATE 추정 외에도 다음과 같은 출력을 제공할 수 있다:
- ATE와 함께 신뢰구간 (CI)
- 각 개체별 Conditional ATE (CATE) 추정 (단, 확장모델 필요)
- Influence Function 기반의 Sensitivity 분석
→ 따라서 TMLE은 단일 추정값뿐 아니라, 인과추정의 전체적인 신뢰성을 평가할 수 있는 도구이기도 하다.
항목 | 설명 |
TMLE 정의 | Q와 g 모델을 동시에 사용해 bias를 줄이는 인과추론 방법 |
핵심 강점 | Doubly robust, 머신러닝 활용 가능 |
적용 조건 | 관측된 confounder가 충분할 때 |
예시 | 고혈압 치료, 당뇨병 관리 등 반복 관찰 가능한 환자 |
추천 도구 | econml, zEpid, tmle3, SuperLearner 등 |
주의사항 | Mediator 제외, cross-fitting 적용, ML 해석 시 설명력 확보 필요 |
'실전 인과추론' 카테고리의 다른 글
《실전 인과추론 시리즈 ⑥ - Marginal Structural Models(MSM) 해부하기》 (0) | 2025.05.14 |
---|---|
《실전 인과추론 시리즈 ⑤ - G-Computation 해부하기》 (1) | 2025.05.13 |
《실전 인과추론 시리즈 ④ - RDD(단절설계) 해부하기》 (2) | 2025.05.12 |
《실전 인과추론 시리즈 ③ - Difference-in-Differences, DiD 해부하기》 (1) | 2025.05.11 |
《실전 인과추론 시리즈 ② - Instrumental Variable(도구변수) 해부하기》 (0) | 2025.05.08 |