[Causal Inference] 성향점수

이전 글과 이어지는 내용입니다.

https://baram1ng.tistory.com/45 

 

[Causal Inference] 유용한 선형회귀

이전 글과 이어지는 내용입니다.https://baram1ng.tistory.com/44 [Causal Inference] 인과추론 기초 & 무작위 실험KHUDA 활동을 통해서 이번에 인과추론 스터디를 진행하게 되었는데, 앞으로 해당 블로그에 정

baram1ng.tistory.com


오늘은 성향점수에 대해 알아보고자 한다.

 

성향점수 가중치는 또다른 편향 제거 방법 중 하나로, 직교화처럼 잔차를 생성하는 대신, 처치 배정 메커니즘을 모델링하고 모델 예측을 사용하여 데이터를 재조정한다.

 

성향 점수는 특히 이진(binary)이나 이산형(discrete)처치가 있을 때 특히 적합하다.

 

관리자 교육의 효과

 

많은 상황에서 계획한 무작위 실험 연구가 관측연구와 유사해지는 상황이 발생한다. 이때, 데이터 분석가는 교란 요인을 보정하여 실험군($T=1$)과 대조군($T=0$)을 비교할 수 있도록 해야한다.

 

아래 예시는 회사 관리자에 대한 데이터와 몇가지 공변량이다.

 

  • Intervention: 처치변수
  • engagement_score: 결과변수
  • 나머지 데이터: 기타 공변량

 

관리자 교육과 직원 참여도 간의 인과관계를 추정할 때, 공변량 중 일부나 전부를 조절함으로써 편향을 줄이거나 완전히 제거할 수 있다.

 

회귀분석과 보정

 

우선 회귀분석을 사용해 교란 요인을 보정해보자. (여기서 목표는 성향점수 가중치 추정값이 회귀 추정값과 같은지 확인)

 

실험군과 대조군을 단순비교하면 아래와 같은 결과가 나온다.

 

그러나 처치가 무작위로 배정이 안되었기에 결과는 편향되었을 것이며, 공변량을 보정하여 다음 모델을 추정하여 편향을 줄일 수 있다.

$$engagement_i = t T_i + θ X_i + e_i$$

  • X: 모든 교란 요인과 졀편을 위한 상수 열 포함

 

여기서 얻은 효과 추정량은 보정 전에 얻은 추정값보다 훨씬 작다 (ATE: 0.2678)

이는 긍정편향이 있음을 나타내며, 이미 직원 참여도가 높은 관리자교육 프로그램에 더 많이 참여했을 가능서이 높다는 의미를 나타낸다.

 

성향점수

 

성향점수 가중치는 성향점수라는 개념을 중심으로 이루어진다. 성향점수는 관찰 연구에서 두 그룹을 구분할 때 각 그룹이 여러 특성에서 비슷하게 만들어주는 도구라고 생각하면 된다. 교란 요인을 통제하는 대신, $E[T|X]$를 추정하는 균형점수를 통제해도 충분하며 이 균형점수는 처치의 조건부 확률($P(T|X)$)나 성향점수($e(x)$)라고 불린다.

 

성향점수는 차원 축소 기법으로 볼 수도 있다. 고차원일 수 있는 X를 조건부로 설정하는 대신 성향점수를 조건부로 두고 X로 유입하는 뒷문 경로를 차단할 수 있다. (증명은 생략)

 

성향점수와 공변량, 처치의 인과그래프는 아래와 같다.

 

위의 그래프와 같이 $e(x)$를 통제하면 곧 X를 직접 통제할 때와 동일한 효과가 나타남을 알 수 있다. 이는 $e(x)$가 X를 축약하기 때문이다. 이를 관리자 교육 프로그램의 관점에서 생각해보자. 처음엔 직속 상사의 참여가 높은 관리자일수록 교육에 참여할 가능성이 높기 때문에, 처음에는 실험군과 대조군을 비교할 수 없다. 그러나 실험군과 대조군에서 각각 한 명씩 두 명의 관리자를 뽑되 처치 받을 확률이 동일하면 그룹은 비교할 수 있다. 만약, 두 관리자가 처치 받을 확률이 같으면 그중 한 명이 처치 받고 다른 한 명이 받지 않은 유일한 이유는 순전히 우연에 의한 것이기 때문이다. (성향점수가 동일한 상황에서 처치는 사실상 무작위 배정된 것과 같은 효과)

 

