Skip to content

feat(meta-learner) : 메타러너 노트북 및 데이터 추가#6

Open
kwonhwijun wants to merge 1 commit into
mainfrom
feat/meta-learner
Open

feat(meta-learner) : 메타러너 노트북 및 데이터 추가#6
kwonhwijun wants to merge 1 commit into
mainfrom
feat/meta-learner

Conversation

@kwonhwijun
Copy link
Copy Markdown
Collaborator

개요

HTE 추정을 위한 메타러너 실습 노트북

내용

  • Naive ATE의 단점
  • Propensity Score로 비교 가능한 집단 만들기
  • S, T, X-Learner 구현

변경 사항

  • book/meta_learner/meta_learner_ko.ipynb : 실습 노트북
  • book/meta_learner/data/cohort.parquet : 매장 프로모션 데이터

@kwonhwijun kwonhwijun requested a review from Funbucket May 17, 2026 07:25
Copy link
Copy Markdown
Collaborator

@Funbucket Funbucket left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전체 흐름은 잘 정리되어 있어서 따라가기 좋았습니다! 고생하셨습니다~!

"metadata": {},
"source": [
"외식 예약 플랫폼 MealBook은 최근 **'타깃 혜택 프로모션'** 을 진행했습니다.\n",
"특정 조건을 만족하는 매장 약 190곳에 \"1만원+ 혜택\" 배지를 붙이고, 2주간 예약 변화를 추적했죠.\n",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

가심비 혜택 프로모션이 무엇인지와 이번 분석의 대상이 배지인지 프로모션의 효과인지 조금 헷갈릴 수 있을 것 같습니다. 이 부분을 조금만 더 명확히 해주면 좋겠습니다.

"**1. 선택 편향 확인**: 빨간 분포(혜택 매장)가 파란 분포보다 오른쪽에 치우쳐 있습니다.\n",
"같은 Propensity에서 혜택 매장이 더 많다는 뜻이고, 이게 선택 편향의 시그널입니다.\n",
"\n",
"**2. 비교 불가 구간**: $\\hat{e}(x) > 0.5$ 구간은 거의 혜택 매장만 존재합니다.\n",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그래프를 보면 e(x) > 0.5 구간도 양쪽이 어느 정도 겹쳐 보이는데 trimming 이 필요한게 맞나요?

Comment on lines +456 to +461
"- **Overlap 진단**: T=1과 T=0의 $e(x)$ 분포가 겹치는 구간만 신뢰할 수 있어요\n",
"- **Matching 기준**: $e(x)$ 가 비슷한 매장끼리 짝지어 비교합니다\n",
"- **X-Learner 가중치**: 뒤에서 다시 씁니다\n",
"\n",
"$e(x)$ 가 극단적인 구간(T=1만 있거나, T=0만 있거나)은\n",
"\"비교 상대가 없다\"는 뜻이므로 분석에서 제외(Trim)해야 합니다."
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

덕분에 편향된 데이터에서 meta-learner를 적용하기 위해 ps score의 overlap 영역만 trim하고, matching으로 샘플을 확정하는 과정을 처음 알게 되었습니다!

다만 ps score와 matching이 갑자기 등장해서 독자가 조금 헷갈릴 수 있을 것 같습니다.

제가 이해한 바로는, 현재 데이터가 관찰 데이터이기 때문에 RCT를 모사하기 위해 먼저 propensity score를 추정하고, overlap이 있는 표본만 trim한 뒤, matching 가능한 샘플만 남겨 비교 가능한 코호트를 만드는 흐름인 것 같은데 이런 설명이 추가되면 좋을 것 같습니다!

Comment on lines +648 to +654
"Trim과 Matching을 거쳐 **총 257개 매장** 으로 코호트를 구성했습니다.\n",
"\n",
"\"데이터를 많이 버리는 거 아닌가?\"라는 의문이 생길 수 있습니다.\n",
"맞습니다. 하지만 비교 불가능한 매장까지 포함하면 추정 결과가 오히려 왜곡됩니다.\n",
"**양보다 질** — 비교 가능한 쌍으로만 추정하는 게 더 신뢰할 수 있어요.\n",
"\n",
"이제 이 257개 데이터로 세 가지 Meta-Learner를 학습합니다."
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overlap 구간에 제한된 ATO(Average Treatment effect in the Overlap population)로 해석을 추가하는 게 좋을 것 같습니다!

비교 가능한 샘플만 남긴다는 장점이 있지만, 그만큼 일반화 범위가 좁아진다는 점도 함께 설명하면 좋을 것 같아요

"id": "bb09b1b7",
"metadata": {},
"source": [
"## 4) S-Learner — 한 모델이 다 본다\n",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

S / T / X-Learner 각각의 학습 흐름을 텍스트로 잘 설명해주고 계신데, 아키텍처 다이어그램이 있으면 더 직관적으로 이해할 수 있을 것 같습니다.
특히 X-Learner는 step이 4단계라, 텍스트만으로 따라가기는 조금 까다로운 편인 것 같습니다!

"2019년 Künzel 등이 PNAS에 발표한 방법으로,\n",
"표본 불균형 상황에서 **추정을 안정화**하도록 설계됐습니다.\n",
"\n",
"핵심 아이디어는 **\"서로의 데이터로 빈칸을 채운다\"** 입니다.\n",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

서로의 데이터로 빈칸을 채운다는 설명만으로는 X-Learner의 의도가 조금 부족하게 느껴집니다.

먼저 X-Learner가 해결하려는 두 가지를 짚어주면 이해가 더 쉬울 것 같습니다!

  1. S/T-Learner는 CATE를 모델 예측값 차이로 계산해서 모델 오차에 상대적으로 취약한데, X-Learner는 observed Y를 이용해 pseudo-outcome을 만들기 때문에 불균형 상황에서 더 안정적이다.

  2. 이후 propensity score로 두 pseudo-effect를 가중 결합해서, 더 믿을 수 있는 쪽의 정보를 더 많이 반영한다.

이런 맥락이 먼저 나오면 서로의 데이터로 빈칸을 채운다는 표현도 더 직관적으로 읽힐 것 같습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants