인과추론 소개
-
연관관계
-
인과관계
- 한 변수의 변화가 다른 변수의 변화를 일으키는 것
즉, 인과추론은 연관관계로부터 인과관계를 추론하고 언제, 그리고 왜 서로 다른지 이해하는 것
인과추론의 목적
- 현실을 이해하는 것
- 일반적으로 원인과 결과의 관계를 알아야만 원인에 개입하여 원하는 결과를 가져 올 수 있음
- ex : 회사에서 인과추론 소개서 마케팅 비용이 매출 증가로 이어지는지 알고 싶어 하는 이유는, 만약 그렇다면 이를 지렛대 삼아 수익을 늘릴 수 있기 때문
연관관계와 인과관계
해당 기간에 가격을 할인하면 판매량이 어떻게 증가하는지를 살펴보고, 여러 어린이 장난감 기업의 데이터를 활용해서 할인이 좋은 생각인지 판단해보겠다.
| store | weeks_to_xmas | avg_week_sales | is_on_sale | weekly_amount_sold |
|---|
| 0 | 1 | 3 | 12.98 | 1 | 21960 |
| 1 | 1 | 2 | 12.98 | 1 | 18470 |
| 2 | 1 | 1 | 12.98 | 1 | 14575 |
| 3 | 1 | 0 | 12.98 | 0 | 10245 |
| 4 | 2 | 3 | 19.92 | 0 | 10322 |
| 5 | 2 | 2 | 19.92 | 0 | 5373 |
- store: 상점의 고유 식별자(ID)
- weeks_to_xmas: 크리스마스까지 남은 기간(주)
- avg_week_sales: 12월 각 상점의 주간 판매량
- is_on_sale: 해당 주간, 기업의 가격할인 진행 여부(진행 = 1, 미진행 = 0)
- weekly_amount_sold: 해당 연도의 상점 주간 평균 판매
분석단위
- 인과추론 연구에서 분석단위는 일반적으로 개인(처치하려는 대상)
- 새로운 제품이 유저 잔존에 미치는 영향을 분석할 때 처럼, 분석단위는 대부분 사람
- 다른 유형의 분석단위를 사용하기도 함
처치와 결과
장난감 할인 데이터와 함께 첫 번째 기술적인 내용을 살펴보겠다.
Ti는 실험 대상 i의 처치 여부를 나타냄
Ti={1,실험대상i 가 처치받은 경우0,실험대상i 가 처치받지 않은 경우
- 여기서의 처치는 구하려는 효과에 대한 개입을 나타낼때 사용하는 용어
- 해당 예시에서 처치는 is_on_sale 을 말함
영향을 주려는 변수인 주간 판매량(weekly_amount_sold)를 결과라 칭하겠음
또한, 실험 대상 i의 결과는 Yi로 표기
'처치'와 '결과'라는 두 개념을 사용하여 인과추론의 목표를 재정의 하자면
인과추론의 근본적인 문제
- 문제
- 동일한 실험 대상이 '처치'를 받은 상태와 받지 않은 상태를 동시에 관측할 수 없다는 점
좀 더 문제를 직관적으로 알아보자
처치 (is on sale) 에 따른 결과 ( weekly_amount_sold) 그래프를 그려본다.

그래프를 보면 상품 가격을 낮춘 상품들의 판매량이 더 많음을 알 수 있다.
할인과 판매량의 관계
- 가격이 낮아지면 구매량이 증가하는 경향이 있으며, 이는 우리의 직관과도 일치합니다.
인과추론과 도메인 지식
- 상품 할인과 광고 노출은 판매량 증가로 이어질 수 있지만, 이를 단순한 인과관계로 간주하기엔 위험합니다.
데이터 분석
- 그래프를 통해 할인 시 판매량이 평균 약 150 단위 더 높아지는 것을 관찰할 수 있습니다. 하지만 이는 의심스러울 정도로 높은 수치입니다.
연관관계와 인과관계 구분
- 판매량 증가가 단순히 할인의 결과가 아닐 수 있으며, 대기업의 공격적 가격 정책이나 크리스마스 시즌 등의 다른 요인이 영향을 미쳤을 가능성이 있습니다.
반사실 비교의 필요성
- 동일한 실험 대상이 할인된 상황과 그렇지 않은 상황을 동시에 관측해야만 할인의 실제 효과를 확신할 수 있습니다. 이는 인과추론의 근본적인 문제로, 반사실 상황을 통해 해결할 수 있습니다. 앞서 설명했듯이 인과추론의 근본적인 문제는 동일 대상의 두 상황을 동시에 관측할 수 없다는 점 대신 다른 방법을 찾아야 함.
인과모델
모든 문제를 직관적으로 추론할 수 있지만 단순한 직관을 넘어서려면 공식적인 표기법이 필요
- 화살표 (←) 로 표시하는 일련의 할당 메커니즘
다음 인과모델을 예로 들어보겠다
u를 사용해 모델 외부의 변수를 나타내며, 변수 u가 어떻게 생성되었는지 따로 설명하지 않을 것
T←ft(ut)
Y←fy(T,uy)
- 첫 번째 식에서, 모델링하지 않는 변수 집합 ut(외부변수)2가 함수ft롤 통해 처치변수 T를 유발하는 원인
- 두 번째 식에서 처치변수 T는 다른 변수 집합 uy(또한, 모델링하지 않을 변수) 와 함께 함수fy를 통해 결과 Y를 유발
- 해당 수식에서 uy는 결과가 단순히 처치변수만으로 결정되지 않음을 나타냄
- 즉 모델링하지 않기로 선택한 변수라 하더라도 결과에 영향을 미침
EX ) 가격할인 예시에 적용
- weekly_amount_sold( 결과변수 Y ) 는 처치에 해당하는 할인 is_on_sale ( 처치변수 T ) 및 특정되지 않은 요인들인 u (외부 변수 ) 때문에 발생
- 변수 u의 목적은 모델에 포함된 변수로는 설명되지 않은 변수의 모든 변동을 설명하는 것 -> 이를 내생변수
- 해당 예시에서는 가격할인이 모델 내에 없는 요인들( 기업 규모 등 ) 때문에 유발
IsOnSales ←ft(ut)
AmountSold ←fy(IsOnSales,uy)
인과관계 비가역성
- ← 대신 (=) 를 사용하면 Y = T + X 와 T = Y - X 가 같아진다. T가 Y의 원인인 것과 그 반대인 Y가 T의 원인이지 않다. 이를 구분하기 위해 화살표 사용
외부 변수 (u)
- 모델에서 설명되지 않는 변동을 설명. 예를 들면 기업들이 더 공격적으로 할인을 진행할 수 있는 요인은 모델에 포함되지 않는 변수 u로 설명 가능
내생변수
- 관측되지 않은 요인 (u)에 의해 영향을 받는 변수 예시에서는 is_on_sale이 모델 내에 없는 BusinessSize 때문에 유발
모델을 더 정밀하게 만들기 위해 외부 변수(u)를 모델에 포함시킬 수 있다. 예를 들어, 대기업들의 할인 전략이 판매량에 미치는 영향을 더 잘 이해하기 위해 BusinessSize를 모델에 포함시킬 수 있다.
인과추론 모델링 쉽게 설명하기
인과추론 모델링은 변수들 간의 인과관계를 명확히 하기 위해 사용하는 방법. 이번에는 "BusinessSize"라는 변수를 추가해서 좀 더 정교하게 모델링하는 방법을 알아보겠다.
기존 모델
- IsOnSales (처치변수 T) ←ft(ut)
- AmountSold (결과변수 Y) ←fy(IsOnSales,uy)
- 외부변수 (u) : 모델에 포함되지 않은 기타 요인들
새로운 변수 추가 : BusinessSize
BusinessSize ←fs(us)
IsOnSales ←ft(BusinessSize,ut)
AmountSold ←fy(IsOnSales,BusinessSize,uy)
- "BusinessSize"라는 추가 내생변수를 모델에 추가하려고 함.
- 해당 변수가 어떻게 생성되었는지 수식을 추가 BusinessSize를 모델 외부변수에서 다루지 않도록 ut에서 제외ㅗ
- 두 번째 수식은 isonsale의 원인이 businesssSize와 u ( 모델링하지 않기로 선택한 다른 외부 변수들) 임을 의미. 즉, 대기업이 가격을 할인할 가능성이 높다는 믿음을 수식 표현
- BusinessSize는 isonSale(처치)와 amountsold(결과)의 모두의 공통 원인 즉, 대기업들이 더 많이 판매한다는 생각을 표현한 식
선형 모델 표현
AmountSoldi=a+β1IsOnSalesi+β2BusinessSizei+ei
- a는 상수항으로 모델이 기본적으로 갖는 기준점. 독립 변수들이 모두 0인 상태에서 종속 변수( 판매량 )가 어떤 값을 가지는지를 나타냄
- β₁과 β₂는 변수들의 영향력을 나타내는 계수.
- ei는 모델에 포함되지 않은 외부 요인.
개입
인과모델을 통해 어떤 일이 왜 일어나는지 이해하고, 이를 개선할 수 있는 방법을 찾을 수 있다. 특히, 우리가 특정 변수를 조작했을 때 어떤 결과가 나올지를 예측할 수 있다. 이를 개입(intervention)이라고 함.
- 수학적으로 개입을 do(.)연산자를 활용해 나타낼 수 있음
- T에 개입해 어떤 일이 일어날지를 추론하고 싶다면 do(T=$t_0)로 표현 가능
기댓값
- 평균이 추정하려는 모집단값
- 기댓값은 평균이 추정하려는 모집단의 값
- E[X]는 확률 변수 X의 기댓값
- E[Y∣X=x]는 X=x가 주어졌을 때 Y에 대한 기댓값을 나타냄, 이는 X=x일 때 Y의 평균으로 근사될 수 있음
연관관계와 인과관계의 차이
do 연산자를 통해 다른 이유를 한눈에 알 수 있음
앞서 가격을 할인한 회사의 판매량 기댓값 E[AmountSold|IsOnSales = 1] 이 높으면, 가격을 할인하도록 개입한 경우의 판매량 기댓값 E[AmountSold|do(IsOnSales = 1)] 이 과대 추정될 수 있다고 주장한 바 있다.
이때 첫번째 경우처럼 가격을 할인하기로 결정한 회사는 대기업일 확률이 높다.
반면 E[AmountSold|do(IsOnSales = 1)] 은 모든 회사가 가격을 할인 통재 했을 때 어떤 일이 발생했을지를 나타낸다.
일반적으로 가격을 할인한 회사의 판매량에 대한 조건부 기댓값과 할인하도록 통제한 회사의 판매량에 대한 조건부 기댓값은 다르다는 점
선택(selection)과 개입(intervention)의 차이
- 선택(selection): 할인 여부에 따라 실제로 할인한 회사들의 판매량을 측정.
- 개입(intervention): 모든 회사가 할인하도록 한 후 전체 회사들의 판매량을 측정.
do(.) 연산자는 관측된 데이터에서 직접 얻을 수 없는 인과 추정량(causal quantity)을 정의하는 데 사용. 예를 들어, 실제로 모든 회사가 할인하지 않았기 때문에 do(IsOnSales = 1) 상황을 관측할 수 없다. 따라서, do(.) 연산자는 이론적 개념으로 사용되어 우리가 구하려는 인과 추정량을 명확히 표현다.
식별(Identification)
인과추론은 직접 관측할 수 없는 인과 추정량을 이론적으로 표현하고, 이를 식별하는 과정. 이는 우리가 실제로 개입하지 않고도 인과관계를 이해할 수 있도록 도와줌
개별 처치효과 individual treatment effect(ITE)
- do 연산자를 사용하면 개별 시험 대상 i에 처치가 결과에 미치는 영향인 ITE를 표현 할 수 있다.
- 다음 식과 같이 두 개입의 차이로 나타낼 수 있음
τi=Yi∣do(T=ti)−Yi∣do(T=t0)
즉, 각 실험 대상 i에 대한 처치가 t0에서 ti로 바뀔 떄의 효과 τ는 t0와 비교하여 t1의 결과 차이를 나타냄
이를 사용하여 AmountSold에서 IsOnSales를 0에서 1로 바꿀 때의 효과도 추론할 수 있다.
τi=AmountSoldi∣do(IsOnSales=1)−AmountSoldi∣do(IsOnSales=0)
인과추론의 근본적인 문제 때문에 앞의 식 중 한가지 항에 대해서만 관측
따라서, 이론적으로 해당 식을 표현할 수 있다해도 반드시 데이터에서 이를 찾을 수 있다는 뜻은 아님
잠재적 결과
잠재적 결과는 인과추론에서 중요한 개념으로, 특정 처치(treatment)가 주어졌을 때 결과가 어떻게 될지를 나타낸다. 이를 통해 우리가 실제로 관측할 수 있는 결과와 관측할 수 없는 결과를 구분할 수 있다.
Yti=Yi∣do(Ti=t)
- 이는 '처치가 t인 상태일 때, 실험 대상의 i 결과는 Y가 될 것이다'를 의미
범주가 두 개인 이진 처치(처치 또는 미처치)에 관해 이야기 할 때,
- 처치 받지 않은 실험 대상 i의 잠재적 결과 Y0i
- 처치 받는 동일 대상의 i의 잠재적 결과를 Y1i로 표기
- 관측할 수 있는 한가지 잠재적 결과를 사실적 결과
- 관츨 할 수 없는 다른 한가지 결과를 반사실적 결과
실험대상 i 가 처치 받은 후 어떤 일이 일어나는지 사실적 결과 확인 가능, 반대로 처치 받지 않으면 어떤 일어나는지 알 수 없음 Y0i는 반사실적 결과이므로 관측 할 수 없음
Yi={Y1i,실험대상i 가 처치받은 잠재적 결과Y0i,실험대상i 가 처치받지 않은 잠재적 결과
잠재적 결과를 다음과 같이도 표현 가능
Yi=TiY1i+(1−Ti)Y0i=Y0i+(Y1i−Y0i)Ti
ex)
- AmountSoid0i 는 회사 i가 가격을 할인하지 않았을 경우 판매량
- AmountSoid1i 는 회사 i가 가격을 할인했을 경우 판매량
- 또한 잠재적 결과에 따라 회사 i의 인과 효과를 정의 할 수 있음
τ=Y1i−Y0i
일치성 및 SUTVA (Stable Unit Treatment Value Assumption)
인과추론에서는 두 가지 중요한 가정을 사용합니다. 이 가정들이 지켜지지 않으면 인과관계를 정확하게 추론하기 어렵습니다.
1. 일치성 가정 (Consistency Assumption)
일치성 가정은 특정 처치가 주어졌을 때 그 처치에 대한 잠재적 결과가 실제 결과와 일치해야 한다는 것을 의미.
- 일치성의 의미: Ti=t 일 때, 잠재적 결과 Yi(t)는 실제 결과 Y와 같아야 함
- 예시
- 할인 쿠폰을 받았을 때 매출이 증가하는지 알고 싶다고 합시다. 여기서 처치는 쿠폰을 받았는지 여부입니다. 하지만 여러 번 할인을 시도했다면, 단순히 쿠폰을 받았는지 여부만으로는 정확한 결과를 알 수 없습니다.
- 또 다른 예로, 재무 설계사의 조언이 개인 자산에 미치는 영향을 알고 싶다면, 일회성 상담과 정기적인 조언을 하나로 묶으면 안 됩니다. 각각의 처치를 명확히 정의해야 일치성 가정이 지켜집니다.
2. 상호 간섭 없음 (No Interference) 또는 SUTVA
SUTVA는 한 실험 대상의 처치가 다른 실험 대상의 결과에 영향을 미치지 않아야 한다는 가정
가정 위배 해결 방법
가정이 위배되는 상황에서도 이를 해결할 수 있는 방법들이 있습니다.
- 일치성 가정 위배 해결:
- 분석 시 처치에 대한 모든 버전을 포함하면 됩니다. 예를 들어, 여러 종류의 재무 상담을 각각 다르게 고려하는 것입니다.
- SUTVA 위배 해결:
- 파급 효과를 고려한 모델을 사용하면 됩니다. 처치효과의 정의를 확장하여 다른 대상에서 발생하는 효과를 포함시킵니다.
인과 추정량
- 인과추론의 근본적 문제, 잠재적 결과 중 하나만 관측할 수 있으므로 개별 처치효과를 알 수 없음
- 개별 효과taut를 알 수는 없지만 데이터에서 학습 할 수 있는 세 가지 인과 추정량을 알아보겠다.
평균 처치효과 average treatment effect(ATE)
세 가지 방식으로 정의
1. ATE=E[taui]
2. ATE=E[Y1i−Y0i]
3. ATE=E[Y∣do(T=1)]−E[Y∣do(T=0)]
- 평균 처치효과는 T가 평균적으로 미치는 영향을 나타냄 실험 대상에 따라 더 많거나 더 적은 영향을 받을 수 있지만 개별 대상에 미치는 영향을 알 수 없음
- 데이터에서 ATE를 추정하고 싶다면 기댓값을 표본평균으로 대체 할 수 있음
다음과 같이 나타낼 수 있음
N1i=0∑Nτi
N1i=0∑N(Y1i−Y0i)
물론 인과추론의 근본적인 문제 때문에 각 실험 대상마다 잠재적 결과 중 하나만 관측되므로 실제로 이와 같이 계산 할 수 는 없음
실험군에 대한 평균 처치효과 average treatment effect on the treated(ATT)
ATT=E[Y1i−Y0i∣T=1]
- Y1i 처치 받은 대상의 결과
- Y0i 처치 받지 않았을 경우의 결과
- T = 1 처치 받은 대상들
조건부 평균 처치효과conditional average treatment effect(CATE)
CATE=E[Y1i−Y0i∣X=x]
예를 들어, 이메일 마케팅이 45세 이상의 고객과 45세 미만의 고객에게 미치는 영향을 알고 싶다면, CATE를 사용. 이렇게 하면 특정 연령대의 고객이 마케팅 캠페인에 어떻게 반응하는지 알 수 있다.
CATE45+=E[Y1i−Y0i∣AGE≥45]
CATE<45=E[Y1i−Y0i∣AGE<45]
연속형 처치변수의 인과 추정량
처치변수가 연속형일 때는 차이를 편도함수(partial derivative)로 대체하여 인과 추정량을 정의할 수 있다
∂t∂E[Yi]
- 이는 처치가 조금 증가 할 때 E[Yi]가 얼마나 변화할 것으로 기대하는지를 나타내는 방법
인과 추정량 예시
가격할인 개별 회사에 미치는 영향을 알려면 두 가지 잠재적 결과, AmountSold0i,AmountSold1i를 동시에 확인해야 함
개별 효과 대신, 가격할인이 판매량에 미치는 평균 영향과 같이 추정할 수 있는 항목에 초점을 맞출 수 있다.
| y0 | y1 | t | x | y | te01 |
|---|
| 0 | 200 | 220 | 0 | 0 | 200 | 20 |
| 1 | 120 | 140 | 0 | 0 | 120 | 20 |
| 2 | 300 | 400 | 0 | 1 | 300 | 100 |
| 3 | 450 | 500 | 1 | 0 | 500 | 50 |
| 4 | 600 | 600 | 1 | 0 | 600 | 0 |
| 5 | 600 | 800 | 1 | 1 | 800 | 200 |
- i는 실험 대상
- y는 관측된 결과
- y0,y1은 각각 실험군 및 대조군에 따른 잠재적 결과
- t는 처치 여부
- x는 크리스마스까지의 시간을 표시하는 공변량
- 할인여부는 처치, 판매량은 결과
- 크리스마스 일주일 전에 데이터를 수집 했으며 이는 x = 1로 표시
- ATE (Average Treatment Effect)
- ATE=E[AmountSold1i−AmountSold0i]
- 계산: 모든 회사의 처치 효과 평균
ATE=6(20+20+100+50+0+200)=65
- 이는 가격 할인이 평균적으로 판매량을 65개 증가시킨다는
- ATT (Average Treatment Effect on the Treated)
- ATE=E[AmountSold1i−AmountSold0i∣T=1]
- 계산: 처치를 받은 회사들의 처치 효과 평균
ATT=3(50+0+200)=83.33
이는 가격 할인이 평균적으로 판매량을 83.3개 증가시킨다는 의미
- CATE (Conditional Average Treatment Effect)
- 정의: 특정 조건(x = 1 또는 x = 0)에서의 처치 효과
- 계산
- x = 1 ( 크리스마스 1 주일 전 )
CATEx=1=2(100+200)=150
- x = 1 ( 크리스마스 주간 )
CATEx=0=4(20+20+50+0)=22.5
즉, 회사가 크리스마스 주간에 가격을 할인했을 때(22.5개 증가)보다 크리스마스 1주일 전에 할인했을 때(150개 증가)가 훨씬 더 많은 혜택을 누린 것으로 나타났다. 따라서 가격을 일찍 할인한 매장이 나중에 할인한 매장보다 더 많은 이득을 보았다.
현실 세계의 데이터 분석
- 현실에서는 잠재적 결과 중 하나만 볼 수 있다. 따라서 개별 처치효과를 정확히 파악하기 어렵다.
결측값 문제
- 인과추론에서는 결측값이 있는 데이터를 처리하는 것이 중요. 누락된 잠재적 결과를 대체(impute)해야 함.
예시 데이터
- 다음 표는 실제로 보유한 데이터의 예시. 여기서는 잠재적 결과 중 하나만 관측할 수 있다.
| i | y0 | y1 | t | x | y | te01 |
|---|
| 0 | 1 | 200 | NaN | 0 | 0 | 200 | NaN |
| 1 | 2 | 120 | NaN | 0 | 0 | 120 | NaN |
| 2 | 3 | 300 | NaN | 0 | 1 | 300 | NaN |
| 3 | 4 | NaN | 500 | 1 | 0 | 500 | NaN |
| 4 | 5 | NaN | 600 | 1 | 0 | 600 | NaN |
| 5 | 6 | NaN | 800 | 1 | 1 | 800 | NaN |
이 수치를 보고 ‘확실히 이상적이지는 않지만, 실험군의 평균을 대조군의 평균과 비교하면 안 될까? 즉, ATE = (500 + 600 + 800) / 3 - (200 + 120 + 300) / 3 = 426.67로 하면 안 될까?’라고 생각할 수 있다. 절대로 안 된다.
이렇게 계산하면 인과효과가 과대평. 실제로 할인한 회사는 가격할인과 관계없이 더 많이 판매했을 수 있다.
좋은 정보 얻어갑니다 ^^