Causal Inference: Question of Why?

2026. 5. 11. 19:45·Data Science/Econometrics

 

 

본 포스팅은 2023. 4. 10. 게시된 Youtube - 김성범 [교수/산업경영공학부] - [Open DMQA Seminar] Causal Inference의 lecture note를 다룹니다.

https://www.youtube.com/watch?v=mxRhFYrQROU

 


 

 

인과관계, 인과관계와 상관관계는 다른 포스팅에서 충분히 다루고 있으므로 간략히 넘어가겠습니다.

인과관계란?

어떤 사건이 다른 사건의 원인이 되었다고 추론하는 것 (원인과 결과 관계)

 

 

상관관계와 인과관계

상관관계는 인과관계를 의미하지 않음

  • 상관관계 (Correlation): 통계적 변수와 다른 통계적 변수들이 공변(covariance)하는 관계 => 예측 목적
  • 인과관계 (Causality): 선행하는 한 변수가 후행하는 다른 변수의 원인이 되고 있다고 믿어지는 관계 => 원인 설명 목적

 

AI: 상관관계를 학습하는데 용이함

AI는 데이터의 상관관계 패턴을 학습함

  • Input(X)와 Output(Y)간 상관관계를 학습하고 이에 기반하여 예측, 분류 등 task 수행
  • 외부 환경에 따른 데이터의 변화나 패턴 변화가 적은 분야에서는 성능이 뛰어남 (NLP, Vision, Collaboration Filtering)
  • 그러나 왜? 분류, 예측, 추천의 결과가 나왔는지에 대해서는 궁극적으로 설명하지 못함

 

XAI로도 인과관계는 알 수 없음

SHAP 등 방법론도 인과관계를 알려주지는 않음

 

예) 실제 인과 그래프

"관측되는 변수"와 "관측불가 변수"가 존재

우리가 예측하려는 타겟(Y)에 대해 "관측 가능한 변수"만 활용해서 예측 모델을 만듦

 

출처: https://www.youtube.com/watch?v=mxRhFYrQROU

 

 

 

SHAP 변수 중요도 vs. 실제 인과 효과 (True Causal Effects)

SHAP Value를 scatter plot으로 표현한 결과와 EconML 패키지 기반 실제 인과관계 분석 결과 비교

실제 인과 결과와 상이한 결과를 보여줌 ->XAI 불충분

 

 

 

인과관계 분석 방법

크게 3가지로 나뉨

  • Randomization (랜덤화 추출)
  • Causal Graphical Models (인과 그래프 모형)
  • Potential Outcome (잠재적 결과)

 

 

1. 인과관계 분석 방법1: Randomization

1.1. Randomized Clinical Test (무작위 임상 실험)

A/B tes 라고도 불림

측정하고자 하는 변수 이외에는 모든 것들을 최대한 고정하고, 확인하고 싶은 변수만 변경하면서 실험하는 방법 -> 실험 기반

무작위 배정으로 평균적인 효과를 측정할 수 있음

 

 

 

무작위 임상 실험의 결과는 통계적으로 유의한지 반 드 시 검정해야 함

 

 

 

1.2. Multi-Armed Bandit (MAB)

 

Bandit Machine은 카지노 슬롯 머신을 의미, 당첨 확률이 모두 다름

MAB 알고리즘은 Bendit Machine을 여러개 활용해서 수익률을 극대화하는 방법론

A/B test는 탐색-수확 Trade off가 존재 -> MAB은 강화학습 기반으로 탐색과 활용을 최적화하여 수익률을 극대화!

 

  • 탐색 (Exploration) 관점
    • "계속 잘 나오는 애만 돌릴까?"
    • 모든 Bandit Machine 계속 당겨보자 (A가 더 좋아보이는데 혹시 모르니 B도 테스트) -> 예상대로 A가 좋았다? -> 비용 발생
  • 활용 (Exploitation) 관점
    • "아직 덜 돌린 애를 실험해볼까?"
    • 모든 Bandit Machine을 한 두번만 당겨보고 가장 수익률이 높은 머신을 선택 -> 신뢰성 문제 -> 만약 테스트를 오래하면?

=> A/B test에서는 탐색과 활용 간 Trade-off 가 발생함

 

2. 인과관계 분석 방법: Randomization

 

 

  • Greedy 알고리즘: 모든 액션을 한 번씩 해보고, 가장 높은 리워드를 주는 액션 선택
  • Epsilon Greddy 알고리즘: E(엡실론)을 하이퍼파라미터로 사용. 1-E 만큼은 Greedy 알고리즘 함수를 사용, E 만큼은 랜덤한 액션을 선택
    • 탐색이 너무 랜덤하고, 의미없는 선택도 자꾸 시도할 수 있음
  • Upper Confidence Bound (UCB) 알고리즘: 일종의 신뢰구간 설정 방법
    • N_t(a)는 현재 시점까지 행동 a를 한 횟수 (아래 식에서는 N_i)
    • 탐험하지 않은 행동에 가중치 부여

 

  • 평균 보상 (x bar i)는 평균 보상이 높을수록 점수를 올리는 역할, 즉 exploitation 역할 => "지금까지 얼마나 잘 했는가?"
  • 불확실성 보너스 -> "아직 잘 모르는 선택지는 혹시 좋을수도 있으니까 추가 점수를 주자"
    • 많이 안 뽑아본 선택: N_i 작음 -> 분모이므로 수치 커짐 -> 보너스 큼 -> 탐색 유도
    • 많이 실험한 선택: N_i 큼 -> 분모이므로 수치 작아짐 -> 보너스 작아짐 -> 평균 성능 중심으로 이동

 