성향점수 추정

 

실제 성향점수 $e(x)$는 알 수 없는 이상적인 값이다. 때문에 실제 성향점수를 추정값으로 대체해야 한다. 이는 로지스틱 회귀를 사용하여 추정하는 것이 좋다. (처치 / 미처치와 같은 이진 모델링에서 각 독립변수가 결과와 미치는 영향을 해석하기가 쉽기 때문에 로지스틱 회귀모델 사용) 추정할 때는 다른 모든 공변량을 포함하여 아래와 같이 추정한다.

ps_model = smf.logit("""intervention ~
tenure + last_engagement_score + department_Score
+ C(n_of_reports) + C(gender) + C(role)""", data = df).fit(disp = 0)

data_ps = df.assign(
	propensity_score = ps_model.predict(df)
)

 

아래는 로지스틱 회귀를 통해 산출해낸 성향점수다.

  • propensity_score: 추정 성향점수

 

성향점수와 직교화

 

선형회귀도 성향점수 추정과 매우 비슷하며, 편향제거 단계에서 $E[T|X]$를 추정한다. 이는 선형회귀에서 교란 요인 X를 보정하기 위해서 성향점수 $e(X)$의 추정량을 사용할 수 있음을 의미한다.

 

회귀분석에서 성향점수 추정값을 사용하여 회귀한 ATE 추정값은 처치 및 교란요인 X를 사용하여 선형회귀분석을 적합시킨 결과와 매우 유사하다. (성향점수 추정값이 공변량을 축약한 값이기 때문)

 

성향점수 매칭(PSM)

 

매칭 추정량은 성향점수 통제하는 또 다른 접근 방식으로 관측 가능한 특징이 비슷한 실험 대상의 짝을 찾아 실험군과 대조군을 비교하는 것이다. 즉, 성향 점수를 계산한 후 집단 간 성향점수 기반으로 매칭을 진행할 수 있는데, 이때의 매칭 알고리즘으로 KNNk-d tree알고리즘을 주로 사용한다.

 

성향점수를 유일한 특성으로 사용하여 실험군에 KNN 모델을 적합시키고 대조군의 $Y_1$을 대체하는데 사용한다. 다음으로, 대조군에 KNN 모델을 적합시키고 실험군의 $Y_0$을 대체한다. 그 매칭 값은 아래와 같다.

  • match: 매칭 추정량

 

구한 매칭 추정량을 이용하여 아래의 식으로 ATE를 추정할 수 있다.

  • $Y_{jm}(i)$: 실험군에 속한 대상 i에 짝지어진 대상의 결과

 

매칭 추정량은 성향점수 뿐만이 아니라, 기존 특성 X에 바로 매칭이 가능하지만, X의 차원이 클수록 편향이 커진다. 때문에, 편향을 피하고 매칭을 사용하기 위해 편향 보정식을 사용할 필요가 있다.

 

해당 도서에서 필자는 매칭 추정량을 크게 선호하지 않는데, 그 이유는 아래와 같다.

  • 편향될 가능성 존재
  • 분산 추정이 어려움
  • KNN에 회의적

 

역확률 가중치

 

성향점수 매칭(PSM)이외에도 성향점수를 활용하는 역확률 가중치(IPW)도 널리 사용한다.

역확률 가중치 방법은 처치의 역확률에 따라 데이터의 가중치를 재조정하여 데이터에서 처치가 무작위 배정된 것처럼 보이게 할 수 있다.

 

쉽게 말해, $1/개인이 특정처리를 받을 확률$을 가중치로 부여하고, 처치와 통제 집단의 차이를 조정하여 처치받을 확률이 높을수록, 높은 가중치를 부여하고 처치받을 확률이 낮을수록 적은 가중치를 부여한다. 이는 편향을 낮추고 관찰연구에서도 인과관계를 추정할 수 있도록 하는 효과를 갖는다. (모든 실험 대상이 처치 t를 받았을 경우와 비슷한 유사 모집단 생성)

 

관리자 예시로 이해해보자. 모든 관리자가 교육받았을 때의 평균 참여도($Y_1$)의 기댓값을 알고 싶다고 가정하자. 이 값을 구하기 위해 실험군을 처치 받을 확률의 역수로 조정하며 이는 처치 받을 확률이 낮은데도 처치 받은 대상에게 높은 가중치를 부여하게 된다. 즉, 드문 처치 사례에 더 많은 가중치를 준다.

 

