3、数据准备与清洗:数据来源、数据质量、缺失值处理、异常值检测与平滑方法
活动需求预测的准确性,首先取决于输入数据的质量。无论采用时间序列分解、回归分析还是机器学习模型,如果底层数据存在缺失、异常或口径不一致,预测结果都会出现系统性偏差。本章聚焦预测建模前的数据工程环节,系统讲解数据来源分类、质量评估维度、缺失值处理策略、异常值检测与平滑方法,帮助学员建立从原始业务数据到可建模数据集的标准化处理流程。
3.1 数据来源与采集策略
活动需求预测的数据来源通常分为三类:内部业务数据(报名系统、签到记录、CRM、票务平台)、外部公开数据(行业报告、社交媒体热度、天气、节假日日历)、调研补充数据(问卷、访谈、历史活动复盘)。内部数据是预测的主干,外部数据用于修正季节性波动和突发因素影响。
| 数据来源 | 典型字段 | 采集频率 | 主要风险 |
|---|---|---|---|
| 报名系统 | 报名人数、时间戳、渠道来源 | 实时 | 重复报名、测试数据混入 |
| 票务平台 | 售票量、票价、退票率 | 每日汇总 | 平台间数据口径不一致 |
| 社交媒体 | 话题热度、转发量、评论情感 | 小时级 | 数据噪声大、爬虫不稳定 |
| 历史活动档案 | 活动类型、规模、到场率 | 每次活动后 | 记录缺失、字段不统一 |
采集策略上,建议遵循“最小必要 + 冗余备份”原则。核心字段(时间、人数、渠道)必须完整采集,辅助字段(天气、竞品动态)按需补充。同时,为每个数据源建立采集日志,记录采集时间、数据量、异常情况,便于后续追溯。
3.2 数据质量评估维度
数据质量评估是清洗的前提,通常从四个维度展开:完整性(字段缺失比例)、准确性(数值是否在合理范围)、一致性(同一实体在不同表中的口径是否统一)、时效性(数据是否及时更新)。评估结果决定后续处理策略的激进程度。
- 对每个字段计算缺失率,缺失率 > 30% 的字段考虑剔除或重新采集。
- 绘制数值字段的分布直方图,检查是否存在明显离群点。
- 交叉验证同一活动在不同系统中的记录,核对人数、时间、场地是否一致。
- 检查时间戳是否连续,是否存在跳变或倒序。
例如,某活动报名数据中,发现“报名时间”字段有 12% 的记录为 NULL,且“渠道来源”字段存在“官网”“官网-移动端”“官网PC”三种写法,实际指向同一渠道。这类一致性问题若不处理,后续按渠道拆分预测时会产生严重偏差。
3.3 缺失值处理方法
缺失值处理没有最优方案,需要结合数据缺失机制(随机缺失、非随机缺失)和业务含义选择方法。常用方法包括:删除法(适用于缺失比例低且随机)、均值/中位数填充(适用于数值型且分布对称)、前向/后向填充(适用于时间序列)、线性插值(适用于趋势明显的数据)、模型预测填充(适用于重要字段)。
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 删除法 | 缺失率 < 5%,随机缺失 | 简单、不引入偏差 | 损失样本量 |
| 均值/中位数填充 | 数值型、分布对称 | 计算快、稳定 | 降低方差、扭曲分布 |
| 前向/后向填充 | 时间序列、短期缺失 | 保持时间连续性 | 忽略趋势变化 |
| 线性插值 | 趋势明显、缺失段短 | 利用前后信息 | 对突变不敏感 |
以某年度活动报名数据为例,3月10日至3月12日因系统升级导致报名数据缺失。由于活动报名呈明显上升趋势,采用线性插值法,利用3月9日和3月13日的报名人数,估算出3月10-12日的每日报名量分别为 145、162、178 人,相比均值填充更符合实际增长趋势。
3.4 异常值检测与平滑方法
异常值是指明显偏离正常范围的数据点,可能源于录入错误、系统故障或真实突发事件(如疫情导致活动取消)。检测方法包括:3σ原则(适用于正态分布数据)、IQR(四分位距)法(适用于偏态分布)、箱线图可视化、Z-Score 标准化。平滑方法则用于消除短期随机波动,保留长期趋势,常用移动平均、指数平滑、LOESS 局部回归。
平滑处理的核心目的是让预测模型更关注趋势而非噪声。移动平均法简单有效,但会引入滞后;指数平滑法对近期数据赋予更高权重,响应更快;LOESS 方法适合非线性趋势,但计算成本较高。实际应用中,建议先做异常值检测,再对剩余数据进行平滑,避免异常值污染平滑结果。
3.5 案例拆解:某音乐节报名数据清洗全流程
背景与约束:某城市音乐节计划在6月举办,主办方需要预测最终报名人数以确定场地容量和安保配置。历史数据包含过去3年共6场同类活动的每日报名记录,每场活动报名周期为30天。数据存在以下问题:部分日期缺失、个别日期报名数异常偏高、渠道字段不统一。
初始现象与目标:初步查看数据发现,2024年5月15日报名人数为 1,200 人,而前后两天均为 200-300 人,明显异常。同时,2023年有一场活动因天气原因延期,导致报名数据中断3天。目标是通过清洗,得到连续、合理的报名序列,用于后续趋势外推。
分析判断过程:
- 缺失值处理:2023年延期活动的3天缺失数据,采用前后各5天的线性插值填充,估算每日报名量。
- 异常值检测:对每日报名数计算 IQR,发现 2024年5月15日的数据超出上边缘(Q3 + 1.5×IQR),判定为异常。
- 异常原因排查:查看后台日志,发现当天票务系统出现重复计数 bug,实际报名约 350 人,确认为错误数据。
- 平滑处理:对修正后的序列应用 7 日移动平均,消除周末波动带来的噪声。
实际操作与结果:修正异常值后,将 1,200 替换为 350,再执行移动平均。最终清洗后的数据序列趋势平稳,预测模型 RMSE 从清洗前的 187 人降至 92 人,预测准确率提升约 51%。
风险与代价:线性插值在数据波动剧烈时可能低估真实值;移动平均会掩盖短期突增信号。因此,清洗后的数据仍需保留原始标记,便于模型调试时回溯。
复盘经验:数据清洗不是一次性工作,应建立自动化监控脚本,每次活动结束后自动生成质量报告。同时,异常值处理必须保留审计日志,记录“原始值→修正值→修正原因”,确保预测结果可解释。
3.6 常见误区与总结
- 误区一:所有缺失值都用均值填充。这会导致方差被低估,影响预测区间估计。
- 误区二:直接删除异常值。真实业务异常(如爆款活动)是重要信号,应单独建模。
- 误区三:平滑过度。过度平滑会抹掉真实的拐点信息,导致预测滞后。
- 误区四:忽略数据口径统一。不同渠道的“报名人数”定义可能不同(含退款、含未支付),必须提前对齐。