4、数据基础与准备:化妆品合规数据来源与特征工程
趋势预测模型的价值高度依赖于输入数据的质量与结构。在化妆品合规场景中,数据来源分散、格式异构、噪声显著,且政策语义与业务指标交织,直接套用通用数据清洗流程往往导致关键监管信号丢失。本章围绕合规数据全链路——来源盘点、清洗策略、缺失值处理、特征工程——展开,建立一套面向趋势预测的合规数据治理框架。
4.1 合规数据来源盘点与采集策略
化妆品合规数据并非单一数据库,而是由多个监管与市场渠道共同构成的异构数据生态。建立趋势预测模型前,必须明确各来源的数据结构、更新频率、权威层级与噪声特征。
| 数据来源 | 典型内容 | 更新频率 | 结构化程度 | 主要噪声 |
|---|---|---|---|---|
| 监管公告 | 抽检不合格通报、飞行检查结果、标准修订 | 周/月 | 半结构化(PDF/网页) | 格式不统一、术语差异 |
| 不良反应监测 | 化妆品不良反应报告、严重程度分级 | 实时/日 | 结构化(数据库) | 重复上报、信息缺失 |
| 市场抽检 | 抽检批次、检验项目、不合格项目 | 月度/季度 | 半结构化 | 抽样偏差、检测方法差异 |
| 舆情数据 | 社交平台投诉、消费者评价、媒体报道 | 实时 | 非结构化(文本) | 情感偏差、谣言噪声 |
4.2 数据清洗:从原始文本到标准化记录
合规数据清洗的核心目标是将多源异构数据转换为统一schema的标准化记录。清洗过程分为三个层次:格式层(统一日期、单位、编码)、语义层(对齐术语、消解实体)、逻辑层(剔除矛盾记录、识别重复项)。
4.2.1 格式标准化
- 时间归一化:将“2024年3月15日”“2024-03-15”“20240315”统一为ISO 8601格式。
- 产品名称对齐:同一产品在不同公告中可能使用“XX美白霜”“XX美白霜(升级版)”等不同名称,需建立产品别名映射表。
- 企业名称消歧:“广州XX生物科技有限公司”与“广州XX生物科技”指向同一实体,需通过统一社会信用代码或工商注册信息进行关联。
4.2.2 去重与去噪
不良反应数据中常见同一事件被多个渠道重复上报;舆情数据中大量转发、营销内容属于噪声。去重策略采用多键匹配:时间窗口+产品名称+企业名称+事件描述相似度(SimHash或编辑距离)。去噪则依赖规则过滤(如去除纯营销文案)与人工标注的样本训练分类器。
4.3 缺失值处理策略
合规数据缺失模式具有明显的业务特征:监管公告中“不合格项目”字段缺失率较低,但“产品批号”缺失率较高;舆情数据中“地域”字段缺失率可达40%以上。处理策略需区分缺失机制:
| 缺失类型 | 示例 | 推荐处理方式 |
|---|---|---|
| 完全随机缺失 | 抽检记录中个别检测值未录入 | 删除记录或均值/中位数填充 |
| 随机缺失 | 舆情数据缺少地域标签 | 多重插补或模型预测(基于文本内容推断) |
| 非随机缺失 | 企业未申报不良反应(系统性缺失) | 引入“缺失指示变量”作为特征,不强行填充 |
4.4 特征工程:将合规信号转化为预测变量
特征工程是连接原始数据与趋势预测模型的桥梁。针对化妆品合规场景,特征体系可分为四类:时间特征、频次特征、文本特征、风险编码特征。
4.4.1 时间滑窗特征
趋势预测的核心是捕捉时间维度上的变化。构建滑窗统计特征:
# 以产品为粒度,计算过去90天的通报频次
def rolling_features(df, window=90):
df = df.sort_values('date')
df['通报次数_90d'] = df.groupby('product_id')['event_id'].transform(
lambda x: x.rolling(window, min_periods=1).count()
)
df['首次通报距今天数'] = (df['date'] - df.groupby('product_id')['date'].transform('min')).dt.days
return df
4.4.2 文本特征提取
监管公告中的“不合格原因”和舆情文本是重要的非结构化信息源。采用TF-IDF或BERT嵌入提取语义特征,同时构建合规领域词典(如“菌落总数超标”“禁用成分”“标签不符”等关键词),统计每条记录中风险关键词的命中数量与类别。
4.4.3 风险编码特征
将定性风险等级转化为数值特征:
- 不合格严重程度:按“一般不合格=1,严重不合格=2,重大安全风险=3”编码。
- 企业历史违规次数:累计计数,反映企业合规惯性。
- 产品品类风险基线:不同品类(如染发剂、防晒霜)的基准风险水平不同,需归一化处理。
4.5 案例拆解:某美白产品舆情预警模型的数据准备
背景:某化妆品企业希望提前1-2周预测旗下美白产品线可能出现的合规风险事件,以便提前应对。
初始数据情况:
- 监管公告数据:近3年共1,247条,其中涉及美白品类的有89条,字段缺失率约15%。
- 不良反应数据:2,356条,存在约12%的重复记录。
- 舆情数据:从微博、小红书抓取约12万条文本,其中约70%为营销内容需过滤。
处理过程:
- 清洗:统一日期格式,建立产品别名映射表(将“XX光感美白精华”与“XX美白精华液”关联为同一产品线),去除营销类舆情文本。
- 缺失值处理:对“不良反应严重程度”字段采用模型预测填充(基于产品品类、报告来源、症状描述);对“舆情地域”字段创建缺失指示变量。
- 特征构建:生成90天滑窗通报频次、30天舆情情感均值、风险关键词命中数、企业历史违规累计值等共23个特征。
结果对比:使用相同的时间序列模型(LSTM),经过完整数据治理后的模型在测试集上的F1分数从0.61提升至0.78,提前预警准确率提升27%。关键改进点在于:缺失指示变量帮助模型识别了“沉默”企业的风险信号;文本特征有效捕捉了“泛白”“刺痛”等早期舆情关键词。
4.6 常见误区与总结
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 忽略非结构化数据 | 丢失舆情中的早期风险信号 | 结合NLP技术提取文本特征 |
| 对所有缺失值一律填充 | 掩盖“未上报”的系统性风险 | 区分缺失机制,引入缺失指示变量 |
| 特征工程脱离业务语义 | 模型可解释性差,难以落地 | 与合规专家共同定义风险编码规则 |
| 忽视时间窗口选择 | 滑窗过长导致信号滞后,过短则噪声大 | 通过实验对比不同窗口(30/60/90天)的模型效果 |
数据基础与准备是趋势预测模型在化妆品合规领域落地的关键前置环节。从多源异构数据的采集、清洗、缺失值处理到特征工程,每一步都需结合监管业务逻辑进行定制化设计。只有将数据治理与合规语义深度融合,才能为后续模型训练提供高质量、高解释性的输入,最终实现从“被动应对”到“主动预警”的合规管理升级。