아래는 각 점의 크기가 가중치인 관리자 교육 훈련 데이터의 IPW 과정에 관한 그래프다.

성향점수가 낮을 때(=대조군이 될 확률이 높은) $T=1$의 높은 가중치를 보자. 교육받지 않은 것처럼 보이는 교육받은 관리자에게 높은 가중치를 부여하며 반대로 성향점수가 높을 때(=실험군이 될 확률이 높은) $T=0$을 살펴보면 높은 가중치를 부여한다. 즉, 교육받은 관리자 그룹(실험군, $T=1$)처럼 보이는 교육받지 않은 관리자 그룹(대조군)을 매우 중요하게 생각한다는 것을 알 수 있다.

 

그리고 이를 통해 ATE를 구하는 것도 가능하며 이는 공변량 X을 보정하지 않고 얻은 결과보다 ATE가 더 정확함을 알 수 있다.

 

위 ATE 식을 아래와 같이 단순화할 수도 있다.

 

회귀분석과 IPW는 다르게 보이지만, 가중치 부여 방식을 제외하고는 거의 동일한 방식이라고 봐도 무방하다.

 

역확률 가중치의 분산

 

그러나ㅣ 역확률 가중치의 표준오차를 계산하는 것은 간단하지 않다. IPW 추정값의 신뢰구간을 얻는 가장 간단한 방법은 부트스트랩(bootstrap)방법이다. 부트스트랩 방법을 사용해서 여러 IPW 추정값을 구한 다음 추정값의 2.5번째 & 97.5번째 백분위수를 계산하여 95% 신뢰구간을 얻을 수 있다. (추가 정리 생략, github 참고)

 

이렇게 얻은 95% 신뢰구간은 선형회귀분석을 사용하여 얻은 것과 거의 비슷하다.

 

안정된 성향점수 가중치

 

앞서 역확률 가중치 방법(IPW)을 사용하면 유사 모집단을 만든다고 언급하였다. 

 

추가로 머신러닝 관점에서 IPW를 중요도 샘플링의 응용관점으로 바라볼 수 있다. 중요도 샘플링에서는 원본 분포 $q(x)$의 데이터가 있지만 목표 분포인 $p(x)$에서 샘플링하고 싶을 때, 데이터를 $p(x)/q(x)$로 재조정하는 방식을 사용한다. 이를 IPW에 적용하면 실험군에 $1/P(T=1|X)$의 가중치를 주는 것은 $P(T=1|X)$ 분포에서 나온 데이터를 사용하고 이를 이용해 $P(T=1) = 1$로 재구성하는 것을 의미한다. 처치 확률이 단순히 1이기에 더 이상 X에 종속되지 않으며 X가 Y에 영향을 줄 경우 $P(T=1|X)$는 편향될 수 있다.

 

IPW를 이해하는 또 다른 방법은 실험군과 대조군의 가중치 합이 원래 표본 크기에 얼마나 가까운지를 확인하는 것이다. 이 방법은 가중치가 너무 크지 않으면 괜찮은데, 만약 처치 확률이 매우 낮을 경우, 계산상의 문제가 발생할 수 있기에 주변확률 $P(T=t)$를 사용하여 가중치를 안정화시킨다.

 

안정된 가중치는 실험군과 대조군의 유효 크기(가중치의 합)가 각각 원래 실험군과 대조군의 유효 크기와 일치하는 유사 모집단을 재구성한다.

 

선택편향

 

지금까지 성향점수 가중치를 사용하여 공통 원인을 보정함으로써 실험군과 대조군을 서로 비슷하게 만드는 과정을 진행했다. IPW는 이 방법 뿐 아니라 선택 문제를 보정하는 것에도 사용될 수 있다.

 

예를 들어, 앱에 대한 고객 만족도를 알고 싶을 때, 1~5 척도로 제품을 평가하는 설문을 보낸다고 하자. 일부 고객은 응답하지 않았기에 분석 결과가 편향될 문제가 있다. 이를 보정하기 위해 고객의 공변량(ex. 나이, 소득 등)이 주어지면 응답률 $R$, $P(R=1|X)$를 추정할 수 있다. 그다음 응답자에게 $1/P(R=1)$만큼의 가중치를 부여한다. 이렇게 하면 응답자는 자신뿐 아니라 비슷한 고객을 대표하여 원래 모집단처럼 행동하지만, 마치 모두가 설문에 응답한 것처럼 보이는 유사 모집단을 생성한다.

 

