콘텐츠로 이동

인과 추론 기초 (Causal Inference)

난이도: 중급~고급
선수 지식: 과적합과 과소적합, 조건부 확률의 개념
관련 문서: ML을 쓰지 말아야 할 때 | 공정성 지표 | 베이지안 ML

핵심 요약: 이 사이트의 여러 페이지가 “ML은 상관관계를 학습할 뿐 인과관계가 아니다”라고 경고한다. 이 페이지는 그 대안을 다룬다. 인과를 알아내는 가장 확실한 방법은 무작위 실험(A/B 테스트)이고, 실험이 불가능할 때는 교란변수를 통제하는 관찰 연구 기법을 쓴다. 핵심 질문은 하나다 — “이것을 바꾸면 저것이 바뀌는가”이다.

  • 상관관계(Correlation): 두 값이 함께 움직인다는 관찰. 예측에는 쓸 수 있다.
  • 인과관계(Causation): 하나를 바꾸면 다른 하나가 바뀐다는 것. 개입 판단에 필요하다.
  • 교란변수(Confounder): 원인과 결과 둘 다에 영향을 주어 가짜 상관을 만드는 제3의 변수.
  • 무작위 배정(Randomization): 처치를 동전 던지기로 정하는 것. 교란변수를 한 번에 제거하는 가장 강력한 도구.
  • 반사실(Counterfactual): “만약 반대로 했다면 어땠을까”. 인과 효과란 실제와 반사실의 차이이며, 한 사람에게서 둘 다 관측할 수는 없다.

머신러닝 모델은 “X가 이러면 Y는 대개 저렇다”를 배운다. 이것은 예측에는 충분하지만 의사결정에는 부족할 때가 많다.

질문필요한 것
”이 고객이 이탈할까?”예측 → ML로 충분
”쿠폰을 주면 이탈이 줄까?”인과 → ML만으로는 알 수 없음
”이 환자는 위험군인가?”예측
”이 약을 쓰면 좋아지는가?”인과

두 번째 유형의 질문에 예측 모델의 답을 그대로 쓰면 심각하게 틀릴 수 있다.

비유: 소방차와 화재 피해의 관계다. 데이터를 보면 소방차가 많이 출동한 화재일수록 피해가 크다. 상관관계는 분명하다. 그러나 “소방차를 줄이면 피해가 준다”는 결론은 명백히 틀렸다. 진짜 원인은 화재 규모이고, 그것이 소방차 수와 피해 둘 다를 키운 것이다 — 이 화재 규모가 교란변수다. ML 모델은 소방차 수로 피해를 예측할 수는 있지만, 소방차를 줄이라고 조언해서는 안 된다.


인과를 데이터로 말하려는 시도는 오래되었지만, 그 방법론이 정립된 것은 20세기다.

  • 1920년대: 로널드 피셔(Ronald Fisher)가 농업 실험에서 무작위 배정을 도입했다. 어느 밭에 어떤 비료를 줄지 제비뽑기로 정하면, 밭의 비옥도 같은 알 수 없는 차이가 두 집단에 고르게 퍼진다는 통찰이었다. 오늘날 A/B 테스트의 직계 조상이다.
  • 1970년대: 도널드 루빈(Donald Rubin)잠재적 결과(potential outcomes) 틀을 세웠다. 각 개인에게 “처치를 받았을 때의 결과”와 “안 받았을 때의 결과”가 둘 다 존재하지만 하나만 관측된다는 관점이다.
  • 1990~2000년대: 주디아 펄(Judea Pearl)인과 그래프와 do-연산자를 도입해, “관찰”과 “개입”을 수학적으로 구분했다. 이 공로로 2011년 튜링상을 받았다.

펄의 핵심 주장은 이것이다 — 데이터만으로는 인과를 알 수 없다. 반드시 인과 구조에 대한 가정을 사람이 세워야 하고, 데이터는 그 가정 위에서만 인과를 말해준다.


1. 심슨의 역설 — 상관관계가 뒤집히는 순간

섹션 제목: “1. 심슨의 역설 — 상관관계가 뒤집히는 순간”

전체에서 보면 A가 좋은데, 모든 그룹에서 보면 B가 좋은 현상이다. 인과 추론이 왜 필요한지 보여주는 가장 유명한 예다.

원인 후보와 결과 둘 다에 영향을 주는 변수다.

교란변수처치,교란변수결과\text{교란변수} \rightarrow \text{처치}, \qquad \text{교란변수} \rightarrow \text{결과}

교란변수를 통제하지 않으면 처치와 결과의 관계가 왜곡된다. 위 소방차 예에서는 화재 규모가, 아래 신장결석 예에서는 결석 크기가 교란변수다.

3. 무작위 실험 — 인과의 황금 표준

섹션 제목: “3. 무작위 실험 — 인과의 황금 표준”

처치를 무작위로 배정하면, 알려진 교란변수뿐 아니라 알지 못하는 교란변수까지 두 집단에 고르게 퍼진다. 그래서 관찰된 차이를 인과 효과로 해석할 수 있다.

