| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- netflix thumbnail
- ERD
- 인과추론
- 딥러닝
- Time Series
- Transformer
- 불규칙적 샘플링
- causal ml
- nccl 업데이트
- gru-d
- GaN
- causal machine learning
- 의료정보
- NTMs
- machine learning
- 리뷰
- first pg on this rank that detected no heartbeat of its watchdog.
- nccl 업그레이드
- causal reasoning
- causal transformer
- pytorch
- 분산 학습
- irregularly sampled time series
- multi gpu
- 의료
- causal inference
- causal forest
- doubleml
- 인과추론 의료
- 토픽모델링
- Today
- Total
데알못정을
[Review] Estimation and Inference of Heterogeneous Treatment Effects using Random Forests 본문
[Review] Estimation and Inference of Heterogeneous Treatment Effects using Random Forests
쩡을이 2025. 5. 20. 12:39Introduction
많은 응용 분야에서, 우리는 treatment의 인과 효과에 대한 추론을 그려내는데 데이터를 사용하고 싶다. 예를 들어 건강 결과들에 약물이 미치는 영향에 대한 의학 연구나 광고나 마케팅이 고객 구매에 미치는 영향, 또 정부 프로그램, 공공 정책의 효과성 평가 같은 것들이 있다. 기술 회사에서 자주 사용되는 A/B test 또한 예시 중 하나이다. 역사적으로, 데이터셋이 너무 작아서 샘플을 몇 개의 하위 그룹으로 나누는 것 이상으로 치료 효과의 이질성을 탐색하기에는 부족했다. 여기서 말하는 치료 효과의 이질성 (heterogenity of treatment effects)란 같은 treatment 라도, 사람에 따라 효과가 다르게 나타나는 성질로, 단순히 남/녀, 젊은/나이 든 사람 사이의 이질성 뿐만 아니라, 더 복잡한 그룹이 정의 될 수 있다. 그러나, 기존 데이터셋은 단순히 남/녀, 젊은/나이 든 사람 정도로만 분석했지, 훨씬 더 미세한 이질성을 분석할 수는 없었다.
이질적 처리 효과(heterogeneous treatment effects, 이하 HTE)를 탐색하는 데 있어 한 가지 장애물은, 연구자들이 반복적으로 효과가 큰 하위 그룹을 찾은 뒤 극단적인 결과가 나온 그룹만 선택적으로 보고함으로써, 실제로는 우연히 발생한 이질성을 마치 의미 있는 발견처럼 잘못 부각시킬 위험이 있다는 점이다.
예시: 새로운 항암제가 실제로 누구에게 더 효과적인가?
$\rightarrow$ 연구자는 나이, 성별, 체중, 혈액형 등 다양한 환자 특성별 하위 그룹을 분석하는데, 여러 그룹을 분석하다 보니, 혈액형이 B형인 50세 이상 여성에게서 유독 큰 효과가 관찰되었다. 이떄 연구자는 이 결과만 논문에 강조했다. 이 경우 해당 그룹은 우연히 효과가 커 보였을 수도 있다. 다수의 그룹을 동시에 분석하면, 그 중 일부는 단순 통계적 변동으로 인해 크게 보이는 경우가 생기기 때문이다. 하지만 실제로는 이 그룹이 특별히 반응한 것이 아닐 수 있다.
이런 문제는 머신러닝에서 과적합 문제와 비슷한 결이다.
이러한 이유로 어떤 하위 그룹이 분석될 것인지에 대한 임상 시행에 대한 프로토콜이 미리 구체화 되어야 한다. 하지만, 그러한 절차적 제약들은 예상치 못한 강력한 치료 효과 이질성을 발견하는 것을 어렵게 만든다. 예를 들어, 연구자가 "60세 이상 vs 미만" 으로 나눠 분석하겠다고 사전 등록했는데, 실험 결과를 보니 "비타민 D 수치가 낮은 환자"에서만 효과가 확연하게 나타났다. 하지만 이 그룹은 계획에 없었기 때문에 공식 분석에 포함될 수 없다. (새로운 중요한 발견이 묻히게 됨)
$\rightarrow$ 따라서 프로토콜 없이 모든 데이터에서 하위 그룹 효과를 탐색하되, Causal forest는 어떤 방법론을 통해 우연의 효과인지 정량화하고, 통계적으로 보장되게 끔 함
"In this article, we seek to address this challenge by developing a powerful, nonparametric method for heterogeneous treatment effect estimation that yields valid asymptotic confidence intervals for the true underlying treatment effect."
$\rightarrow$ 진짜 처치 효과에 대한 유효한 점근적 신뢰 구간을 제공하는 이질적 치료 효과를 위한 비모수 방법론을 개발함으로써 이러한 문제에 접근하고자 한다.
*여기서 점근적 (asymptotic)이 잘 이해가 안가서: asymptotic은 표본 크기 n이 무한히 커질 때의 성질을 말하는데, 데이터가 많아지면 많아질수록 어떤 성질이 안정적으로 성립한다는 의미 (약간 중심극한정리) 그래서 causal forest는 표본의 커기가 작을 때는 완벽하다고 보장할 수 없어도, 표본 크기가 커지면 커질수록 효과 추정이 신뢰할 수 있게 된다는 것을 말하는 것
비모수적 접근 방법이 causal forest가 처음은 아니다. nearest-neighbor matching, kernel methods, series estimation이라는 방법들이 있긴한데, 이들은 적은 수의 covariates에서 잘 작동하지만, covariate의 갯수가 많아질수록 그렇지 않다.
random forest는 예측과 분류에서 매우 성공적이지만, 그것을 인과추론에 직접적으로 적용하기엔 중요한 장애물들이 있다. 좋은 추정량(estimator)은 표본 수가 많아질 때 수렴하는(consistent) 성질을 가지며, 그 분포가 점근적으로 어떻게 되는지 명확하게 이해되어야 한다. 그래야 연구자가 가설 검정도 하고, 신뢰 구간도 계산할 수 있다.
예를 들어, 환자에게 약을 쓸지 말지 결정할 때 예상 효과가 비용(약값 + 부작용 관리 비용)보다 작은지 아닌지 가설 검정을 할 수 있어야 한다. 이때 신뢰구간이 필요하고, 그건 추정량의 분포(asymptotic distribution)을 알아야 가능하다. 특히 인과 추론에서는 추정량이 점근적으로 정규분포를 따른다는 결과 (asymptotic normality)가 중요하다.
하지만 기존 random forest는 그 추정값의 점근적 성질이 잘 정의되어 있지 않다. 심지어 일반 회귀나 분류 문제조차도 아직 asymptotics가 완전히 해결되지 않았다.
Causal forest에서는 다루기 쉬운 점근 이론과 통계 추론을 가능하게하는 treatment effect estimation을 위한 forest 기반 방법을 개발함으로써 이러한 한계들에 접근한다. tree의 잎에서 치료 효과를 추정하는 causal tree들의 구성인 forest여서 causal forest라 명명한다.
2. Causal Forests
2.1. Treatment Estimation with Unconfoundedness
Feature vector가 $X_i \in [0, 1]^d$이고, 반응 변수 $Y_i \in \mathbb{R}$, treatment indicator $W_i \in \left\{ 0, 1 \right\}$로 구성된 $n$개의 i.i.d training sample을 가지고 있다고 가정한다. ($i = 1, ..., n$) 더불어, Rubin, Neyman의 potential outcome framework에 따라, 실제로는 존재하지 않지만, potential outcome ($Y_i^{(1)}$, $ Y_i^{(0)} $)이 존재한다고 가정한다. 이럴 경우, potential outcome framework에서 정의된 treatment effect 역시 그대로 따른다.
Equation 1: $$\tau(x) = \mathbb{E}[Y_i^{(1)}-Y_i^{(0)}|X_i = x].$$
Causal forest의 목표는 $\tau(x)$를 추정하는 것이다. 주요 문제는 실제 데이터에서는 counterfactual outcome을 모른다는 것이고, 머신러닝을 이용해서 단순하게, 직접적으로 계산할 수 없다. 그래서 추정을 위해선 어떤 가정이 필요하다. 이 문제를 해결하는 가장 널리 쓰이는 방법은 unconfoundedness (비혼합성) 가정을 도입하는 것이다. 즉, 공변량 $X_i$를 고려하면, 처치 여부 $W_i$가 potential outcome $Y_i^{(1)}$, $ Y_i^{(0)} $과 독립적이라는 의미이다. (어떤 사람이 치료를 받을 확률은, 그 사람의 잠재적인 치료 결과와는 관계 없이, 공변량 X_i(나이, 성별, 병력 등) 에 의해서만 결정된다는 가정)
조금 더 쉽게 정리하자면, 원래부터 상태가 안좋은 사람 (공변량 = 10)이 치료를 받았을 때 결과가 나빴고, 상태가 괜찮은 사람이 (공변량 = 1) 치료를 안받았을 때 결과가 좋았다면, 이 상태에서는 치료효과를 정확히 알 수 없다. 그래서 비혼합성 가정을 도입한다는 말은 공변량 $X_i$를 고려한다 (= 비슷한 상태인 환자들을 뽑는다) 이때 치료 여부가 결과에 영향을 주는가?를 보겠다는 것이다.
즉, 비슷한 상태의 사람 중에 약을 받은 사람 vs 안 받은 사람을 비교하면 그 차이는 약의 효과라고 봐도 된다는 것이다.
그래서 논문에서는 공변량 X를 고정한 상태에서는 치료 여부와 potential outcome이 독립이라는 가정을 세워서 위 상황을 만들고자 한 것이다. (마치 치료가 랜덤 배정된 것 처럼 보이게)
Equation 2: $$\{ Y_i^{(0)}, Y_i^{(1)} \} \perp\!\!\!\perp W_i \mid X_i$$
unconfoundedness (비혼합성) 가정이란 비슷한 사람들 사이에서는 치료가 무작위처럼 주어졌다고 간주할 수 있다는 뜻이다. 그래서 가까운 사람들끼리 비교하면, 마치 랜덤 실험처럼 치료 효과를 비교할 수 있다. 이 가정 아래에서는 다음 수식을 이용하면 치료 효과 $\tau(x)$를 추정할 수 있다.
Equation 3: $$\mathbb{E} \left[ Y_i \left( \frac{W_i}{e(x)} - \frac{1 - W_i}{1 - e(x)} \right) \Big| X_i = x \right] = \tau(x)$$ where, $$e(x) = \mathbb{E}[W_i \mid X_i = x]$$
여기서 $e(x)$는 성향 점수 (propensity score) = 치료를 받을 확률이다. 수식을 보면 일단 공변량 $X_i$를 고정했을 때 데이터 내에서 $Y_i$는 potential outcome $Y_i^{(1)}$, $ Y_i^{(0)} $ 둘 중에 하나일것이다. 먼저, $Y_i^{(1)}$일 때는 $ W_i = 1$이기 때문에 $ \frac{W_i}{e(x)} $랑 연산이 될 것이다. 다시 정리하면, $Y_i^{(1)} \cdot \frac{1}{e(x)} $. 그럼 값은 치료를 받은 결과에 $ \frac{1}{e(x)} $ 만큼 결과가 반영된다. 반대의 경우에는 $ \frac{1}{1 - e(x)} $ 만큼 결과가 반영될 것이다. 두 값은 $e(x)$에 따라 달라질 것인데, 치료를 받을 확률이 낮은 경우 곱해지는 값은 커진다. 이 의미는 희귀한 케이스의 결과는 가중치를 더 주겠다는 의미이다. 그래야 공정하게 효과를 비교할 수 있다. 이러한 방식은 propensity weighting (성향 가중법)이라고 불린다. (가중치를 통해 집단 전체를 대표하게 )
초창기 머신러닝 기반 인과추론 연구는 일단 $e(x)$를 예측하고, 그걸 위 수식에 대입해서 $\tau(x)$를 추정하는 방식이었다. 이를 위해 random forest, neural network 등 ML 기법을 활용해 $e(x)$를 먼저 예측하는 것이 핵심이었다. 그런데 causal forest에서는 그런 방식이 아니라, $e(x)$를 직접 추정하지 않고도, $\tau(x)$를 추정할 수 있도록 한다. 즉, propensity score를 몰라도 된다. 이것에 대한 이점은 $e(x)$의 추정이 정확하지 않을 경우 발생할 수 있는 편향을 줄일 수 있고, 고차원에서 더 유연하게 만들 수 있으며, 이중 추정 없이도 일관성을 확보할 수 있고, 정규성 증명이 가능하다고 한다. 자세한 내용은 논문의 내용을 더 보고 정리할 예정이다.
2.2. From Regression Trees to Causal Trees and Forests
이 섹션에서는 regression tree가 어떻게 causal tree로 확장되는지 설명한다.
decision tree는 데이터를 여러 조건으로 나눠서 그룹을 만드는 방식이다. 각각의 그룹은 leaf node라고 불리운다. 하나의 leaf 안에는 비슷한 샘플들만 모여 있게 된다. Tree는 일종의 K-NN 방법처럼 생각할 수 있지만, K-NN이 고정된 거리 측정 지표를 사용하는 것 대신, Tree는 문제에 맞게 split하는 조건을 스스로 학습한다는 점이다. 그래서 이걸 adaptive neighborhood라고 부른다. (나이에 따라 나누거나, 혈압에 따라 나누는 기준을 자동으로 학습)
CART regeression tree란 $(X_i, Y_i)$라는 data pair를 가지고 있을 때, tree는 feature 공간을 분할해서 leaf 마다 소수의 샘플이 있도록 만든다. 그러면 특정 입력 값 $x$가 주어졌을 때, $x$가 속한 leaf $L(x)$를 찾고, 그 안에 있는 샘플들의 $Y_i$ 값을 평균내어 예측한다.
Equation 4: $$\hat{\mu}(x) = \frac{1}{|\{i : X_i \in L(x)\}|} \sum_{\{i : X_i \in L(x)\}} Y_i$$
하나의 leaf 안에 있는 샘플들은 서로 비슷하기 때문에, 그 안에서는 $Y_i$값이 대체로 비슷한 분포에서 나왔다고 가정할 수 있다. 따라서 평균을 내는 것이 좋은 예측이 된다.
causal tree에서는 $x$가 속한 leaf $L$ 안에서 치료를 받은 사람들과 안 받은 사람들의 평균 결과 차이를 비교함으로써 치료 효과 $\tau(x)$를 추정한다.
Equation 5: $$\hat{\tau}(x) = \frac{1}{|\{i : W_i = 1, X_i \in L\}|} \sum_{\{i : W_i = 1, X_i \in L\}} Y_i - \frac{1}{|\{i : W_i = 0, X_i \in L\}|} \sum_{\{i : W_i = 0, X_i \in L\}} Y_i$$
이 식은 equation 1과 의미가 정확히 같다.
Tree 하나만으로는 편향이 생기거나 분산이 클 수 있으므로, 여러 개의 causal tree를 만들어서 그 결과를 평균내는 방식을 쓴다. $\rightarrow$ Causal Forest의 핵심 아이디어
Equation 6: $$\hat{\tau}(x) = \frac{1}{B} \sum_{b=1}^{B} \hat{\tau}_b(x)$$
$B$: 트리 개수 (forest 안의 나무 수)
$\hat{\tau}_b(x)$: 각 트리에서 추정한 치료 효과
2.3. Asymptotic Inference with Causal Forests
이 섹션에서는 이론성 정당성을 논한다. causal forest를 썼을 때, 정말로 $\tau(x)$에 수렴하는지, 샘플이 많아질수록 예측이 정확해질지에 대해 보장하기 위해 어떤 조건이 필요한지 설명한다.
Casual forest가 충분히 많은 데이터를 갖고 있을 때, 진짜 치료 효과 $\tau(x)$에 점점 더 정확히 수렴할 수 있다는 것을 수학적으로 증명하려면 몇 가지 조건이 필요하다.
1. Subsampling: 각각의 트리는 전체 데이터를 다 쓰는 게 아니라 일부 샘플 (subsample)만 사용해야한다.
- 그래야 편향이 줄고, 분산을 평균냄으로써 안정적 예측이 가능하다.
2. Honest splitting: split rule이 $Y_i$를 부적절하게 사용하면 안된다.
- 이것도 과적합과 관련된 문제. 나중에 honest splitting 언급 시 자세히 다룰 예정
3. Lipschitz continuity: 평균 함수들이 부드럽게 변화해야한다.
- 이 말은 $x $ 가 조금 변하면 $\mathbb{E}[Y_i^{(1)}|X_i = x]$, $\mathbb{E}[Y_i^{(0)}|X_i = x]$도 조금만 변해야 한다는 의미이다.
4. Overlab (positivity): 모든 x에 대해, 치료 받을 확률이 0도 아니고 1도 아니어야 한다.
- 만약 어떤 $ x $ 에서는 100% 치료만 받았다면, 그 $ x $ 에 대해 비치료 결과는 아예 관측되지 않아서 비교 불가능하기 때문이다.
이 모든 조건이 만족되면, Causal forest는 점점 진짜 치료 효과 $\tau(x) $에 가까운 값을 추정하게 되고, 나아가 신뢰구간 추정 등 통계적 추론(asymptotic inference)도 가능해진다.
이 논문에서는 추정한 치료 효과 $\tau(x)$는 충분히 많은 데이터를 쓸 경우, 정규분포에 가까워짐을 유도한다.
Equation 7: $$\frac{\hat{\tau}(x) - \tau(x)}{\sqrt{\text{Var}[\hat{\tau}(x)]}} \Rightarrow \mathcal{N}(0, 1)$$
만약 정규분포를 따른다는 것이 증명될 경우, 우리는 신뢰 구간을 계산할 수 있고, p-value(이 치료 효과가 유의미한가?를 검정) 또한 구할 수 있다.
정규 분포가 되려면 subsample size $s$는 전체 데이터 수 $n$의 $\beta$제곱 비율이어야 한다. $s \sim n^{\beta} \quad \text{for some } \beta < 1$ 그 이유는 정규분포를 따르려면 편향 ($\hat{\tau}(x) - \tau(x) $)은 충분히 작고, 분산($ \text{Var}[\hat{\tau}(x)] $)은 충분히 커야하는데, s가 너무 작으면 예측이 불안정하여 분산이 커지고, s가 너무 크면 트리들이 서로 비슷해져서 편향이 증가한다. 따라서 적당한 수준을 유지하기 위해서 전체 샘플 수의 베타 제곱 만큼을 sampling 한다.
분산을 계산할 때에는 Infinitesimal Jackknife (IJ) 방법을 활용한다. 이렇게 하는 이유는 random forest의 트리의 개수가 많아질 수록 부트스트랩은 계산 비용이 매우 크고, 분산이 과대추정되는 경향이 있기 때문이다. IJ 방법은 각 샘플 i가 최종 추정 값에 얼마나 기여했는지를 미분처럼 무한소 단위로 측정해서 그걸 가지고 분산을 추정한다. 너무 어려우니 컨셉만 이해하고 넘어감
Equation 8: $$\hat{V}_{\text{IJ}}(x) = \frac{n - 1}{n} \left( \frac{n}{n - s} \right)^2 \sum_{i=1}^{n} \text{Cov}_* \left[ \hat{\tau}^*_b(x), N^*_{ib} \right]^2$$
- $\hat{\tau}^*_b(x)$: $b$번째 트리에서의 추정값
- $N^*_{ib}\in \left\{ 0, 1\right\}$: i번째 샘플이 b번째 트리에 포함되었는지 여부
- $ \text{Cov}_* $: 트리 간의 공분산
이 방식으로 구한 분산 $ \hat{V}_{\text{IJ}}(x) $은 진짜 분산에 점점 가까워지며 일관성 있는 추정량이 된다. (section 3의 Definition 5에 증명)
2.4. Honest Trees and Forests
Causal Forest가 믿을 만한 예측과 신뢰구간을 제공하려면, honest한 방식으로 트리를 만들어야 한다. 여기서 honest란 한 데이터를 트리에 쓸 때 분할 기준을 정할 때 쓴다면, 그 데이터의 결과값 $Y_i$는 예측 계산에는 쓰지말자는 것이다. 반대로 예측에 썼다면, 그 데이터로 split을 만들지 말자는 것
같은 데이터를 split과 예측에 동시에 쓰면 트리가 결과 $Y_i$를 너무 많이 본 상태에서 트리를 만들게 된다. 그러면 과적합이 생기고 예측 값이 편향되고, 잘못된 신뢰구간을 도출할 수 있다.
핵심아이디어는 훈련데이터를 반으로 나누고 한쪽은 split 결정에만 사용하고, 다른 쪽은 리프 노트 안에서 예측 계산에만 사용하는 것이다. 대신 전체 forest에서는 모든 데이터가 결국 둘 다에 참여하므로 데이터를 낭비하지 않으면서도 honesty를 유지한다.