교란편향과 선택편향을 동시에 마주할 경우, 선택편향과 교란편향에 두 가중치의 곱을 사용하는데 이 때 가중치를 주변확률 $P(T=t)$로 안정화하면 좋다.

 

편향-분산 Trade-Off

 

만약, $T$를 잘 예측하는 공변량 $X_k$가 있다면, 이 변수는 $e(x)$에 대한 정확한 모델을 제공할 것이다. 그러나 해당 변수가 Y의 원인이 아니라면 이는 교란 요인이 아니며 IPW의 추정값의 분산값만 높이는 꼴이 된다.

 

반면에 처치가 무작위 배정이 된다면 $e(x)$의 예측력은 0이 되게된다. 관리자 교육 예시에서 무작위 배정 시 $e(x)$의 추정량이 높은 관리자가 $e(x)$의 추정량이 낮은 관리자보다 교육에 참여할 가능성이 더 높지는 않다. (무작위 상황에서는 실험군 = 대조군)

 

이렇게 IPW에는 편향-분산 Trade-Off가 존재한다. 일반적으로는 성향점수 모델이 더 정확할수록 편향이 작아지게 된다. 이때, 편향을 통제할 수 있을 정도로 정밀하게 모델을 만들되, 너무 과도하게 정확하게되면 부정확한 효과 추정값을 생성할 수 있기에 주의해야 한다.

 

성향점수의 양수성 가정

 

편향-분산 Trade-Off는 인과추론 가정은 두가지 관점에서 바라볼 수 있다.

  • 조건부 독립
  • 양수성 관점

 

양수성(positivity) 가정은 교란변수가 주어졌을 때 처치(T)를 배정받을 확률이 0과 1 사이라는 것이다.

 

더 많은 변수를 추가하여 $e(x)$에 대한 모델을 더 정교하게 만들수록 조건부 독립성 가정을 만족하는 방향으로 나아갈 수 있지만, 반면 동시에 양수성 가정의 타당성이 떨어지게 된다. (대조군에서 멀리 떨어진 낮은 $e(x)$의 추정량의 영역에 처치가 집중되고 반대도 마찬가지기 때문)

 

만약 성향점수가 낮은(=대조군이 될 확률이 높은) 영역에 처치 받은 표본이 없을 경우 해당 영역에서 $Y_1$을 재구성하는 재조정은 불가능하다. 이는 IPW 측면에서 양수성 가정이 위배된 것이다.

 

(이하 생략)

 

디자인 vs 모델 기반 식별

 

회귀분석이나 역확률 가중치는 그 효과가 가중치 부여 방식을 제외하고 동일하다고 하였다. 그렇다면 회귀분석과 역확률 가중치 중 언제 어떤 방법에 사용해야 좋을까?

 

위 질문에 대한 대답은 모델 기반 식별디자인 기반 식별로 설명할 수 있다.

 

  • 모델 기반 식별: 회귀(Regression)
    • 처치 및 추가 공변량을 조건부로 설정, 잠재적 결과에 대한 모델 형태로 가정
    • object: 추정에 필요한 누락된 잠재적 결과를 대체
  • 디자인 기반 식별: 성향점수
    • 처치 배정 메커니즘에 대한 가정

 

어떤 유형의 가정이 더 편한지에 따라 두 식별 중 하나를 선택하게 된다.

  • 처치가 어떻게 배정되었는지 이해하였는가?
  • 잠재적 결과 모델을 올바르게 지정하였는가?

 

이중 강건 추정

 

모델 기반 식별 방법과 디자인 기반 식별 방법에 대한 선택의 확신이 없다면 두가지를 결합하는 방법도 존재한다.

 

이중 강건(DR) 추정은 모델 기반 + 디자인 기반 식별하여 적어도 둘 중 하나가 정확하기를 기대하는 방법이다.

 

예시로 성향점수와 선형회귀분석을 결합하는 방법을 살펴보자. 일반적으로 반사실 $Y_t$의 이중 강건 추정량은 아래와 같이 표현한다.

두 식은 같은 식

  • $m(x)$: $E[Y_t|X]$에 대한 모델(ex. 선형회귀)
  • $e(x)$: $P(T|X)$의 성향점수

