QBUS6600 Exploratory Data Analysis Project - Membership Churn|先守住一行一个会员
🧩 先把一行的含义钉住
这份会员流失 EDA 动手连表前,我会先在草稿开头写下 一行一个会员。churn_90d 给每名训练会员一个结果,而刷卡、销售和预订记录写的是会员发生过的事件。两种粒度混在一起,后面的退会率、分组图和变量关系都会跟着换分母。
比如会员 A 有 100 条刷卡记录,会员 B 有 1 条,会员 C 没有刷卡记录。把原始刷卡记录直接和标签做内连接,结果会变成 101 行,A 的同一个标签出现 100 次,C 也消失了。多出来的行只是在重复 A 的标签,高频刷卡会员因此拥有更大的影响。先按 HashID 收成会员行,再连回会员主表,A、B、C 仍是三个人,刷卡记录数分别为 100、1、0。
🔎 标签落在会员上,事件数量只能变成会员特征,不能替会员复制标签。
🧱 三类事件先各自收成会员行
刷卡、销售和预订要分开聚合。每一类都先回答两个问题:原始一行表示什么,聚合后准备留下什么。这里的 先聚合再连接 会让后面的每个变量都能回到同一名会员身上。
| 数据对象 | 原始一行 | 聚合到会员后 | 没有记录时 |
|---|---|---|---|
| 刷卡 | 一条刷卡记录 | 记录数、活跃周数、最近刷卡时间 | 次数为 0,时间留空 |
| 销售 | 一条销售明细 | 消费次数、合计金额 | 次数与金额为 0 |
| 预订 | 一次预订 | 预订次数、观察窗内的参与特征 | 次数为 0 |
比如某会员有 3 条销售明细,聚合表里只留这一名会员,消费次数填 3,金额由三条明细相加。标签依然只出现一次。每张聚合表完成后,我会顺手确认:
HashID在这张表里没有重复;






