3. 特征工程基础:特征分类、重要性、分布与统计量

在构建 LightGBM 模型之前,必须对原始特征进行系统化的分类与诊断。特征的质量直接决定了模型的上限,而特征工程正是将原始数据转化为高质量特征的过程。本节将围绕特征的三大分类体系、特征重要性的评估方法以及特征分布与统计量的监控手段展开,为后续的哨兵联动监控打下基础。

3.1 特征分类体系

根据数据的内在属性与建模需求,特征通常被划分为三大类:数值型、类别型和时序型。每种类型在 LightGBM 中的处理方式和监控要点均不同。

特征类型 定义 常见示例 LightGBM 处理方式 监控关注点
数值型 连续或离散的定量测量值,具有数值大小与顺序意义 年龄、收入、温度、点击次数 直接作为浮点型输入;支持缺失值自动处理 均值漂移、方差变化、异常值比例、分位数偏移
类别型 有限个离散取值,表示类别或标签,无大小顺序 性别、城市、产品类别、用户等级 需转换为整数编码;LightGBM 原生支持类别特征(categorical_feature 参数) 新类别出现、类别频次分布变化、低频类别消失
时序型 与时间顺序相关的特征,包含趋势、周期、滞后等结构 交易时间、注册日期、时间戳、滑动窗口统计量 通常需手工提取时间特征(年/月/日/周/小时);LightGBM 不直接处理时间序列 时间漂移、季节性模式变化、滞后特征相关性衰减
实践建议: 在特征工程阶段,建议为每个特征打上类型标签(type_meta),并记录其原始分布统计量。这些元数据将作为后续哨兵监控的基准线(baseline)。

3.2 特征重要性评估

特征重要性用于衡量每个特征对模型预测的贡献程度。LightGBM 提供三种内置的重要性计算方式,适用于不同的监控场景。

  • Gain(信息增益):特征在树分裂时带来的平均信息增益。反映特征对模型精度的实际贡献,是哨兵监控的首选指标。
  • Split(分裂次数):特征被选为分裂节点的总次数。反映特征的使用频率,但对噪声特征敏感。
  • Cover(覆盖样本数):特征分裂节点所覆盖的训练样本数量。反映特征的泛化广度。
# LightGBM 特征重要性提取示例
import lightgbm as lgb

model = lgb.LGBMClassifier()
model.fit(X_train, y_train)

# 获取三种重要性
importance_gain = model.booster_.feature_importance(importance_type='gain')
importance_split = model.booster_.feature_importance(importance_type='split')
importance_cover = model.booster_.feature_importance(importance_type='cover')

# 输出特征重要性排序
feature_names = X_train.columns
for name, gain, split, cover in zip(feature_names, importance_gain, importance_split, importance_cover):
    print(f"{name}: Gain={gain:.4f}, Split={split}, Cover={cover}")
监控陷阱: 当特征重要性(Gain)在连续两个监控周期内下降超过 20% 时,可能意味着特征分布发生漂移或特征与目标的关系变弱。此时应触发哨兵告警,并回溯特征分布统计量。

3.3 特征分布与统计量

特征分布是数据质量的晴雨表。通过持续监控特征的统计量,可以及时发现数据漂移、异常注入或采集故障。以下是最核心的监控统计量体系。

3.3.1 数值型特征统计量

统计量 计算公式/说明 监控意义 哨兵阈值参考
均值(Mean) μ = Σx / n 检测整体偏移 ±3σ 或 ±5% 相对变化
标准差(Std) σ = sqrt(Σ(x-μ)² / n) 检测离散度变化 相对变化 > 20%
中位数(Median) 排序后中间值 抗异常值的中心趋势 偏移 > 5%
偏度(Skewness) 三阶标准化矩 检测分布对称性变化 绝对值 > 1.5
峰度(Kurtosis) 四阶标准化矩 检测尾部厚度变化 绝对值 > 3.0
缺失率(Missing%) 缺失数 / 总数 检测采集故障 > 5% 或突增 2x

3.3.2 类别型特征统计量

  • 类别基数(Cardinality):唯一类别数量。监控新类别出现或类别合并。
  • 频次分布(Frequency Distribution):每个类别的出现次数。监控头部类别占比变化。
  • 熵(Entropy):H = -Σ p_i * log(p_i)。监控分布均匀性变化。
  • 缺失率:与数值型相同,监控空值比例。

3.3.3 时序型特征统计量

  • 时间跨度(Time Range):最小与最大时间戳的差值。
  • 事件密度(Event Density):单位时间内的记录数。
  • 滞后自相关(Lag Autocorrelation):特征与其滞后版本的相关性,监控时序结构是否保持。
核心原则: 所有统计量的监控都应基于训练集的基准线(baseline)。哨兵系统将实时特征统计量与基准线进行对比,当偏差超过预设阈值时触发告警。建议每 7 天重新校准一次基准线,以适应业务周期性变化。

3.4 特征质量监控架构

下图展示了特征质量监控的完整流程,从特征分类、统计量计算到哨兵告警的闭环链路。

特征质量监控架构图 特征质量监控与哨兵联动架构 原始数据 特征分类 统计量计算 基准线库 偏差检测 哨兵告警 人工干预 反馈回路:更新基准线 / 修复特征 说明 统计量 vs 基准线

3.5 特征分布可视化与监控

除了数值统计量,分布形状的可视化对比也是哨兵监控的重要手段。下图展示了训练集与生产集之间特征分布的对比逻辑。

特征分布对比监控图 特征分布对比监控(PSI / KS 检验) 训练集 生产集 PSI = 0.15 KS = 0.12 p-value < 0.01 分布漂移 监控指标:群体稳定性指标(PSI)< 0.1 正常;0.1~0.25 需关注;> 0.25 触发告警

3.6 特征质量监控清单

在实际项目中,建议按照以下清单对每个特征进行初始化登记与持续监控。

  1. 特征注册:为每个特征分配唯一 ID,记录特征名称、类型、来源表、业务含义。
  2. 基准线计算:基于训练集计算所有统计量,存入基准线库。
  3. 监控阈值设定:根据业务容忍度,为每个统计量设定告警阈值(参考 3.3 节表格)。
  4. 周期性检测:每天/每小时计算生产集统计量,与基准线对比。
  5. 告警触发:当偏差超过阈值时,哨兵系统发出告警,并附带偏差详情。
  6. 人工研判:数据科学家根据告警内容,判断是数据质量问题还是业务漂移,并采取相应措施。
本章小结: 特征分类是监控的基础,特征重要性是模型健康的指示器,特征分布与统计量是数据质量的量化标尺。三者结合,构成了 LightGBM 特征质量监控的完整三角体系。在下一阶段,我们将基于这些基础统计量,构建具体的哨兵监控规则与自动化告警流水线。