$m(x)$나 $e(x)$ 모델 중 하나만 올바르게 지정하면 되기에 이중 강건하다고 한다.

 

  • 성향점수 모델이 잘못되고 결과 모델 $m(x)$가 정확한 경우
    • $E[Y - m(x)] = 0$으로 수렴
    • 결과적으로 첫번째 항만 남게 된다.
  • 결과 모델이 부정확하지만 성향점수 모델이 정확한 경우
    • $T-e(x) = 0$으로 수렴
    • 첫번 번째 항인 IPW 추정량만 남게 된다.

 

이중 강건 추정량은 평균 반사실적 결과인 $Y_t$를 추정한다. 평균 처치 효과(ATE)를 추정하기 위해선 $E[Y_0]$와 $E[Y_1]$ 각각에 추 추정량을 함께 사용하고 그 차이를 계산하면 된다.

 

연속형 처치에서의 일반화 성향점수

 

지금까지 성향점수의 처치가 불연속적인 경우에 사용하는 방법에 대해 설명했다. 그러나, 연속형 처치는 훨씬 다루기 어렵다.

 

이전에 연속형 처치에 대해 처치 반응의 함수 형태를 가정하여 OLS로 추정할 수 있었다.

 

그러나 성향점수 가중치에서 모수적 반응 함수 같은 것은 존재하지 않는다.

 

이러한 문제를 해결하기 위해 연속형 처치를 이산화하는 방법일반화 성향점수(GPS)를 사용하는 방법이 존재한다.

 

예시를 통해 살펴보자. 은행은 대출 금리가 고객이 대출금을 상환하는 기간(월 단위)에 어떤 영향을 미치는지 알고 싶다고 가정하자.

(직관적으로 금리가 대출 상황에 미치는 영향은 음수)

 

아래 데이터를 살펴보자.

  • 금리는 두 가지 머신러닝 모델(ml_1, ml_2)에 따라 배정
  • duration: 상환기간
  • interest: 대출 금리

 

우리의 목표는 금리와 상환기간 사이의 관계가 편향되지 않도록 ml_1 ml_2를 보정하는 것이다. 우선 대출 금리와 상환기간 사이의 회귀분석을 진행해보자.

m_naive = smf.ols("duration ~ interest", data = df_cont_t).fit()

 

단순화를 위해 처치는 정규분포에서 추출되었다고 가정하자. 이 때 정규분포의 확률밀도함수(PDF)는 아래와 같다.

 

이제 조건부 정규분포의 매개변수인 평균과 표준편차를 추정한다. OLS를 사용하여 처치변수를 적합시킨다.

model_t = smf.ols("interest~ml_1+ml_2", data=df_cont_t).fit()

 

 

여기서 적합된 값을 평균($µ_i$)로 사용하고 잔차의 표준편차를 σ로 사용한다. 그다음 주어진 처치에 해당하는 조건부 밀도를 평가한다. 그리고 여기서 일반화 성향점수(GPS)를 산출한다.

 

회귀분석에서 일반화 성향점수(GPS)의 역수를 가중치로 사용하면 편향을 보정할 수 있다. 이때, 주변밀도함수 $f(t)$로 가중치 안정화를 통해 이 상황을 더욱 개선할 수 있다. 이산형 처치에서 가중치 안정화는 선택사항이라면, 연속형 처치에서는 일반화 성향점수를 사용할 때는 필수다.

 

아래에서 ml_1을 사용하여 $f(t|x)$를 적합시킨 것을 보면, 역확률 가중치는 처치 모델의 적합된 값에서 멀리 떨어진 포인트에 높은 중요도를 부여하고 안정화는 $f(t)$에서 멀리 떨어진 포인트(평균에서 멀리 떨어진 포인트)에도 낮은 중요도를 부여하는 것을 볼 수 있다.

  • 안정된 가중치는 훨씬 작아져 분산이 작아진다.
  • ml_1의 값이 낮고 금리가 낮은 포인트(그리고 ml_1값이 높고 금리가 높은 포인트)에 더 많은 중요도를 부여한다는 것이 분명함을 확인한다.

 

그리고 이러한 안정된 가중치의 최종 결과로 실제 ATE에 더 가까운 추정값을 얻을 수 있음을 확인할 수 있다.


Reference

https://product.kyobobook.co.kr/detail/S000212577153