软件分析与设计笔记 06:范围界定(数据侧):用数据校验你的判断
访谈结论和数字对不上时该怎么办:分析的四个层次分别在回答什么问题、为什么不能跳级、数据准备与搜集怎么做成一张应用地图,以及数据最容易在哪几个地方骗你。
本文是 《软件分析与设计笔记》 系列的第 6 篇,共 28 篇
这是我在学习软件分析与设计时整理的系列笔记。概念部分是我按自己的理解写的,示例与图示都是自己编、自己画的。理解有偏差的地方欢迎指出。
贯穿案例:片区家电维修派单系统。04 做了预习、05 界定了范围,这一篇用数据去校验前两篇里那些「假设」。
0 当访谈结论和数字对不上
先看一个和本项目结构一样的矛盾。
客服小林在访谈里说:「最麻烦的是找不到工程师,我一天有半天在打电话问他们有没有空。」听起来,核心需求就是「排期可见」。
但翻开她自己的 Excel 记录,统计一下 80 通来电的类型,会看到另一幅图景:
| 来电类型 | 占比 |
|---|---|
| 客户问「几点到」 | 约 50% |
| 客户报新故障 | 约 25% |
| 客服打给工程师问排期(往外拨) | 约 20% |
| 其他(改约、投诉) | 约 5% |
这不是谁在说谎。「我认为我最头疼的是找不到工程师」和「我一半的时间在接客户的催促电话」可以同时成立。访谈拿到的是自我认知,数据拿到的是实际时间分配。
两者的含义完全不同:如果照访谈做「排期看板」,小林自己那 20% 的问题解决了;但如果照数据做「客户自助查进度」,解决的是一半的电话量。这两件事都得做,但优先级不一样了。
笔记 02 已经讲过:数据告诉你发生了什么,用户告诉你为什么。这一篇讲数据这一侧具体怎么用。
1 分析的四个层次
1.1 四个层次与它们的前提
从低到高,分析(analytics)通常分四层:
| 层次 | 回答的问题 | 需要的前提 | 典型手段 |
|---|---|---|---|
| descriptive analytics | 发生了什么 | 数据能采到、口径统一 | 报表、漏斗、分布统计 |
| diagnostic analytics | 为什么发生 | 有可对比的维度或分组 | 分群对比、相关性分析 |
| predictive analytics | 可能会发生什么 | 历史规律稳定、样本足够 | 回归、时间序列、分类模型 |
| prescriptive analytics | 应该怎么做 | 各选项的成本可比较 | 优化模型、决策规则 |
关键在第三列:每一层都比上一层多一个前提。很多数据项目失败,不是因为模型不够好,而是基础没打牢就直接去做上一层 —— 比如口径都没统一,就急着建预测模型。
拿贯穿案例走一遍这四层:
| 层次 | 本例的问题 | 本例的数据 | 本例的前提是否成立 |
|---|---|---|---|
| descriptive | 哪些配件经常缺?缺在哪个片区? | 工单配件消耗记录、被拒的领料记录 | ✅ 记录已经在 Excel 里,能拿到 |
| diagnostic | 缺货是集中在某类故障,还是领料习惯? | 缺货记录 + 故障类型 + 当时库存 | ⚠️ 故障类型现在没有结构化字段,要先补 |
| predictive | 下周哪些配件会缺? | 上述历史 + 季节性 + 供应商交期 | ❌ 只有 8 个月数据,且没有季节性记录 |
| prescriptive | 现在该补多少? | 预测结果 + 当前库存 + 供应商可售量 | ❌ 依赖上一层 |
这张表本身就是个有价值的结论:「提前预判哪些配件下周会短缺」这个诉求,在本例里做不到 Predictive 这一层。数据只有 8 个月、且没有季节性标记,预测出来的东西不可信。
那怎么办?退一步做 diagnostic 加一条简单的规则 —— 「某配件连续两周出库量上升且当前库存低于两周用量就提醒」。这不是预测,是基于规则的处方,但它现在就能做。
知道哪一层做不到,比硬做上一层更有价值。这一点在考试里也是加分项:能说出「这一层的前提不成立,所以我退回到上一层」比硬写「用 AI 预测」强得多。
1.2 处理文本的两类方法
除了这四层,还有一类方法处理的是非结构化的文本,而不是报表数字:sentiment mining(情感挖掘)从评价、客服记录里提取情绪倾向;big data analytics(大数据分析)面对的是数据量本身超出常规工具处理能力的场景。它们的共同点是:先解决「怎么把文本变成可统计的东西」,再谈分析。
本例里有一份现成的文本数据:客服通话记录。把 80 通电话按「问进度 / 报故障 / 催单 / 投诉」分类,就是一次最朴素的情感挖掘 —— 不需要模型,人工标 200 条就能看出分布。
2 数据准备、搜集与应用地图
2.1 三步,写成一张表
数据侧的工作可以归成三步:
- 明确业务目标(business objective) —— 这件事是为了改什么?通常要落成可测量的 KPI(关键绩效指标)。
- 选分析手段 —— 对应上面四个层次里的哪一层。
- 列出所需数据 —— 需要哪些字段、从哪个系统来、能不能采到。
把这三步写成一张表,就是应用地图(application map):每一行从「目标」推到「手段」再推到「数据」。它同时暴露两种问题:目标说不清的,以及数据拿不到的。
本例的应用地图:
| 业务目标(KPI) | 分析层次 | 所需数据 | 现在拿得到吗 |
|---|---|---|---|
| 把「问进度」来电从 50% 降到 20% | descriptive | 来电分类、工单状态查询次数 | ❌ 需要新增:来电原因字段 |
| 把「白跑一趟」从 11% 降到 3% | diagnostic | 缺料工单、当时的领料申请 | ✅ 纸质单上有,需录入 |
| 缺货提前两天预警 | prescriptive(规则) | 连续两周出库量、当前库存 | ⚠️ 库存数据在仓管台账上,需打通 |
| 月度报表从 3 天缩到实时 | descriptive | 工单、评价、时长 | ✅ 已有字段,只是散在 Excel |
注意第一行那个 ❌:「来访原因」这个字段现在不存在。这意味着要实现这个目标,必须先把它加进系统 —— 而这本身就是一条需求。
2.2 两个需要单独留意的动作
这张表里有两个动作需要单独留意:
- data preparation(数据准备) —— 清洗、补全、统一口径。这一步通常占掉整个数据工作一半以上的时间;
- data collection(数据搜集) —— 有些数据现在根本没采,需要在系统里新增埋点。而新增埋点意味着这是需求,要写进需求文档。
第二点是数据侧最容易漏掉的产出:「我们需要采集这些字段」本身就是一条需求。
本例里这条需求长这样:
系统应记录每次客户来电的原因分类(报修 / 问进度 / 改约 / 投诉 / 其他),由客服在挂断时选择,用于后续分析。
写给开发看,这就是一个下拉框加一个字段;但如果没有这句,整个「把问进度来电降到 20%」的目标就无法验证。
3 数据能做什么、不能做什么
3.1 能做:量化、验证、发现异常
能做:
- 量化规模 —— 到底是 5% 的工单白跑,还是 30%;
- 验证假设 —— 笔记 04 里那些「假设与理由」,靠数据推翻或确认。本例里「客服人力是瓶颈」这个假设,就被 20% 的往外拨号占比推翻了;
- 发现异常 —— 找出与预期不符的地方。比如某个片区的缺料率是其他片区的三倍,这就提示那里有没被理解的东西(可能是配件型号特殊)。
3.2 不能做:解释原因
不能做:
- 解释原因。 数据能告诉你缺料工单占 11%,但不会告诉你是因为仓管没看申请,还是因为供应商交期太长。
所以回到那个词:data-informed design。数据负责指出「哪里不对劲」,用户负责解释「为什么」。
本例里那条 11% 的缺料率,必须去问仓管小周才能定性 —— 她可能会说「申请是收到了,但那个型号供应商要等两周」。这句话数据里没有,但它决定了方案是「加库存」还是「换供应商」。
4 数据最容易在哪几个地方骗你
- 样本偏差(sample bias)。 只统计了用了这个功能的人,没用过的人不在样本里,而后者往往才是重点。本例:只统计线上报修的用户,会漏掉那些「打过一次电话就再也不来了」的客户;
- 幸存者偏差(survivorship bias)。 你看到的是留下来的用户,流失用户的行为轨迹在他们离开后就断了;
- 指标口径不一致(metric definition)。 「完成率」在两张报表里定义不同 —— 是「当天完成」还是「一周内完成」?结论就会互相打架;
- 数据质量(data quality)问题。 埋点漏报、字段缺失、时间戳时区错乱。本例:Excel 里的日期手填,有
11/3也有2026-11-03,直接排序就乱; - 数据管道(data pipeline)中断。 中间某个环节停了几天,导致对比的两个时间段根本不可比。
这五条有个共同特征:它们都不会报错,只会给出看起来正常的错结论。所以在用数据下判断前,先花点时间确认数据本身可信。
本例里最该先做的是口径统一:「白跑一趟」到底算不算「到了现场但客户不在家」?如果不先定义,11% 这个数字每人数出来都不一样。
5 数据侧的四个准备动作
把上面这些收成可执行的四步:
- 先写业务目标与 KPI,再谈数据。目标不明确的报表,做出来也没人看;
- 确定基线(baseline) —— 改动之前的数值是多少?本例的基线是:问进度来电 50%、缺料率 11%、月报耗时 3 天;
- 检查数据质量 —— 这个时间段的数据是全的,还是台账刚记了一半;
- 最后才看数,并且把结论写成可验证的假设,回到数据里确认(和笔记 02 的四步法同一个落点)。
第 2 步的基线很容易被跳过,但它决定了这个项目最后能不能证明自己有用。没有基线,上线后无论数字是多少,都没法说「改善了」。
本节自测
- 访谈说「最头疼找不到工程师」,数据说「一半时间在接催促电话」,这个矛盾怎么解释?它如何改变了优先级?
- 分析的四个层次里,为什么不能跳过前两层直接做预测?
- 本例「提前预判配件短缺」为什么做不到 Predictive 层?退而求其次的做法是什么?
- 什么是应用地图(application map)?它能暴露哪两类问题?
- 为什么「新增埋点」本身也是一条需求?举出本例中的一条。
- 举出一个「不会报错、但会给出错结论」的数据问题,用本例说明。
- 为什么必须先确定基线?本例的基线是什么?
参考答案
- 因为访谈拿到的是自我认知,数据拿到的是实际时间分配,两者可以同时成立。它把优先级改了:按访谈只做「排期看板」,解决客服往外拨的 20%;按数据做「客户自助查进度」,解决的是一半电话量 —— 两件都做,但顺序不同(§0)。
- 因为每一层都比上一层多一个前提:预测要求历史规律稳定、样本足够,而这依赖口径统一(描述层)和可对比维度(诊断层)。基础没打牢直接建模,模型再好也无效(§1.1)。
- 因为数据只有 8 个月、且没有季节性记录,Predictive 的前提不成立。退法是做 diagnostic 加一条规则:「某配件连续两周出库量上升且库存低于两周用量就提醒」—— 不是预测,是规则,但现在就能做(§1.1)。
- 应用地图把「业务目标 / 分析层次 / 所需数据」三列对应起来。它暴露两类问题:目标说不清的,以及数据拿不到的(§2.1)。
- 因为没有这个字段,目标就无法验证。本例那条需求是「系统应记录每次客户来电的原因分类(报修/问进度/改约/投诉/其他)」,由客服挂断时选择 —— 这就是一个下拉框加一个字段,但缺了它,「把问进度来电降到 20%」永远无法度量(§2.2)。
- 数据质量里的口径不一致。本例「白跑一趟」若没有定义(算不算客户不在家?),11% 这个数字每人数出来都不一样,而且系统不会报错(§4)。
- 因为没有基线就无法判断改进有没有效果。本例基线是:问进度来电 50%、缺料率 11%、月报耗时 3 天(§5)。
术语表
| 术语 | 中文 | 一句话解释 |
|---|---|---|
| analytics | 分析 | 从数据中提取结论的方法总称 |
| descriptive analytics | 描述性分析 | 回答发生了什么 |
| diagnostic analytics | 诊断性分析 | 回答为什么发生 |
| predictive analytics | 预测性分析 | 回答可能会发生什么 |
| prescriptive analytics | 处方性分析 | 回答应该怎么做 |
| business objective | 业务目标 | 做这件事要达成的业务结果 |
| KPI | 关键绩效指标 | 用来衡量目标是否达成的可量化指标 |
| application map | 应用地图 | 把业务目标、分析手段与所需数据对应起来的表 |
| data preparation | 数据准备 | 清洗、补全、统一口径等前置工作 |
| data collection | 数据搜集 | 采集原始数据的过程,常需要新增埋点 |
| data quality | 数据质量 | 数据在完整性、准确性、一致性上的可靠程度 |
| data pipeline | 数据管道 | 数据从产生端流到使用端所经过的环节 |
| metric definition | 指标口径 | 一个指标具体怎么算的定义 |
| sample bias | 样本偏差 | 样本不能代表整体而产生的偏差 |
| survivorship bias | 幸存者偏差 | 只看到留存下来的对象,忽略已消失的 |
| baseline | 基线 | 改动之前的数值,用于对比改进效果 |
| sentiment mining | 情感挖掘 | 从文本中提取情绪倾向的分析方法 |
| big data analytics | 大数据分析 | 面向超大规模数据的分析手段 |