본문 바로가기
C.W.K.
Stream
Lesson 05 of 05 · published

Causality 한계

~24 min · causality, limits

Level 0Scout
0 XP0/48 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

예측은 세상이 그대로일 때를 묻는다

관찰 자료로 학습한 모델은 현재와 비슷한 조건에서 어떤 결과가 일어날 가능성이 큰지 답해. 하지만 ‘특성 X를 우리가 바꾸면 결과가 얼마나 달라질까?’라는 개입 질문에는 자동으로 답하지 못해. 예측에 유용한 변수와 결과를 일으키는 원인은 다를 수 있어. 이 경계를 넘으면 높은 정확도가 나쁜 정책으로 이어져.

공통 원인이 가짜 행동 신호를 만든다

최근 상담 건수가 해지를 잘 예측한다고 상담 접수를 막아도 해지가 줄지 않을 수 있어. 숨은 불만이 상담과 해지를 모두 늘렸기 때문일 수 있지. 상담 건수는 불만의 표지이지 원인이 아닐 수 있어. 모델은 관찰된 관계를 이용하지만 어떤 화살표가 원인인지 구분하지 않아.

결과의 흔적을 원인으로 착각하기도 해

로그인 횟수가 유지 고객에게 많다고 억지 알림으로 로그인을 늘린다고 충성도가 생기는 건 아니야. 유지 의향이 로그인과 장기 사용을 함께 만들 수 있어. 할인 사용자가 충성 고객처럼 보여도 원래 살 사람이 할인도 잘 쓰는 선택 편향일 수 있고, 모두에게 할인을 주면 오히려 정상 가격 구매를 줄일 수 있어.

인과 그림으로 가정을 밖에 꺼내

행동하려는 특성, 결과, 둘에 영향을 줄 수 있는 공통 원인을 노드와 화살표로 그려. 무엇을 측정했고 무엇을 빠뜨렸는지, 개입 뒤 어떤 경로가 새로 생길지 팀이 토론할 수 있어. 그림이 인과를 증명하진 않지만 모델 계수를 원인처럼 읽는 실수를 드러내고 필요한 자료와 실험을 정하게 해.

가능하면 무작위 실험으로 확인해

‘이 행동을 해야 하나?’가 질문이라면 A/B 시험처럼 대상을 무작위로 나누어 개입 효과를 측정하는 게 가장 직접적이야. 사전 지표와 안전 지표, 표본 수, 중단 조건을 정하고 처리 효과와 불확실성을 보고해. 예측 모델은 위험이 높은 대상을 찾는 데 도움을 줄 수 있지만 효과 증명은 대조군이 해.

실험이 어려울 때는 더 강한 가정이 필요해

차분의 차분, 도구변수, 성향점수 같은 관찰 인과 방법을 쓸 수 있지만 각각 평행 추세, 배제 제약, 관측된 교란 충분성 같은 검증하기 어려운 가정을 요구해. 알고리즘 이름이 가정을 없애주지 않아. 분석 문서에 식별 가정과 위반 가능성, 민감도 분석을 명시해야 해.

업리프트는 누구에게 효과가 큰지 묻는다

기본 해지 확률이 가장 높은 고객이 반드시 쿠폰에 가장 잘 반응하는 고객은 아니야. 아무 행동 없이도 남거나 어떤 행동에도 떠날 수 있지. 업리프트 모델은 처리와 비처리 사이 결과 차이가 큰 대상을 찾으려 해. 무작위 처리 자료와 처리 여부, 결과가 필요하며 일반 위험 점수를 업리프트처럼 쓰면 안 돼.

예측과 정책 평가를 분리해 기록해

모델 점수, 배정된 행동, 실제로 받은 행동, 결과를 따로 남겨야 효과를 분석할 수 있어. 정책이 점수에 따라 행동을 바꾸면 이후 관찰 자료 자체가 선택 편향을 품게 돼. 일부 탐색 집단이나 무작위 대조를 유지하고, 성능 지표와 인과 효과 지표를 서로 다른 결과로 보고해.

Code

업리프트 문제 정의: 결과가 아니라 개입 효과 예측·python
# Two-model uplift: train one model on treated, one on untreated
from lightgbm import LGBMClassifier

treated = LGBMClassifier().fit(X[treatment == 1], y[treatment == 1])
control = LGBMClassifier().fit(X[treatment == 0], y[treatment == 0])
uplift = treated.predict_proba(X)[:, 1] - control.predict_proba(X)[:, 1]
# Target users with the highest uplift, not the highest baseline probability
인과 가정 점검을 위한 DoWhy·python
import dowhy
from dowhy import CausalModel

model = CausalModel(
    data=df, treatment="discount_used",
    outcome="renewed", common_causes=["plan_tier", "tenure_days"]
)
estimand = model.identify_effect()
estimate = model.estimate_effect(estimand, method_name="backdoor.linear_regression")
print(estimate)

External links

Exercise

팀이 바꾸려는 특성 하나를 골라 인과 그림을 그려. 그 특성의 원인, 결과의 원인, 둘의 공통 원인, 개입 뒤 생길 경로를 표시하고 행동 전에 A/B 시험이 필요한지와 측정할 효과를 정해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.