=> A/B test는 독립적인 실험 진행하고, 한 번 최적의 결과가 나오면 그 버전을 쭉 선택해서 사용

MAB는 시점마다 액션 비중을 다양하게 조절해가면서 최적의 결과를 도출

 

 

2. 인과관계 분석 방법2: Causal Graphical Models (인과그래프 모형)

2.1. Directed Acyclic Graphs (DAG)

Randomization은 평균 인과 효과만을 확인할 수 있음 (어떤 사람들에게 더 효과적인지 세부적인 정보 확인 어려움)

인과 그래프 모형은 인과 그래프를 DAG라는 그래프로 표현하는 방식! -> 명확한 인과관계 파악 가능

그래프 구조와 확률 정보로 구성되어 있어 Baysian Network라고도 불림

변수들의 결합확률 분포를 그래프로 나타내므로, 딥러닝과 달리 조건부 확률이 투명하게 공개되므로 "White-Box Model"

  • G = Directed Acyclic Graphs (DAG) -> "누가 누구에게 영향?"
  • Theta = 조건부 확률(conditional probability)의 집합 -> "얼마나 영향?"

 

방향은 있고 (Directed), 순환성은 없는 (Acyclic) 그래프를 의미 

예) A->B로 가지 B->A로는 안 감. 한 가지 방향으로 흐름

 

 

 

 

원래 방식인 P(X1,X2,…,Xn) 처럼 여러 노드들의 관계를 한번에 다루면 결합확률 계산이 매우 어려워짐

DAG 구조를 이용하면, 원인 → 결과 관계로 나눌 수 있음

P(X1,X2,X3)=P(X1)P(X2∣X1)P(X3∣X2)

 

원래는 P(X3|X1, X2)가 될텐데, DAG에서 X1 → X2 → X3 관계가 이뤄지므로 X1은 X3에게 영향을 미치지 못함.

그러므로 P(X3|X2)가 됨

즉, 직계 부모만 보면 되는 것 (Π Xi : 직계 부모의 집합)
"모든 변수의 조건부 확률을 구한 다음, n개에 대하여 전부 곱함"

 

 

 

3. 인과관계 분석 방법3: Potential Outcome (잠재적 결과)

인과관계는 모든 결과를 관측할 수 없는 근본적인 한계가 존재 (현실에서는 시간을 돌릴 수 없다)

관측되지 않은 "가상의 결과"를 고려해서 처리 효과를 계산하는 방식 -> "이렇게 했다면 어땠을까?"

  • Treatment Effect (처리 효과) τ = Y(1) - Y(0)

반사실 (Counterfactual)을 추정하여 인과효과를 추정하는 기술!

 

 

대학원 진학했을 때 연봉이 있고, 진학하지 않았을 때 연봉이 있다.

진학했으면 진학하지 않았을 때 연봉을 모른다. 반대도 마찬가지.

그럼 머신러닝으로 예측값을 구해서 처리효과를 확인해보자!

각 처리효과를 모두 합쳐 평균을 구한다면? ATE (평균적인 효과)

 

Simpsons Paradox: 각 변수를 고려하지 않고 전체 통계 결과를 유추하다가 발생하는 오류

교란변수 (Confounder): 처리(Treatment)와 결과(Y)에 모두 영향을 주는 변수임

ATE는 교란변수를 관측할 수 없음

CATE (Conditional ATE): 교란변수까지 관측 가능

CATE: "특성 X = x를 가진 사람의 평균 Treatment effect"

 

 

 

 

 

3.1. Machine Learning-based CATE 추정 방법

Metalearners for estimating heterogeneous treatment effects using machine learning

기존 ML 모델(Random Forest, XGBoost, Neural Net 등)을 활용해서 treatment effect (CATE)를 추정하는 프레임워크

Causal Model 자체라기보다, ML 기반 인과추론 전략에 가까움

  • T-Learner: treatment/control 모델 따로 학습
  • S-Learner: 하나의 모델에 Treatment 변수 포함
  • X-Learner: treatment effect 자체를 다시 학습

 

(1) T - Learner

 

가장 직관적이며, 두 개의 모델을 사용하므로 T (Two) Learner이다.

단점은 데이터 불균형에 엄청 약함

 

 

 

 

(2) S-Learner

“treatment 여부를 포함한 하나의 세계 모델을 만든 뒤, treatment 값을 바꿔 넣어 counterfactual 차이를 계산”

 

한 개의 모델을 사용하므로 S (Single) Learner이다.

같은 사람에 대하여, T = 1을 넣고 T = 0을 넣어서 결과 차이를 계산함

