feat(meta-learner) : 메타러너 노트북 및 데이터 추가#6
Conversation
Funbucket
left a comment
There was a problem hiding this comment.
전체 흐름은 잘 정리되어 있어서 따라가기 좋았습니다! 고생하셨습니다~!
| "metadata": {}, | ||
| "source": [ | ||
| "외식 예약 플랫폼 MealBook은 최근 **'타깃 혜택 프로모션'** 을 진행했습니다.\n", | ||
| "특정 조건을 만족하는 매장 약 190곳에 \"1만원+ 혜택\" 배지를 붙이고, 2주간 예약 변화를 추적했죠.\n", |
There was a problem hiding this comment.
가심비 혜택 프로모션이 무엇인지와 이번 분석의 대상이 배지인지 프로모션의 효과인지 조금 헷갈릴 수 있을 것 같습니다. 이 부분을 조금만 더 명확히 해주면 좋겠습니다.
| "**1. 선택 편향 확인**: 빨간 분포(혜택 매장)가 파란 분포보다 오른쪽에 치우쳐 있습니다.\n", | ||
| "같은 Propensity에서 혜택 매장이 더 많다는 뜻이고, 이게 선택 편향의 시그널입니다.\n", | ||
| "\n", | ||
| "**2. 비교 불가 구간**: $\\hat{e}(x) > 0.5$ 구간은 거의 혜택 매장만 존재합니다.\n", |
There was a problem hiding this comment.
그래프를 보면 e(x) > 0.5 구간도 양쪽이 어느 정도 겹쳐 보이는데 trimming 이 필요한게 맞나요?
| "- **Overlap 진단**: T=1과 T=0의 $e(x)$ 분포가 겹치는 구간만 신뢰할 수 있어요\n", | ||
| "- **Matching 기준**: $e(x)$ 가 비슷한 매장끼리 짝지어 비교합니다\n", | ||
| "- **X-Learner 가중치**: 뒤에서 다시 씁니다\n", | ||
| "\n", | ||
| "$e(x)$ 가 극단적인 구간(T=1만 있거나, T=0만 있거나)은\n", | ||
| "\"비교 상대가 없다\"는 뜻이므로 분석에서 제외(Trim)해야 합니다." |
There was a problem hiding this comment.
덕분에 편향된 데이터에서 meta-learner를 적용하기 위해 ps score의 overlap 영역만 trim하고, matching으로 샘플을 확정하는 과정을 처음 알게 되었습니다!
다만 ps score와 matching이 갑자기 등장해서 독자가 조금 헷갈릴 수 있을 것 같습니다.
제가 이해한 바로는, 현재 데이터가 관찰 데이터이기 때문에 RCT를 모사하기 위해 먼저 propensity score를 추정하고, overlap이 있는 표본만 trim한 뒤, matching 가능한 샘플만 남겨 비교 가능한 코호트를 만드는 흐름인 것 같은데 이런 설명이 추가되면 좋을 것 같습니다!
| "Trim과 Matching을 거쳐 **총 257개 매장** 으로 코호트를 구성했습니다.\n", | ||
| "\n", | ||
| "\"데이터를 많이 버리는 거 아닌가?\"라는 의문이 생길 수 있습니다.\n", | ||
| "맞습니다. 하지만 비교 불가능한 매장까지 포함하면 추정 결과가 오히려 왜곡됩니다.\n", | ||
| "**양보다 질** — 비교 가능한 쌍으로만 추정하는 게 더 신뢰할 수 있어요.\n", | ||
| "\n", | ||
| "이제 이 257개 데이터로 세 가지 Meta-Learner를 학습합니다." |
There was a problem hiding this comment.
overlap 구간에 제한된 ATO(Average Treatment effect in the Overlap population)로 해석을 추가하는 게 좋을 것 같습니다!
비교 가능한 샘플만 남긴다는 장점이 있지만, 그만큼 일반화 범위가 좁아진다는 점도 함께 설명하면 좋을 것 같아요
| "id": "bb09b1b7", | ||
| "metadata": {}, | ||
| "source": [ | ||
| "## 4) S-Learner — 한 모델이 다 본다\n", |
There was a problem hiding this comment.
S / T / X-Learner 각각의 학습 흐름을 텍스트로 잘 설명해주고 계신데, 아키텍처 다이어그램이 있으면 더 직관적으로 이해할 수 있을 것 같습니다.
특히 X-Learner는 step이 4단계라, 텍스트만으로 따라가기는 조금 까다로운 편인 것 같습니다!
| "2019년 Künzel 등이 PNAS에 발표한 방법으로,\n", | ||
| "표본 불균형 상황에서 **추정을 안정화**하도록 설계됐습니다.\n", | ||
| "\n", | ||
| "핵심 아이디어는 **\"서로의 데이터로 빈칸을 채운다\"** 입니다.\n", |
There was a problem hiding this comment.
서로의 데이터로 빈칸을 채운다는 설명만으로는 X-Learner의 의도가 조금 부족하게 느껴집니다.
먼저 X-Learner가 해결하려는 두 가지를 짚어주면 이해가 더 쉬울 것 같습니다!
-
S/T-Learner는 CATE를 모델 예측값 차이로 계산해서 모델 오차에 상대적으로 취약한데, X-Learner는 observed Y를 이용해 pseudo-outcome을 만들기 때문에 불균형 상황에서 더 안정적이다.
-
이후 propensity score로 두 pseudo-effect를 가중 결합해서, 더 믿을 수 있는 쪽의 정보를 더 많이 반영한다.
이런 맥락이 먼저 나오면 서로의 데이터로 빈칸을 채운다는 표현도 더 직관적으로 읽힐 것 같습니다.
개요
HTE 추정을 위한 메타러너 실습 노트북
내용
변경 사항
book/meta_learner/meta_learner_ko.ipynb: 실습 노트북book/meta_learner/data/cohort.parquet: 매장 프로모션 데이터