Causal forest의 또 다른 honest 트리 구성 방법은 Propensity Tree이다. 트리를 만들 때 결과 값 $Y_i$를 전혀 보지 말고, 치료를 받았는지 여부 $W_i$만 보고 트리를 나누는 것이 핵심 아이디어. 이를 통해 성향이 다른 집단끼리 나눠진 트리가 완성된다. 성향이 비슷한 사람들끼리 묶어버리면 공변량을 완전히 통제해버릴 수 있어서 마치 무작위 실험처럼 치료 효과를 비교할 수 있음

Procedure 1은 분산을 최대화 하는 split을 찾는 방식, Procedure 2는 split을 predicted treatment로 하고 비슷한 군집끼리 leaf node에 있다고 가정하고 치료효과 계산
(실제 실험에서는 세팅에 따라 선택하여 사용)
3. Asymptotic Theory for Random Forests
이 섹션에서는 Causal Forest 보다 더 일반적인 Random Forest Regression부터 시작해서 정규분포 근사가 왜 성립하는지, 그 이론적 기반을 설명한다.
우리가 random forest로 예측한 값이 얼마나 정확한지를 수학적으로 분석하려면 예측값이 정규분포처럼 흔들리는지 (asymptotic normaility) 알아야한다. 즉, 단순히 예측값 하나 뱉는 걸 넘어서, 불확실성까지 정당하게 말할 수 있어야 신뢰구간, p-value도 계산할 수 있고, 통계적으로 의미 있는 모델이 된다.
$Z_i = (X_i, Y_i) 데이터가 n개 있다고 가정했을 때, 목표는
Equation 10: $$\mu(x) = \mathbb{E}[Y \mid X = x]$$
즉, 입력이 $x$일 때 $Y$의 평균을 잘 예측하는 함수 $\mu(x)$를 아는 것이다. random forest에서 각 트리 $T$는 데이터와 랜덤 요소 $\xi$에 따라 결과가 달라질 수 있다. (각 트리마다 어떤 feature를 선택해서 split할지 등)
그래서 트리 하나의 예측을 확률적이다. ($T(x;\xi, Z_1, ..., Z_n)$)
Random forest는 여러 트리를 만들고 그 결과를 평균 내는 방식이다.
Equation 11: $$\text{RF}(x; Z_1, \dots, Z_n) = \frac{1}{B} \sum_{b=1}^{B} T\left(x; \xi_b, Z_{b1}^*, \dots, Z_{bs}^* \right)$$
쉽게 말해, 랜덤하게 선택된 s개의 샘플로 트리 하나 만들고, 예측 값 계산하고, 이걸 여러 번 반복해서 평균을 낸 것이다. 실재로는 수천 개의 트리를 만들고 평균을 내서 하나의 $\hat{\mu(x)}$을 예측한다.
아래는 asymptotic normality of random forest의 preliminaries이다.
Definition 1. base learner가 $T$이고, subsample size가 $s$인 random forest:
Equation 12: $$\text{RF}(x; Z_1, \dots, Z_n) = \binom{n}{s}^{-1} \sum_{1 \le i_1 < \cdots < i_s \le n} \mathbb{E}_\xi \left[ T(x; \xi, Z_{i_1}, \dots, Z_{i_s}) \right]$$
Definition 2. Tree가 honest하다는 뜻은 다음 중 하나를 만족해야 한다. Standard case (split을 정할 때 Y를 사용하지 않음) 또는 Double-sample case (Procedure 1)
Definition 3. Random-Split tree: split을 고를 때 무작위성 $\xi$를 따라, 각 변수 $j$가 split 후보로 선택될 확률이 $\frac{\pi}{d} $이상으로 보장되어야 한다. (특정 변수에 우치지 않고 고르게 split이 일어나야 leaf 크기가 고르게 줄어들고, 전체 공간을 잘 커버할 수 있음)
$$\frac{\pi}{d} \le \mathbb{P}(\text{split variable is } j) \le 1
\quad \text{for all } j = 1, \dots, d,\quad \text{where } 0 < \pi \le 1$$
Definition 4. $\alpha$-regular tree: 트리에서 split할 때, 양쪽 leaf에 최소한 $\alpha$ 비율의 데이터가 있어야 한다. 그리고 그 트리는 최소 깊이 $k$ 이상까지 자라야 한다.(각 리프에는 샘플이 k개 이상 있어야 함) $\rightarrow$ 트리 구조가 너무 한쪽으로만 쏠리면 leaf가 데이터 전체를 대표하지 못하게 되고 정규분포 수렴이 깨질 수 있다.
Definition 5. training data의 순서를 바꾸어도 예측 결과가 바뀌지 않는 모델은 symmetric predictor이다. 학습 데이터 인덱스 (1, 2, 3, 4, 5,...n)를 (n, 4, 3, 2, ...5)로 바꾸어도 결과가 같아야 대칭적이라는 의미 $\rightarrow$ 정규성 증명을 위한 고전적인 통계 이론 도구 들이 대부분 대칭성을 전제로 하기 때문에 필
지금까지 제시한 honesty, random split, symmetry, $\alpha$-regular 등의 조건들을 만족시키면 신뢰할 수 있는 분산 추정량을 갖게된다. 분산을 계산하는 방법은 eq8과 같다.
Equation 13: $$\hat{V}_{\text{IJ}}(x) =\frac{n - 1}{n} \left( \frac{n}{n - s} \right)^2 \sum_{i=1}^{n} \text{Cov}_* \left[ \hat{\mu}^*_b(x), N^*_{ib} \right]^2$$
section 2.3인 3. Asymptotic Inference with Causal Forests 에서 다룬 내용과, 위 definition에서 다룬 조건이 다 갖추어졌다면, random forest 예측 값 $\hat{\mu(x)}$는 정규분포로 수렴한다고 말할 수 있다. (seciton 2.3이 만족하지 않더라도, 정규분포처럼 퍼지긴 하되, 편향이 남을 수 있다. - asymptotically biased but normal)
Theorem 3.1 : Random Forest 예측값의 정규분포 수렴 (Asymptotic Normality)
우리는 section 2.3에서
- 3. Lipschitz continuity: 평균 함수들이 부드럽게 변화해야한다.
- 이 말은 $x $ 가 조금 변하면 $\mathbb{E}[Y_i^{(1)}|X_i = x]$, $\mathbb{E}[Y_i^{(0)}|X_i = x]$도 조금만 변해야 한다는 의미이다.
- 정규 분포가 되려면 subsample size $s$는 전체 데이터 수 $n$의 $\beta$제곱 비율이어야 한다. $s \sim n^{\beta} \quad \text{for some } \beta < 1$
라는 내용을 다룬적이 있다.
이 이론은 위 내용과 Definition 2 ~ 5를 기반으로 random forest의 예측 값이 정규 분포로 수렴하는지 보인다.
데이터 생성 프로세스가 다음과 같다고 가정한다.
- $Z_i = (X_i, Y_i)$는 서로 독립이고, i.i.d이다. : 데이터를 서로 영향을 주지 않고 같은 규칙으로 랜덤하게 하나씩 뽑은 상황, 통계에서 중심극한정리는 샘플이 서로 독립적일 때만 성립
- $ X_i \sim \textrm{Uniform}[0, 1]^d $: 입력값 $X_i$는 $[0, 1]$ 범위에서 고르게 퍼져있다. 키, 체온 같은 숫자들이 0부터 1사이의 값 안에서 골고루 퍼져 있다. d는 변수 갯수 $\rightarrow$ 트리가 분할을 고르게 하려면 입력값이 너무 한쪽에 몰려 있지 않아야 함. 이 조건은 수학적으로 다루기 쉽게 하기 위해 넣은 가정이므로 실제 데이터는 꼭 이렇게 생기지 않아도 됨
- Lipschitz continuity: 평균 함수들이 부드럽게 변화해야한다. $\mu(x) = \mathbb{E}[Y \mid X = x]$ ~ Lipschitz continuous
- $\text{Var}[Y \mid X = x] > 0$ : 입력값 x일 때 결과 Y는 완전히 예측되는 게 아니라 약간의 불확실성이 있어야 함
- $\mathbb{E}[|Y - \mu(X)|^{2 + \delta}] \le M$: 평균으로부터 얼마나 멀리 떨어졌는지의 $ 2 + \delta $제곱이 상수 유한 상수 M보다 작아야한다는 뜻인데, 이는 Outlier가 없어야한다는 의미
$\alpha$-regular에서 $\alpha <= 0.2$로 설정하고, Definition 2~5를 만족하며, subsample size $s_n$이 section 2.3에서 언급했던 것을 구체화해서 아래와 같이 정의된다고 가정
Equation 14: $$s_n \sim n^\beta \quad \text{for some} \quad \beta_{\min} := \left(1 + \frac{d}{\pi} \cdot \frac{\log(\alpha^{-1})}{\log\left((1 - \alpha)^{-1}\right)}\right)^{-1} < \beta < 1$$
그럼, Random Forest prediction은 asymptotically Gaussian을 따른다.
Equation 15: $$\frac{\hat{\mu}_n(x) - \mu(x)}{\sigma_n(x)} \Rightarrow \mathcal{N}(0, 1)$$
이렇게 되면, IJ로 추정한 분산이 실제 분산에 확률 수렴한다. $\hat{V}_{\text{IJ}}(x) / \sigma_n^2(x) \xrightarrow{p} 1$
분류로의 확장, 위 증명 과정은 생략 --
4. Inferring Heterogeneous Treatment Effects
이 섹션에서는 본격적으로 potential outcome framework에서 random forest를 사용하여 HTE를 추정하고, asymptotic theory를 causal inference에 적용한다.
Causal Forest의 목표를 상기해보면, 아래와 같은 Conditional Average Treatment Effect (CATE)를 추정하는 것이 목적이다.
$$\tau(x) = \mathbb{E}[Y^{(1)} - Y^{(0)} \mid X = x]$$
test point x에 대해, Definition 1에서 유추할 수 있듯이, 다음과 같이 Causal forest를 만들 수 있다.
Equation 24: $$\text{CF}(x; Z_1, \dots, Z_n) = \binom{n}{s}^{-1} \sum_{1 \le i_1 < \dots < i_s \le n} \mathbb{E}_\xi \left[ \Gamma(x; \xi, Z_{i_1}, \dots, Z_{i_s}) \right] $$
학습된 Tree $\Gamma$를 통해 test point $x$를 넣고, 치료 효과 $ \tau(x) $ 를 추정하는 것이다. Causal Tree에 대해서는 Theorem 3.1의 대부분의 조건은 유사하게 적용되지만, 두 가지 주요 수정 사항이 있다.
Honesty 조건에서 Standard case (split을 정할 때 Y를 사용하지 않음) 또는 Double-sample case (Procedure 1)를 언급했었는데, 치료 변수를 이용한 split이 가능하다는 것이 추가된다. (Definition 2b)
Eh, $\alpha$-regular 조건에서 leaf 마다 샘플이 k개 이상이면 됐지만, Causal Tree는 treatment 그룹과 control 그룹 모두 k개 이상 있어야 한다. (각 leaf에서 공정하게 비교가 가능해야하기 때문 (Definition 4b)
Causal Forest에서 우리가 원하는 예측 값인 $\tau(x)$ (치료효과)를 어떻게 계산할 수 있는지는 아래부터 다룬다.
Equation 25: $$\mathbb{E}[\Gamma(x) \mid X, W] = \frac{1}{|\mathcal{I}^{(1)}(x)|} \sum_{i \in \mathcal{I}^{(1)}(x)} \mathbb{E}[Y^{(1)} \mid X = X_i] - \frac{1}{|\mathcal{I}^{(0)}(x)|} \sum_{i \in \mathcal{I}^{(0)}(x)} \mathbb{E}[Y^{(0)} \mid X = X_i]$$
| $\Gamma(x)$ | Causal Tree가 예측한 treatment effect |
| $\mathcal{I}^{(1)}(x)$ | leaf node 안에서 treatment(=1) 받은 사람들의 인덱스 |
| $\mathcal{I}^{(0)}(x)$ | leaf node 안에서 control(=0) 받은 사람들의 인덱스 |
| $\mathbb{E}[Y^{(1)} \mid X = X_i]$ | $X_i$일 때 치료받았을 경우 결과의 평균 |
| $\mathbb{E}[Y^{(0)} \mid X = X_i]$ | $X_i$일 때 치료 안 받았을 경우 결과의 평균 |
하지만, 이 값이 충분히 수렴할 수 있으려면, 주변의 $X_i$들이 $x$에 충분히 가까워야 하고(=training sample로 만든 split 기준에 test sample x가 적용될 수 있어야 함), treatment/control sample이 충분히 있어야 한다. (overlap 조건)
5. Simulation Experiments
이 섹션에서는 Causal Forest가 정말로 다른 방법들보다 치료 효과를 더 잘 추정할 수 있을지에 대해 시뮬레이션 데이터로 실험해본다.
관찰 데이터를 기반으로 HTE를 정확히 추정하려면 두 가지 도전과제를 해결해야 한다.
1. Local stability: 치료 효과 $\tau(x)$가 비교적 일정한 구간을 잘 찾아야 함 (샘플의 수가 증가할 수록 같은 leaf 안에서 샘플이 서로 비슷해지고, 결과적으로 일정한 치료 효과를 내뱉는다) 구체적으로 말하면, 실제 치료 효과가 너무 들쭉날쭉하게 바뀌지 않아야한다. 만약 아주 작은 x 변화에도 치료 효과가 요동친다면, 그 지역에서의 평균을 내도 의미가 없다. 따라서 추정하려는 치료 효과는 어느 정도 안정되어 있어야 한다.
2. Propensity bias: -> positivity
그래서 본 시뮬레이션 실험에서는 두 가지 문제에 대해 Causal forest가 얼마나 잘 견디는지를 확인하고자 한다.
Baseline model: KNN - causal forest는 결국 adaptive neighborhood method이다. 그래서 non-adaptive 방식인 KNN을 선정하여 비교한다.
KNN은 test point $x$를 기준으로 치료군에서 가장 가까운 k명, 대조군에서 가장 가까운 k명을 고른뒤, 두 집단의 평균 차이를 계산한다.
Equation 26: $$\hat{\tau}_{\text{kNN}}(x) = \frac{1}{k} \sum_{i \in \mathcal{S}_1(x)} Y_i
- \frac{1}{k} \sum_{i \in \mathcal{S}_0(x)} Y_i$$\
이 추정값 역시 정규분포로 근사한다고 한다.
$$\hat{\tau}_{\text{kNN}}(x) \sim \mathcal{N}(\tau(x), \ \frac{\hat{V}(\mathcal{S}_1) + \hat{V}(\mathcal{S}_0)}{k(k - 1)})$$
실험의 의도는 단순한 K-NN 방식과 비교했을 때 causal forest가 신뢰 구간을 포함해 더 정확하고 견고한 추정이 가능한가를 알아보는 것이다.
5.1 Experimental Setup
기본 실험 환경 --
표본 수 n: 사용한 전체 데이터 수
특징 벡터 $X\in[0, 1]^d$: 각 샘플은 d차원의 실수 값 벡터로 구성되어 있고, [0, 1] 구간에서 균등하게 뽑힌다.
결과 값 $Y^(0)$, $Y^(1)$은 정규분포를 따른다.
실험에서는 다음과 같은 함수를 정의했다.
1. Main effect: 어떤 사람이 치료를 받든 안 받든 공통적으로 영향을 주는 요인이 outcome에 어떤 영향을 주는지 측정
따로 정의하는 이유: main effect와 treatment effect를 구분하지 않으면 치료 효과에 대한 추정이 혼동(confounding) 될 수 있기 때문 (가령 나이가 많을수록 치료도 더 많이 받고, 혈압도 높다면, 그냥 약을 받은 사람의 혈압이 높다고 해석될 수 있음)
$$m(x) = \frac{1}{2} \mathbb{E}[Y^{(0)} + Y^{(1)} \mid X = x]$$
2. Treatment effect:
$$\tau(x) = \mathbb{E}[Y^{(1)} - Y^{(0)} \mid X = x]$$
3. Propensity score:
$$e(x) = \mathbb{P}(W = 1 \mid X = x)$$
평가지표: MSE, Coverage rate (모델의 추정 치료효과로 구한 신뢰구간 실제 치료효과를 포함하는 비율)
Confidence interval: $[\hat{\tau}(x) - z \cdot \hat{\sigma}(x),\ \hat{\tau}(x) + z \cdot \hat{\sigma}(x)]$
Coverage rate: $\text{Coverage} = \frac{\# \text{ of points where } \tau(x_i) \in \text{CI}_i}{N}$
실험 1. Propensity bias에 강한지 테스트
중환자실 환자는 항생제를 더 많이 받는다. 그런데 그들은 원래 상태가 좋지 않다. 그래서 항생제를 줬는데도 상태가 나빠지면 항생제가 해롭다고 착각할 수 있다. (confounding)
논문에서는 이런 거짓된 착각에 모델이 속는지 보려고한다. 치료 효과 $\tau(x)$의 ground truth를 0으로 고정하고, 상태 $X_1$에 따라 치료 확률 (propensity score)과 기본 상태 (main effect)를 함정처럼 구성한다. 모델이 여기에 속지 않고 0에 가까운 예측을 할 수 있는지 확인
치료 확률 구성: $e(x) = \frac{1}{4} \left( 1 + \beta_{2,4}(X_1) \right)$ => X_1이 작을수록 치료 확률이 높음
기본 상태 구성: $m(x) = 2X_1 - 1$ => X_1이 클 수록 건강함 (이걸 Y로 쓴 듯)
치료 효과: $\tau(x) = 0$
이렇게 구성하면 공변량 X_1와 치료 확률 e(x)에 상관관계를 만들 수 있어서 일반적인 머신러닝에 착각을 유도하는 구조를 만들어냄
이걸 procedure 2 tree로 구현된 causal forest가 confounding에 속지 않는지 보는게 핵심
Causal Tree는 구조 특성상 X_1을 기준으로 split을 하게 되면 건강한 집단 / 건강하지 않은 집단으로 데이터가 분리되고, 각 집단 안에서 control/treatment 군집이 나뉜다. 따라서 비슷한 상태에서의 비교는 비슷한 m(x)의 차이이기 때문에 0이되어야 한다.
하지만 KNN의 경우 x가 들어오면 x랑 가장 가까운 치료군을 k개를 가져오고, 가장 가까운 통제군 k개를 가져오기 때문에 평균 치료효과가 0이 아니게된다. (x가 건강한 사람일 때 통제군 k개 샘플은 x랑 비슷할 수 있어도, 치료군은 x랑 비슷하지 않은 샘플일 가능성이 높음)

CF는 다양한 차원에서도 항상 MSE가 0.02 수준이었으나, 10-NN, 100-NN은 오차가 10배 이상 컸다. K-NN은 주변 이웃과 비교하지만, confounding 구조에 잘 적응하지 못한다. 특히 k가 작으면 분산이 크고, k가 크면 편향이 크다.

(왼쪽 그림 해설)
x축은 데이터 갯수, y축은 추정량의 분산이다. 데이터가 많아질수록, Causal Forest의 예측 분산이 점점 줄어든다. 이는 학습 데이터가 늘어날수록 모델이 더 자신 있게 예측한다는 것을 의미한다. (신뢰도 상승)
(가운데 그림 해설)
우리는 분산을 IJ 방식으로 계산한 분산으로 근사했다. 가운데 플롯은 IJ가 얼마나 분산을 잘 추정했는가를 보는 것이다. Y축이 낮을수록 IJ가 추정한 분산이 실제 분산과 비슷하다는 것을 의미한다. 데이터가 많아질수록 추정이 정확해졌다. (실제 우리가 다루는 데이터는 1600개 보다 많으니까 더 정확할 것임. 믿을 만한 방식이다)
(오른쪽 그림 해설)
일반적인 QQ플롯이다. 그림이 대각선에 가까울 수록 Causal forest의 예측이 정규분포에 가까움을 의미한다. 이를 통해 신뢰구간을 정규분포를 기반으로 만들어도 괜찮다는 근거가 만들어진다.
실험 2. 치료 효과가 지역마다 다른지
어떤 약은 특정 유전자형이 있는 사람에게만 효과가 있다. 즉, 사람에 따라 약효가 다르다. 이런 상황을 시뮬레이션으로 만들어서 치료 효과가 위치(x)에 따라 다르게 변할 때 Causal Forest가 그 변화를 잘 포착할 수 있는지 확인한다. (double sample tree 사용)
치료 효과 함수: $\tau(x) = \varsigma(X_1) \cdot \varsigma(X_2), \quad \varsigma(x) = 1 + \frac{1}{1 + e^{-20(x - 1/3)}}$,
여기서는 propensity score가 0.5로, 각 샘플에 랜덤으로 배정되고, 치료를 받지 않았을 경우 $Y^0=0$이고, $Y^1= \varsigma(X_1) \cdot \varsigma(X_2) $라는 것을 유추할 수 있다.
$X_1$, $X_2$가 특정 값 (1/3) 근처이면 치료 효과가 급격히 증가함 (특정 사람들에겐 약효가 크다는 구조)

CF는 차원이 커져도 MSE가 거의 일정하게 낮았다. 그러나 NN기반 모델은 차원이 커질수록 오차가 급격히 증가했다. Coverage도 마찬가지로 CF가 좋았다.
고차원일수록 CF의 성능이 좋아지는 이유: 차원이 커지면 나무들이 더 다양한 방향으로 split이 가능하고, 나무들 간 상관성이 줄어든다. 이에 따라 전체 분산이 줄어들어 성능이 향상된다.
실험 3. 아주 좁은 영역에서만 효과가 있을 때
어떤 약은 특정 유전자 조합 한가지에서만 효과가 있다. 이건 일반적인 방법으로는 찾기 어렵다. 이 실험은 모델이 좁고 날카로운 효과 영역도 잘 잡아내는지를 보는 것이다. (일반적인 모델은 놓치기 쉬움) (double sample tree 사용)
치료 효과 함수: $\varsigma(x) = \frac{2}{1 + e^{-12(x - 1/2)}} \\
\tau(x) = \varsigma(X_1) \cdot \varsigma(X_2)$

CF는 d>2일때도 MSE가 0.02 수준으로 낮게 유지된다. 반면 NN계열은 d=8일때 MSE가 0.26까지 상승한다. (차원이 커질수록 부정확)
coverage 관점에서 차원이 증가할수록 CF가 많이 감소했는데, 이는 bias가 증가했기 때문임 (원래 bias vs variance는 trade-off)
차원이 증가할수록 bias가 증가하는 이유는 고차원의 경우 중요 변수 비율이 줄어들 수 밖에 없는데 이렇게 되면 중요하지 않은 변수로 split할 확률이 높아지고, 그에 따라 리프에 서로 비슷한 군이 모이지 않아서 정확한 비교가 되지 않았을 수 있음 (내 생각)

X축은 $x_1$, Y축은 $x_2$를 의미한다. 따라서 $x_1$, $x_2$ 관계에 따라 치료 효과의 값의 크기를 색의 강도로 표현한 그림이다. (색이 밝을 수록 값이 큼)
식 $\varsigma(x) = \frac{2}{1 + e^{-12(x - 1/2)}} \\
\tau(x) = \varsigma(X_1) \cdot \varsigma(X_2)$ 에서 $x_1$, $x_2$가 둘 다 클 때 치료 효과가 가장 크게 나오게 구성된다.
가장 왼쪽 컬럼이 GT이고, 가운데가 CF가 예측한 치료효과, 오른쪽이 K-nn이 예측한 치료효과이다. 결과적으로
d=6일때: CF는 전체적인 구조를 잘 잡는다. KNN도 나쁘지 않은데 경계가 조금 흐리다는 것을 알 수 있다.
d=20일때: CF는 GT의 전체적인 구조를 잘 잡긴하나, 살짝 다른걸 볼 수 있음. 우상단 밝기가 다름 (bias증가), KNN이 매끄럽지 못하고 뭉뚝한걸 알 수 있다.
본 논문의 실험파트에서 마지막에 저자들은 그들이 실험에서 상황에 따라 Propensity Tree나 Double-sample Tree 중 더 좋아 보이는 걸 골라 썼다고 밝혔다. 즉, 아직까지는 모든 상황에서 자동으로 잘 작동하는 방법이 아니다는 뜻이다.
이어서, 논문에서는 향후 연구 과제로 이것을 자동화 할 수 있는 방법을 제안했다. 더불어, 논문에서 subsample s를 하이퍼파라미터로 정했는데, 이것 역시 데이터 특성에 맞게 자동으로 정해주는 원리가 필요하다고 밝힌다.