Step 1(10%):把 SDG 变成一个能被数据回答的问题
这一章是全书最难的一章,因为它要求的不是技术。你要把「SDG 3 良好健康与福祉」这样一句人类共同愿景,压到一句「某个具体的人,在某个具体的时刻,要在几个选项里挑一个」的话。压不下来,后面八步都会飘着——Step 5 不知道该选什么方法,Step 8 不知道该解释给谁听。KDD 的原文把这一步叫「identifying the goal of the KDD process from the customer's viewpoint」,重点在最后四个字。
三层漏斗
从 SDG 到可执行的数据挖掘目标,中间必须经过一层:决策。少了这一层,你写出来的东西一定是「分析某某的影响因素」这种飘着的句子。
| 层 | 内容 | 例子(SDG 3) | 检验 |
|---|---|---|---|
| ① SDG 目标 | 联合国的原话,带指标编号 | SDG 3.2:到 2030 年,将 5 岁以下儿童死亡率降至每千活产 25 例以下 | 能不能从 sdgs.un.org 抄到编号与数值? |
| ② 决策场景 | 谁、什么时候、在哪些选项里挑 | 卫生部资源调配组在下一年度预算会上,要决定把新增的 40 名医生和疫苗预算投到 哪几个地区 | 句子里有一个人和一个动词吗?选项是有限、可枚举的吗? |
| ③ 数据挖掘目标 | 一行是什么、预测哪一列、输出什么形态 | 以「地区-年」为一行,预测该地区次年是否达不到 25‰,输出一份按风险概率排序的地区名单 | 能写成 y = f(X) 吗?输出形态能直接喂给第 ② 层的那个动词吗? |
第 ② 层是全课的枢纽。它决定了:你要做分类还是回归(要名单 → 分类;要预算数字 → 回归)、Step 8 的阈值怎么定(能派多少人就取前多少名)、Step 9 的部署长什么样(每年一次的例会 → 模型只需年度批量运行,不需要实时 API)。
四种写废的方式,和它们的修法
「本项目旨在分析影响 5 岁以下儿童死亡率的关键因素,为政策制定提供洞察。」
问题:「提供洞察」不是一个决策。没人会因为这句话做任何事,所以你无法定义成功,Step 8 也就无从评估。
修法:加一个人和一个动作。「本项目支持卫生部资源调配组的年度预算决策:在 60 个地区中选出 15 个优先投放地区。」
「1.1 业务目标:预测哪些地区的儿童死亡率会超过 25‰。1.3 数据挖掘目标:预测哪些地区的儿童死亡率会超过 25‰。」
问题:这两栏各值分,重复写等于交白卷一栏。1.1 应该在讲「资源投错地方,每年浪费多少」;1.3 才讲「二分类,目标列是 u5mr > 25」。
修法记一个口诀:1.1 的主语是人,1.3 的主语是一行数据。
决策是「派医生去哪些地区」,但数据是「每个患者一行」。
问题:模型输出的是「这个患者会不会怎样」,而决策者要的是地区排序。中间缺一次聚合,而这次聚合会引入新的问题(地区人口不同、样本量不同)。
修法:要么把数据聚合到决策单元(在 Step 3.3 做,并说明聚合方式),要么把决策改到数据单元。二者必须对齐——这句话本身就该写在 1.3 里。
「预测哪些干预措施最有效。」
问题:这是因果推断,不是预测。你手上的观测数据里,「干预」和「结果」是被同一批混杂因素驱动的,模型给出的相关不能当因果用(第 20 章会用一个真实的符号翻转演示这件事有多容易发生)。
修法:要么降级为预测问题(「预测哪些地区最可能未达标」),要么明确改成增量响应建模(uplift,需要处理组/对照组数据,第 14 章有)。含糊地写「找出有效措施」会在 Step 8 被追杀。
亲手装一个目标
下面这台装配器把三层漏斗做成了三排选项。选完之后它会生成 1.1 / 1.3 / 成功判据的草稿,并检查四件评分员一定会找的东西:
请注意生成文本里的成功判据分成两套,这是很多人漏掉的一块分:
- 业务侧判据(1.1 的收尾):「一年内未达标单元数下降 ≥ 20%」。它用业务语言,不含任何模型术语,是给决策者签字的那句话。
- 模型侧判据(1.3 的收尾):「测试集 F1 ≥ 0.80 且召回 ≥ 0.85」。它用技术语言,是你在 Step 8 用来判「成功了没有」的尺子。
两套判据必须能互相解释:为什么召回要 0.85?因为漏掉一个高风险地区意味着一整年没有干预,而多访一个低风险地区只是一趟车费——这句因果关系就是 Step 8 里调阈值的全部依据(第 18 章会把它变成一个具体的代价比,然后算出最优阈值)。
评分员想看到的不是「这个问题很重要」,而是「现在这件事是怎么做的,哪里不好」。加两句话,1.1 的分量完全不同:
1.1 Objectives of the business / situation 现状:资源分配目前按各地区上一年度的人口总量平摊,不考虑 风险差异。2023 年的事后复盘显示,未达标地区中有 42% 未获得 额外资源,而已达标地区中有 31% 获得了额外资源(数据来源见 2.1)。也就是说,现行做法在方向上接近随机。 目标:为年度预算会提供一份按风险排序的地区名单,使有限的 40 名医生编制与疫苗预算优先投向最可能未达标的地区。 成功判据(业务侧):按名单投放后,次年未达标地区数量同比 下降 20% 以上;且资源投放的命中率(获得资源的地区中最终确 实未达标的比例)从当前的 X% 提升到 Y% 以上。
那两个百分比可以是你从数据里算出来的(更好),也可以是估计值(要标注是估计)。关键是「现行做法有多差」这个基线——没有基线,你的模型再好也无法证明有用。这和第 16 章「先跑一个全猜多数类的基线」是同一个思维。
1.3 里必须出现的五件事
| # | 内容 | 本书示例 |
|---|---|---|
| 1 | 分析单元(一行是什么) | 一个地区一年(共 480 行,6 个地区 × 9 年) |
| 2 | 目标变量及其定义与来源 | risk = u5mr > 25(阈值取自 SDG 指标 3.2.1) |
| 3 | 任务类型 | 二分类(同时报告 u5mr 的回归结果作为补充) |
| 4 | 输出形态 | 每个地区一个未达标概率 + 按概率降序的名单 |
| 5 | 模型侧成功判据 | 测试集召回 ≥ 0.85、F1 ≥ 0.80、AUC ≥ 0.85;且必须显著优于「全猜多数类」基线 |
第 3 行那个括号值得单独说:如果你的目标列是连续的,就顺手把它二分一次,同时做回归和分类。成本几乎是零(同一份特征、同一次划分),但 Step 5–7 的内容量翻倍,Step 8 可以对比「预测数值」和「预测类别」哪个更适合支撑那个决策。这是这门课性价比最高的一个动作。
1. Step 1.1(约 250 字):SDG 编号与原文指标 → 决策者与决策动作 → 现状与基线 → 业务侧成功判据。
2. Step 1.3(约 150 字 + 一张五行表):上面那张表照填。
3. 一句话自检,写完念一遍:「(谁)在(什么时候)需要在(哪些选项)里挑(几个),我给他一份(什么形态的输出),做对了的标志是(业务判据),我判断模型做对了的标志是(模型判据)。」这句话里任何一个括号填不上,就回去改。
这一章的一句话
SDG 到数据挖掘目标之间必须经过「决策」这一层:1.1 的主语是一个要做选择的人,1.3 的主语是一行数据和要预测的那一列;两句话各配一套成功判据,而这两套判据必须能互相解释。
下一章把 Step 1 剩下的两小节填完:情境评估(1.2)和项目计划(1.4)。1.2 有一份 CRISP-DM 给的官方清单,照着填就能拿分——包括一个几乎所有人都会漏掉的「术语表」。