단점은? 모델이 outcome prediction만 잘하려고 해서, Treatment variable을 무시할 수 있음

 

(3) X - Learner

“CATE 자체를 직접 학습하자”

 

X (Cross) - Learner

  1. T-Learner처럼 처리를 받은 객체와 처리를 받지 않은 객체를 나누어 First Stage (광고 본 사람 예측기, 광고 안 본 사람 예측기)
  2. 이 모델의 예측값을 다시 Counterfactual로 사용하여 X와 차이를 학습 -> CATE 0, CATE 1
  3. 마지막으로 CATE를 가중평균 g(x)를 곱하여 CATE Final 계산
  4. T-Learner가 가지고 있는 대상군, 대조군 사이의 데이터 양의 차이를 해결함

 

T-Learner는 모델 두 개의 예측 성능이 좋아야 그 예측 값 간 차이도 잘 나옴. 하지만 우리 관심은 outcome이 아니라 Effect 자체임.

그러므로 관측되지 않은 outcome을 예측해서 treatment effect를 근사하는 접근을 제안함

  • Y(1): treatment 받았을 때 결과 => 사람 A
    • First Stage에서 M1 예측기 개발
    • 처치했을 때 결과 존재
    • 처치 안했다면? 학습한 M0 (Control Model 예측기) 가져와서 추정해보자
  • Y(0): treatment 안 받았을 때 결과 => 사람 B
    • First Stage에서 M0 예측기 개발
    • 처치하지 않았을 때 결과 존재
    • 처치 했다면? 학습한 M1 (Treatment Model 예측기) 가져와서 추정해보자

 

 

 

3.2. Neural Net-based CATE 추정 방법

Estimating individual treatment effect: generalization bounds and algorithms

“counterfactual을 직접 관측할 수 없으니, treatment/control이 비슷한 representation 공간을 만들자”
  • 기존 T/X/S-Learner 한계: treatment, control를 분리해서 학습함
    • 문제는? 두 집단 분포가 다를 수 있음 => 예) treatment는 젊은 사람이 많고, control는 고령층이 많다면?
    • "광고 효과" 차이일까? "연령" 차이일까? => covariate imbalance 문제
  • TARNet: Treatment-Agnostic Representation Network (기본 모델)
    • Shared Representation Learner 존재 -> 원래 feature를 neural network가 압축 표현으로 변환함
    • 두 개의 Head: Neural Network의 representation layer를 공유하며 학습, control/treatment 집단의 결과를 예측함
  • CFRNet은 TARNet에 Regularization (IPM) 제약식 추가한 버전임. treatment group과 control group의 데이터 양, 분포 차이를 최소화하기 위함

 

 

인과관계 분석 도구

Causal ML (Uber)

EconML (Microsoft)

패키지가 많이 쓰이고 있음

 

 

저작자표시 비영리 동일조건 (새창열림)

'Data Science > Econometrics' 카테고리의 다른 글

[Econometrics, 계량경제학] SUTVA & ATU, ATE, ATT  (0) 2025.11.30
[Econometrics, 계량경제학] 고정 효과(Fixed Effect) 사례 분석  (3) 2024.10.29
[Econometrics, 계량경제학] 데이터 구조와 고정 효과(Fixed Effect)  (0) 2024.10.28
[Econometrics, 계량경제학] OLS와 BLUE  (1) 2023.11.21
[Econometrics, 계량경제학] RDD(불연속 회귀 설계)  (0) 2023.09.17
'Data Science/Econometrics' 카테고리의 다른 글
  • [Econometrics, 계량경제학] SUTVA & ATU, ATE, ATT
  • [Econometrics, 계량경제학] 고정 효과(Fixed Effect) 사례 분석
  • [Econometrics, 계량경제학] 데이터 구조와 고정 효과(Fixed Effect)
  • [Econometrics, 계량경제학] OLS와 BLUE
희스레저
희스레저
👩🏻‍🎓 Master Student in IS(Information System) 📚 Data Science & Causal Inference Study 🎬 Hobby
  • 희스레저
    Data Dive
    희스레저
  • 전체
    오늘
    어제
    • 분류 전체보기 (54)
      • 일상 log (4)
        • 브이로그 아카이브 (0)
        • note (3)
      • 리뷰 (1)
        • 영화 (1)
        • OTT (0)
      • Data Science (40)
        • ML (6)
        • DL (4)
        • LLM (5)
        • Econometrics (7)
        • coding pratice (9)
        • kaggle study (1)
        • Python 기초 (4)
        • CS231n (1)
        • Paper (3)
      • Idea (8)
        • 분야 탐방 (5)
        • 대학원준비 (2)
        • book blogging (1)
        • 취업준비 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 블로그
    • Write
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    promptengineering
    계량경제학
    놈코어커피
    모두연
    Econometrics
    fixed effects
    계량경제
    생성형AI
    GenAI
    불연속회귀
    panel data
    카누추천
    모두의연구소
    영화소울
    모두콘
    계량경제테스트
    소울후기
    고정효과
    fixed effect
    모두콘2023
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
희스레저
Causal Inference: Question of Why?
상단으로

티스토리툴바