이것이 무작위 실험이 강력한 이유다 — 무엇이 교란변수인지 몰라도 된다.

그러나 실험이 불가능한 경우가 많다.

이유예시
윤리적으로 불가”흡연 여부를 무작위 배정”
실행 불가”이 회사를 무작위로 상장시킨다”
너무 비쌈·느림장기 효과를 보는 실험

관찰 데이터에서 인과를 추정하는 기법들이다. 모두 검증 불가능한 가정을 필요로 한다.

기법아이디어핵심 가정
층화·회귀 보정교란변수를 모델에 넣어 통제교란변수를 전부 알고 측정했다
성향점수 매칭처치 확률이 비슷한 사람끼리 짝지어 비교위와 동일
도구변수(IV)처치에만 영향 주고 결과엔 직접 영향 없는 변수 활용그런 변수가 실제로 존재한다
이중차분(DiD)처치 전후 변화를 대조군과 비교처치가 없었다면 두 집단이 평행하게 움직였을 것
회귀 불연속(RDD)임계값 바로 양옆을 비교임계값 근처에서는 거의 무작위

공통된 약점은 “측정하지 못한 교란변수”다. 모든 관찰 연구 기법은 이 위험을 안고 있으며, 그래서 결과를 단정적으로 말하지 않는다.

신장결석 치료법 A와 B를 비교한 실제 연구를 단순화한 것이다.

그룹치료성공/전체성공률
작은 돌A81/8793.1%
작은 돌B234/27086.7%
큰 돌A192/26373.0%
큰 돌B55/8068.8%

두 그룹 모두에서 A가 이긴다. 그런데 전체로 합치면?

치료성공/전체성공률
A273/35078.0%
B289/35082.6%

전체로는 B가 이긴다. 이것이 심슨의 역설이다.

왜 이런 일이? 표를 다시 보라.

  • A는 큰 돌(어려운 환자) 263명, 작은 돌 87명 — 중증에 몰려 있다
  • B는 작은 돌 270명, 큰 돌 80명 — 쉬운 환자에 몰려 있다

“치료법 선택”과 “결석 크기”가 얽혀 있다. 의사들이 큰 돌에는 A를, 작은 돌에는 B를 주는 경향이 있었기 때문이다. 결석 크기가 교란변수다.

어느 쪽이 맞는 답인가? 그룹별 결과다. 환자가 “나는 큰 돌인데 뭘 받아야 하나?”라고 물으면 답은 A다. 전체 78% vs 82.6%는 치료 효과가 아니라 환자 구성의 차이를 반영한 숫자다.


예측 모델을 개입 판단에 쓰면 안 되는 이유

섹션 제목: “예측 모델을 개입 판단에 쓰면 안 되는 이유”

병원 데이터로 학습한 모델이 “천식 환자는 폐렴 사망률이 낮다”고 학습한 유명한 사례가 있다. 데이터상으로는 사실이었다.

이유는 천식 환자는 폐렴에 걸리면 곧바로 중환자실로 보내졌기 때문이다. 즉 낮은 사망률은 천식 때문이 아니라 더 공격적인 치료 때문이었다.

이 모델을 예측에 쓰면 문제없다(“이 환자군은 실제로 사망률이 낮다”). 그러나 “천식 환자는 덜 위험하니 일반 병실로”라는 개입 판단에 쓰면 사람이 죽는다.

모델이 학습한 패턴은 “현재의 치료 관행이 유지될 때”만 성립한다. 관행을 바꾸는 순간 그 패턴은 깨진다.


질문 유형접근
”누가 이탈할까” (예측)일반 ML
”쿠폰을 주면 이탈이 줄까” (인과)A/B 테스트 우선
A/B가 윤리·비용상 불가관찰 연구 기법 + 강한 가정 명시
정책 변경 전후 효과이중차분(DiD)
임계값 기준 제도(장학금 컷오프 등)회귀 불연속(RDD)

가능하면 언제나 실험이 먼저다. 관찰 연구는 실험이 불가능할 때의 차선책이며, 결론의 확실성이 근본적으로 낮다.


”추천을 많이 본 사용자가 더 많이 산다”

섹션 제목: “”추천을 많이 본 사용자가 더 많이 산다””

한 이커머스 팀이 데이터를 분석해 추천 상품을 많이 클릭한 사용자의 구매액이 3.2배 높다는 것을 발견했다. 결론은 “추천 노출을 늘리자”였고, 홈 화면의 추천 영역을 두 배로 키웠다.

3개월 뒤 구매액에는 유의미한 변화가 없었다. 오히려 일부 지표는 나빠졌다.

원인은 인과의 방향이었다. 애초에 구매 의향이 높은 사용자가 상품을 더 많이 둘러보고, 그 과정에서 추천도 더 많이 클릭했던 것이다. 즉 “추천 클릭 → 구매”가 아니라 “구매 의향 → 추천 클릭”이었고, 구매 의향이 교란변수였다.

팀이 뒤늦게 진행한 A/B 테스트 결과 추천 영역 확대의 실제 효과는 구매액 +1.4%였다. 관찰 데이터가 시사한 3.2배와는 비교할 수 없는 수준이었다.

