3. 数据准备基础:数据源类型与清洗原则
分群评分沙盘的精度,80% 取决于数据质量。本章聚焦三类核心数据源的结构特征与清洗预处理原则,帮助你在搭建沙盘前建立可靠的数据基座。
3.1 三类核心数据源
用户分群与评分建模通常依赖以下三类数据源,它们在时效性、结构化程度和业务含义上各有差异:
| 数据源类型 | 典型字段 | 更新频率 | 分群用途 |
|---|---|---|---|
| 用户画像 | 年龄、性别、地域、职业、设备型号 | 低频(天/周) | 静态分层、基础属性筛选 |
| 行为日志 | 页面浏览、点击、搜索、停留时长 | 高频(秒/分钟) | 活跃度、兴趣偏好、行为序列 |
| 交易记录 | 订单金额、商品类目、支付时间、复购间隔 | 中频(小时/天) | 价值分层、RFM 评分、生命周期 |
实战建议:初期优先整合「用户画像 + 交易记录」两张表,行为日志可作为第二阶段精细化分群的增量数据源。
3.2 数据源结构对比
三类数据源在存储结构和关联方式上存在显著差异,理解这些差异有助于设计高效的 ETL 流程:
- 用户画像表:宽表结构,一行一用户,字段稳定,适合直接 join。
- 行为日志表:长表结构,一行一事件,用户 ID 重复出现,需聚合或序列化。
- 交易记录表:中间态,一行一订单,可聚合为用户级指标(总金额、频次、最近一次时间)。
3.3 数据清洗与预处理原则
原始数据进入沙盘前必须经过清洗与预处理。以下是五条核心原则,按优先级排列:
- 完整性原则:处理缺失值。用户画像中缺失率 > 50% 的字段直接剔除;行为日志中缺失 user_id 的事件整行丢弃。
- 一致性原则:统一编码与单位。性别字段统一为 0/1,金额统一为分,时间统一为 UTC 时间戳。
- 准确性原则:剔除异常值。交易金额为负数、年龄 > 120 岁、时间戳为未来时间等明显错误数据。
- 时效性原则:设定时间窗口。行为日志只保留近 90 天数据,交易记录保留近 365 天数据。
- 去重原则:基于主键或业务键去重。同一 user_id 在画像表中只保留最新一条记录。
常见陷阱:不要对缺失值直接填充 0 或均值。对于用户画像中的分类字段(如职业),建议单独标记为“未知”类别;对于连续字段(如收入),可使用中位数或分组填充。
3.4 清洗流程示例
以下是一个标准的数据清洗流水线,适用于交易记录表的预处理:
-- 交易记录清洗示例(伪代码)
-- 1. 去重
DELETE FROM transactions
WHERE order_id IN (
SELECT order_id FROM transactions
GROUP BY order_id HAVING COUNT(*) > 1
) AND id NOT IN (
SELECT MIN(id) FROM transactions
GROUP BY order_id
);
-- 2. 剔除异常值
DELETE FROM transactions
WHERE amount <= 0 OR amount > 1000000;
-- 3. 时间窗口过滤
DELETE FROM transactions
WHERE pay_time < DATE_SUB(NOW(), INTERVAL 365 DAY);
-- 4. 缺失值处理
UPDATE transactions
SET category = '未知'
WHERE category IS NULL OR category = '';
关键指标:清洗完成后,建议统计「数据保留率」(清洗后记录数 / 原始记录数)。保留率低于 60% 时,需回溯上游数据源质量。
3.5 数据预处理:从原始表到特征宽表
清洗后的数据需要进一步加工为分群评分可用的特征宽表。核心步骤包括:
- 用户画像:直接选取字段,对分类变量做 one-hot 编码或 label encoding。
- 行为日志:按 user_id 聚合,计算近 7/30/90 天的行为频次、活跃天数、平均停留时长。
- 交易记录:按 user_id 聚合,计算 RFM 指标(最近一次交易时间、交易频次、交易金额)。
3.6 数据质量检查清单
在将数据导入沙盘前,建议逐项检查以下维度:
| 检查项 | 检查方法 | 合格标准 |
|---|---|---|
| 缺失率 | 统计每列 NULL 占比 | 关键字段 < 5%,非关键字段 < 30% |
| 重复率 | 统计主键重复记录数 | 重复率 < 1% |
| 异常值 | 箱线图或 3σ 检测 | 异常值占比 < 2% |
| 时间覆盖 | 检查时间戳范围 | 覆盖目标分析周期 |
| 用户覆盖 | 统计唯一 user_id 数 | 与业务预期一致 |
效率技巧:将上述检查项写成 SQL 脚本或 Python 函数,每次接入新数据源时自动运行,输出质量报告。这能大幅减少人工排查时间。