3. 数据准备基础:数据源类型与清洗原则

分群评分沙盘的精度,80% 取决于数据质量。本章聚焦三类核心数据源的结构特征与清洗预处理原则,帮助你在搭建沙盘前建立可靠的数据基座。

3.1 三类核心数据源

用户分群与评分建模通常依赖以下三类数据源,它们在时效性、结构化程度和业务含义上各有差异:

数据源类型 典型字段 更新频率 分群用途
用户画像 年龄、性别、地域、职业、设备型号 低频(天/周) 静态分层、基础属性筛选
行为日志 页面浏览、点击、搜索、停留时长 高频(秒/分钟) 活跃度、兴趣偏好、行为序列
交易记录 订单金额、商品类目、支付时间、复购间隔 中频(小时/天) 价值分层、RFM 评分、生命周期
实战建议:初期优先整合「用户画像 + 交易记录」两张表,行为日志可作为第二阶段精细化分群的增量数据源。

3.2 数据源结构对比

三类数据源在存储结构和关联方式上存在显著差异,理解这些差异有助于设计高效的 ETL 流程:

  • 用户画像表:宽表结构,一行一用户,字段稳定,适合直接 join。
  • 行为日志表:长表结构,一行一事件,用户 ID 重复出现,需聚合或序列化。
  • 交易记录表:中间态,一行一订单,可聚合为用户级指标(总金额、频次、最近一次时间)。
三类数据源结构对比 用户画像(宽表) user_id(PK) gender age_group city_level device_type register_date 一行一用户,字段稳定 行为日志(长表) event_id(PK) user_id(FK) event_type page_url timestamp duration_ms 一行一事件,需聚合 交易记录(中间表) order_id(PK) user_id(FK) amount category pay_time order_status 一行一订单,可汇总 user_id user_id

3.3 数据清洗与预处理原则

原始数据进入沙盘前必须经过清洗与预处理。以下是五条核心原则,按优先级排列:

  1. 完整性原则:处理缺失值。用户画像中缺失率 > 50% 的字段直接剔除;行为日志中缺失 user_id 的事件整行丢弃。
  2. 一致性原则:统一编码与单位。性别字段统一为 0/1,金额统一为分,时间统一为 UTC 时间戳。
  3. 准确性原则:剔除异常值。交易金额为负数、年龄 > 120 岁、时间戳为未来时间等明显错误数据。
  4. 时效性原则:设定时间窗口。行为日志只保留近 90 天数据,交易记录保留近 365 天数据。
  5. 去重原则:基于主键或业务键去重。同一 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 指标(最近一次交易时间、交易频次、交易金额)。
从原始数据到特征宽表 原始数据 数据清洗 特征聚合 特征宽表 画像 / 日志 / 交易 按 user_id 聚合 去重 / 异常 / 缺失

3.6 数据质量检查清单

在将数据导入沙盘前,建议逐项检查以下维度:

检查项 检查方法 合格标准
缺失率 统计每列 NULL 占比 关键字段 < 5%,非关键字段 < 30%
重复率 统计主键重复记录数 重复率 < 1%
异常值 箱线图或 3σ 检测 异常值占比 < 2%
时间覆盖 检查时间戳范围 覆盖目标分析周期
用户覆盖 统计唯一 user_id 数 与业务预期一致
效率技巧:将上述检查项写成 SQL 脚本或 Python 函数,每次接入新数据源时自动运行,输出质量报告。这能大幅减少人工排查时间。