교훈: 관찰된 상관이 클수록 인과처럼 보이지만, 크기는 인과의 증거가 아니다. 개입을 결정하기 전에는 실험을 하라 — 그것이 훨씬 싸다.


import numpy as np
# 심슨의 역설: 전체에서는 B가 좋아 보이는데 그룹별로 보면 A가 좋다
data = [ # (그룹, 치료, 성공, 전체)
("작은 돌", "A", 81, 87), ("작은 돌", "B", 234, 270),
("큰 돌", "A", 192, 263), ("큰 돌", "B", 55, 80),
]
print(f"{'그룹':>6} {'치료':>4} {'성공률':>8}")
for g,t,s,n in data:
print(f"{g:>6} {t:>4} {s/n:>8.1%}")
for t in ("A","B"):
s = sum(x[2] for x in data if x[1]==t); n = sum(x[3] for x in data if x[1]==t)
print(f"\n전체 {t}: {s}/{n} = {s/n:.1%}")
# 무작위 배정이면 이 문제가 사라진다
rng = np.random.default_rng(0)
N = 20000
severity = rng.random(N) < 0.5 # 중증 여부
treat = rng.random(N) < 0.5 # 무작위 배정 (중증과 무관)
success = rng.random(N) < np.where(severity, 0.6, 0.9) + np.where(treat, 0.05, 0.0)
for t,label in [(True,"A"),(False,"B")]:
m = treat==t
print(f"무작위 배정 후 {label}: {success[m].mean():.3f}")
# 실행 결과:
# 그룹 치료 성공률
# 작은 돌 A 93.1%
# 작은 돌 B 86.7%
# 큰 돌 A 73.0%
# 큰 돌 B 68.8%
#
# 전체 A: 273/350 = 78.0%
# 전체 B: 289/350 = 82.6%
#
# 무작위 배정 후 A: 0.803
# 무작위 배정 후 B: 0.748

위쪽 표에서 A는 두 그룹 모두에서 이기는데 전체로는 진다. 숫자가 틀린 것이 아니라, A에 중증 환자가 몰려 있어서 생기는 착시다.

아래쪽이 해법을 보여준다. 처치를 무작위로 배정하면 중증 환자가 두 집단에 고르게 퍼지므로, 관찰된 차이(0.803 vs 0.748)를 치료 효과로 해석할 수 있다. 코드에서 treatseverity와 완전히 독립적으로 생성된 것이 핵심이다.

이것이 A/B 테스트가 인과의 황금 표준인 이유다 — 무엇이 교란변수인지 몰라도 무작위 배정이 알아서 처리해 준다.


  1. “상관계수가 크면 인과관계다” — 크기는 인과의 증거가 전혀 아니다. 교란변수가 강할수록 가짜 상관도 커진다.

  2. “변수를 많이 넣어 통제하면 인과를 알 수 있다”측정하지 못한 교란변수는 통제할 수 없다. 게다가 충돌 변수(collider)를 통제하면 오히려 없던 상관이 생긴다.

  3. “예측 성능이 좋으니 이 변수가 원인이다” — 예측력과 인과는 별개다. 소방차 수는 화재 피해를 잘 예측하지만 원인이 아니다.

  4. “A/B 테스트 결과가 유의하니 효과가 크다”통계적 유의성 ≠ 실질적 크기다. 표본이 크면 아주 작은 차이도 유의해진다. 효과 크기를 함께 봐야 한다.

  5. “인과 추론 기법을 쓰면 실험 없이도 인과를 알 수 있다” — 모든 관찰 연구 기법은 검증 불가능한 가정에 기대며, 그 가정이 틀리면 결론도 틀린다. 실험이 가능하면 실험이 먼저다.


1. “아이스크림 판매량과 익사 사고가 함께 늘어난다”에서 교란변수는 무엇인가?

정답 보기

기온(계절)이다. 더우면 아이스크림도 많이 팔리고 물놀이도 많아진다. 기온이 둘 다에 영향을 주므로 교란변수이며, 아이스크림과 익사 사이에는 인과가 없다. 예측에는 쓸 수 있지만 “아이스크림을 줄이면 익사가 준다”는 판단에는 쓸 수 없다.

2. 심슨의 역설에서 그룹별 결과와 전체 결과가 다를 때, 어느 쪽을 믿어야 하는가?

정답 보기

교란변수가 있다면 그룹별 결과다. 신장결석 예에서 전체 수치는 “치료 효과”가 아니라 환자 구성의 차이를 반영한다. 다만 항상 그런 것은 아니며, 인과 구조에 대한 가정(무엇이 원인이고 무엇이 결과인지)에 따라 달라진다 — 그래서 데이터만으로는 판단할 수 없다.

3. 무작위 배정이 강력한 이유를 한 문장으로 말하면?

정답 보기

무엇이 교란변수인지 몰라도 된다는 것이다. 무작위 배정은 알려진 교란변수뿐 아니라 알지 못하고 측정하지도 못한 교란변수까지 두 집단에 고르게 퍼뜨린다. 모든 관찰 연구 기법이 갖지 못하는 성질이다.