|
15 | 15 | "\n", |
16 | 16 | "처치가 연속형이라면 $E[\\delta Y_i(t)|X]$입니다. 다시 말해 각 대상이 처치에 얼마나 민감한지 알고 싶은 것입니다. 이런 정보는 모두에게 처치를 줄 수 없어서 우선순위를 정해야 할 때 아주 유용합니다. 할인을 주고 싶은데 예산이 한정된 경우가 좋은 예입니다.\n", |
17 | 17 | "\n", |
18 | | - "앞 장에서는 결과변수 $Y$를 변환해서 예측 모델에 그대로 넣고 조건부 평균 처치효과(CATE) 추정값을 얻는 방법을 살펴봤습니다. 그 대가로 분산이 커지는 것을 감수해야 했습니다. 데이터 과학에서는 이런 일이 흔합니다. 방법마다 장단점이 있어서 하나만 고를 수 있는 최선의 방법은 없습니다. 그래서 여러 기법을 알아 두었다가 상황에 따라 장단점을 따져 골라 쓰는 것이 좋습니다. 이 장도 그런 취지로, 손에 쥘 수 있는 도구를 더 늘리는 데 집중합니다.\n", |
| 18 | + "앞 장에서는 결과변수 $Y$를 변환해서 예측 모델에 그대로 넣고 조건부 평균 처치효과(CATE) 추정값을 얻는 방법을 살펴봤습니다. 그 대가로 분산이 커지는 것을 감수해야 했습니다. 데이터 과학에서는 이런 일이 흔합니다. 방법마다 장단점이 있어서 어느 하나가 늘 최선일 수는 없습니다. 그래서 여러 기법을 알아 두었다가 상황에 따라 장단점을 따져 골라 쓰는 것이 좋습니다. 이 장도 그런 취지로, 손에 쥘 수 있는 도구를 더 늘리는 데 집중합니다.\n", |
19 | 19 | "\n", |
20 | 20 | "\n", |
21 | 21 | "\n", |
22 | | - "메타러너(meta-learner)는 시중에 나와 있는 예측용 머신러닝 기법을 가져다가, 지금까지 다뤄 온 바로 그 문제, 즉 CATE 추정을 푸는 간단한 방법입니다. 이번에도 어느 하나가 최선은 아니며 저마다 약점이 있습니다.\n", |
23 | | - "하나씩 살펴보겠지만 이 내용은 상황에 크게 좌우된다는 점을 기억해 두세요. 게다가 메타러너는 선형회귀나 부스팅 의사결정 트리부터 신경망, 가우시안 프로세스까지 다양한 예측용 머신러닝 모델을 부품으로 씁니다. 따라서 메타러너의 성패는 어떤 머신러닝 기법을 구성 요소로 쓰느냐에도 크게 달려 있습니다. 결국 여러 가지를 직접 시도해 보고 무엇이 가장 잘 맞는지 확인해야 하는 경우가 많습니다." |
| 22 | + "메타러너(meta-learner)는 이미 나와 있는 예측용 머신러닝 기법을 그대로 가져다가 지금까지 다뤄 온 문제, 즉 CATE 추정을 푸는 간단한 방법입니다. 이번에도 어느 하나가 최선은 아니며 저마다 약점이 있습니다.\n", |
| 23 | + "하나씩 살펴보겠지만, 어느 것이 잘 통하는지는 상황에 크게 좌우된다는 점을 기억해 두세요. 게다가 메타러너는 선형회귀나 부스팅 의사결정 트리부터 신경망, 가우시안 프로세스까지 다양한 예측용 머신러닝 모델을 부품으로 씁니다. 따라서 메타러너의 성패는 어떤 머신러닝 기법을 구성 요소로 쓰느냐에도 크게 달려 있습니다. 결국 여러 가지를 직접 시도해 보고 무엇이 가장 잘 맞는지 확인해야 하는 경우가 많습니다." |
24 | 24 | ] |
25 | 25 | }, |
26 | 26 | { |
|
201 | 201 | "source": [ |
202 | 202 | "## S 러너(일명 '일단 달리고 보는' 러너)\n", |
203 | 203 | "\n", |
204 | | - "첫 번째로 쓸 러너는 S 러너(S-learner)입니다. 생각할 수 있는 가장 단순한 러너입니다. 머신러닝 모델 하나(single, 그래서 S입니다) $M_s$로 다음을 추정합니다.\n", |
| 204 | + "첫 번째로 쓸 러너는 생각할 수 있는 가장 단순한 러너인 S 러너(S-learner)입니다. 머신러닝 모델 하나(single, 그래서 S입니다) $M_s$로 다음을 추정합니다.\n", |
205 | 205 | "\n", |
206 | 206 | "$\n", |
207 | 207 | "\\mu(x) = E[Y| T, X]\n", |
|
328 | 328 | "\n", |
329 | 329 | "이 그림은 실제 인과효과(빨간 윤곽선)와 S 러너로 추정한 인과효과의 차이 $\\tau - \\hat{\\tau}$를 나타냅니다. 추정된 인과효과가 심하게 편향되어 있습니다.\n", |
330 | 330 | "\n", |
331 | | - "더 나쁜 경우도 있습니다. 결과를 설명하는 데 다른 공변량이 하는 역할에 비해 처치의 영향이 아주 약하면, S 러너는 처치변수를 아예 버릴 수도 있습니다. 이 문제는 어떤 머신러닝 모델을 쓰느냐와 밀접하게 관련됩니다. 정규화가 강할수록 문제도 커집니다. 이 문제를 바로잡으려는 시도가 다음에 볼 러너입니다." |
| 331 | + "더 나쁜 경우도 있습니다. 결과를 설명하는 데 다른 공변량이 하는 역할에 비해 처치의 영향이 아주 약하면, S 러너는 처치변수를 아예 버릴 수도 있습니다. 이는 어떤 머신러닝 모델을 쓰느냐와 밀접하게 관련됩니다. 정규화가 강할수록 문제도 커집니다. 다음에 볼 러너가 이 문제를 바로잡으려는 시도입니다." |
332 | 332 | ] |
333 | 333 | }, |
334 | 334 | { |
|
337 | 337 | "source": [ |
338 | 338 | "## T 러너\n", |
339 | 339 | "\n", |
340 | | - "T 러너(T-learner)는 러너가 처치를 기준으로 먼저 데이터를 나누도록 강제해서 처치를 통째로 버리는 문제를 해결하려고 합니다. 모델 하나를 쓰는 대신 처치변수의 값마다 모델을 하나씩 씁니다. 처치가 이진이면 추정할 모델은 두 개뿐입니다(그래서 이름이 T입니다).\n", |
| 340 | + "T 러너(T-learner)는 처치를 통째로 버리는 문제를 풀려고, 처치를 기준으로 데이터를 먼저 나누도록 강제합니다. 모델 하나를 쓰는 대신 처치변수의 값마다 모델을 하나씩 씁니다. 처치가 이진이면 추정할 모델은 두 개뿐입니다(그래서 이름이 T입니다).\n", |
341 | 341 | "\n", |
342 | 342 | "$\n", |
343 | 343 | "\\mu_0(x) = E[Y| T=0, X]\n", |
|
347 | 347 | "\\mu_1(x) = E[Y| T=1, X]\n", |
348 | 348 | "$\n", |
349 | 349 | "\n", |
350 | | - "그러고 나서 예측할 때 각 처치 조건에서의 반사실 예측을 구하고, 다음과 같이 CATE를 계산합니다.\n", |
| 350 | + "예측 단계에서는 처치 조건마다 반사실 예측값을 구하고, 다음과 같이 CATE를 계산합니다.\n", |
351 | 351 | "\n", |
352 | 352 | "$\n", |
353 | 353 | "\\hat{\\tau}(x)_i = M_1(X_i) - M_0(X_i)\n", |
|
425 | 425 | "cell_type": "markdown", |
426 | 426 | "metadata": {}, |
427 | 427 | "source": [ |
428 | | - "T 러너도 이 데이터셋에서 괜찮은 성능을 보입니다. 테스트 성능은 S 러너와 크게 다르지 않습니다. 처치가 그렇게 약하지 않기 때문일 수 있습니다. 또 훈련 셋 성능이 테스트 셋 성능보다 훨씬 높은데, 모델이 과적합됐다는 신호입니다. 모델마다 데이터의 일부만으로 학습했기 때문에 생길 수 있는 일입니다. 데이터 포인트가 적으니 모델이 잡음까지 학습했을 가능성이 큽니다.\n", |
| 428 | + "T 러너도 이 데이터셋에서 괜찮은 성능을 보입니다. 테스트 성능은 S 러너와 크게 다르지 않은데, 처치가 그렇게 약하지 않기 때문일 수 있습니다. 또 훈련 셋 성능이 테스트 셋 성능보다 훨씬 높은데, 모델이 과적합됐다는 신호입니다. 모델마다 데이터의 일부만으로 학습했기 때문에 생길 수 있는 일입니다. 데이터 포인트가 적으니 모델이 잡음까지 학습했을 가능성이 큽니다.\n", |
429 | 429 | "\n", |
430 | 430 | "T 러너는 약한 처치변수를 놓치는 문제는 피하지만, 여전히 정규화 편향에 시달릴 수 있습니다. Kunzela 등(2019)에서 가져온 다음 상황을 생각해 봅시다. 처치를 받지 않은 대상의 데이터는 아주 많고 처치를 받은 대상의 데이터는 아주 적습니다. 처치에는 대개 비용이 많이 들기 때문에 실제로 꽤 흔한 상황입니다. 이제 결과 Y에는 비선형성이 있지만 **처치효과는 일정하다**고 해 봅시다. 어떤 일이 생기는지 다음 그림에서 볼 수 있습니다.\n", |
431 | 431 | "\n", |
432 | 432 | "\n", |
433 | 433 | "\n", |
434 | 434 | "실험군의 관측값이 아주 적으므로 $M_1$은 과적합을 피하려고 아주 단순한 모델(여기서는 선형)이 됩니다. $M_0$는 더 복잡해지지만, 데이터가 풍부해서 과적합을 막아 주니 문제가 없습니다. 머신러닝 관점에서는 모두 타당한 결과입니다. 그런데 이 두 모델로 CATE $\\hat{\\tau}=M_1(X) - M_0(X)$를 계산하면, 선형인 $M_1(X)$에서 비선형인 $M_0(X)$를 빼게 되므로 CATE도 비선형이 됩니다(파란 선에서 빨간 선을 뺀 값). 이 예에서 CATE는 1로 일정하므로 틀린 결과입니다.\n", |
435 | 435 | "\n", |
436 | | - "대조군 모델은 비선형성을 잡아낼 수 있지만, 실험군 모델은 표본이 작아서 정규화를 걸었고, 그 탓에 비선형성을 잡아내지 못했습니다. 물론 실험군 모델의 정규화를 줄일 수도 있지만, 그러면 작은 표본 크기 탓에 과적합이 일어납니다. 진퇴양난에 빠진 셈입니다. 이 문제를 풀기 위해 Kunzela 등이 같은 논문에서 제안한 X 러너를 쓸 수 있습니다." |
| 436 | + "여기서 벌어진 일은 이렇습니다. 대조군 모델은 비선형성을 잡아낼 수 있지만 실험군 모델은 그러지 못합니다. 작은 표본에 대처하려고 정규화를 걸었기 때문입니다. 물론 실험군 모델의 정규화를 줄일 수도 있지만, 그러면 작은 표본 크기 탓에 과적합이 일어납니다. 진퇴양난에 빠진 셈입니다. 이 문제는 Kunzela 등이 같은 논문에서 제안한 X 러너로 풀 수 있습니다." |
437 | 437 | ] |
438 | 438 | }, |
439 | 439 | { |
|
442 | 442 | "source": [ |
443 | 443 | "## X 러너\n", |
444 | 444 | "\n", |
445 | | - "X 러너(X-learner)는 앞의 러너들보다 설명하기가 훨씬 복잡하지만 구현은 꽤 간단하니 걱정하지 마세요. X 러너는 두 단계와 성향점수(propensity score) 모델로 이루어집니다. 첫 번째 단계는 T 러너와 똑같습니다. 먼저 표본을 실험군과 대조군으로 나누고, 실험군과 대조군에 각각 머신러닝 모델을 적합합니다.\n", |
| 445 | + "X 러너(X-learner)는 앞의 러너들보다 설명하기가 훨씬 복잡하지만 구현은 꽤 간단하니 걱정하지 마세요. X 러너는 두 단계와 성향점수(propensity score) 모델로 이루어집니다. 첫 번째 단계는 T 러너와 똑같습니다. 먼저 표본을 실험군과 대조군으로 나누고, 각각에 머신러닝 모델을 적합합니다.\n", |
446 | 446 | "\n", |
447 | 447 | "$\n", |
448 | 448 | "\\hat{M}_0(X) \\approx E[Y| T=0, X]\n", |
|
472 | 472 | "\\hat{M}_{\\tau 1}(X) \\approx E[\\hat{\\tau}(X)|T=1]\n", |
473 | 473 | "$\n", |
474 | 474 | "\n", |
475 | | - "앞에서 본 그림에 이 과정을 적용하면, 대조군에서 대체한 처치효과 $\\hat{\\tau}(X, T=0)$이 빨간 십자 표시이고 빨간 점선이 $\\hat{M}_{\\tau 0}(X)$입니다. 이 모델은 틀렸습니다. $\\hat{\\tau}(X, T=0)$을 실험군에서 추정한 단순하고 정규화된 모델 $\\hat{M}_1$로 만들었기 때문입니다. 그 모델은 Y 변수의 비선형성을 잡아내지 **못하므로**, 그 모델로 대체한 처치효과는 비선형이 됩니다.\n", |
| 475 | + "앞에서 본 그림에 이 과정을 적용하면, 대조군에서 대체한 처치효과 $\\hat{\\tau}(X, T=0)$이 빨간 십자 표시이고 빨간 점선이 $\\hat{M}_{\\tau 0}(X)$입니다. 이 모델은 틀렸습니다. $\\hat{\\tau}(X, T=0)$을 실험군에서 추정한 단순하고 정규화된 모델 $\\hat{M}_1$로 만들었기 때문입니다. 이 단순한 모델은 Y 변수의 비선형성을 잡아내지 **못하므로**, 이 모델로 대체한 처치효과는 비선형이 됩니다.\n", |
476 | 476 | "\n", |
477 | 477 | "반면 파란 점은 실험군에서 대체한 처치효과 $\\hat{\\tau}(X, T=1)$입니다. 이 효과는 처치를 받지 않은 큰 표본으로 학습한 올바른 모델 $M_0$로 추정했습니다. 대체한 처치효과가 올바르므로, 파란 선으로 나타낸 두 번째 단계 모델 $\\hat{M}_{\\tau 1}(X)$도 올바르게 학습할 수 있습니다.\n", |
478 | 478 | "\n", |
|
492 | 492 | "\n", |
493 | 493 | "보다시피 X 러너는 T 러너보다 비선형 구간에서 잘못 추정된 CATE를 훨씬 잘 바로잡습니다. 일반적으로 X 러너는 한쪽 처치 집단이 다른 쪽보다 훨씬 클 때 더 좋은 성능을 냅니다.\n", |
494 | 494 | "\n", |
495 | | - "한 번에 소화하기 벅찰 수 있지만 구현으로 넘어가면 분명해질 것입니다. 전체를 요약한 X 러너의 그림은 다음과 같습니다.\n", |
| 495 | + "한 번에 소화하기 벅찰 수 있지만 구현을 보고 나면 분명해질 것입니다. 전체를 요약한 X 러너의 그림은 다음과 같습니다.\n", |
496 | 496 | "\n", |
497 | 497 | "\n", |
498 | 498 | "\n", |
|
645 | 645 | "\n", |
646 | 646 | "## 핵심 요약\n", |
647 | 647 | "\n", |
648 | | - "다시 말하지만, 가장 간단한 방법은 처치를 특성으로 넣은 단일 러너, 즉 S 러너를 쓰는 것입니다. 이 방법은 처치가 결과를 약하게 예측하는 변수가 아닐 때 잘 작동하는 편입니다. 그렇지 않다면 S 러너는 처치효과를 0 쪽으로 편향되게 추정하거나 처치를 아예 버리기도 합니다. 조금 더 복잡하게 T 러너를 쓰면 러너가 처치를 반드시 반영하게 만들 수 있습니다. T 러너는 처치 수준마다 머신러닝 모델을 하나씩 적합합니다. 모든 처치 수준에 표본이 충분하면 잘 작동하지만, 어느 한 처치 수준의 표본 크기가 작으면 모델을 강하게 정규화할 수밖에 없어서 실패할 수 있습니다. 이를 바로잡으려면 한 단계 더 복잡한 X 러너를 쓸 수 있습니다. X 러너는 적합을 두 단계로 나누고, 성향점수 모델을 사용해 아주 적은 데이터로 추정한 모델의 실수를 보정합니다.\n", |
| 648 | + "다시 말하지만, 가장 간단한 방법은 처치를 특성으로 넣은 단일 러너, 즉 S 러너를 쓰는 것입니다. 이 방법은 처치가 결과를 예측하는 힘이 약하지 않을 때 잘 작동하는 편입니다. 그렇지 않다면 S 러너는 처치효과를 0 쪽으로 편향되게 추정하거나 처치를 아예 버리기도 합니다. 조금 더 복잡하게 T 러너를 쓰면 러너가 처치를 반드시 반영하게 만들 수 있습니다. T 러너는 처치 수준마다 머신러닝 모델을 하나씩 적합합니다. 모든 처치 수준에 표본이 충분하면 잘 작동하지만, 어느 한 처치 수준의 표본 크기가 작으면 모델을 강하게 정규화할 수밖에 없어서 실패할 수 있습니다. 이를 바로잡으려면 한 단계 더 복잡한 X 러너를 쓸 수 있습니다. X 러너는 적합을 두 단계로 나누고, 성향점수 모델을 사용해 아주 적은 데이터로 추정한 모델의 실수를 보정합니다.\n", |
649 | 649 | "\n", |
650 | 650 | "이 러너들(S 러너 제외)의 큰 문제 하나는 처치가 이진이거나 범주형이라고 가정한다는 점입니다. 아직 다루지 않은, 더 일반적인 러너가 하나 더 있습니다. 바로 R 러너입니다. 하지만 걱정하지 마세요. R 러너만 다루는 장이 따로 있습니다.\n", |
651 | 651 | "\n", |
|
0 commit comments