4. 特征工程回顾:特征类型、标准化与归一化、特征重要性

在构建实时特征样本偏差校验系统之前,必须夯实特征工程的基础。特征工程的质量直接决定了上游模型的表现,也决定了偏差校验的敏感度与可解释性。本节从特征类型、尺度变换、重要性评估三个维度进行系统性回顾。

4.1 特征类型与处理策略

特征按数据性质可分为数值型、类别型和文本型三大类,每类在实时管道中的处理方式差异显著。

特征类型 子类型 典型示例 实时处理要点
数值型 连续 / 离散 用户年龄、交易金额、点击次数 需检测分布漂移、异常值截断、缺失值填充
类别型 有序 / 无序 城市编码、设备类型、用户等级 需处理新类别(OOV)、低频类别合并、编码一致性
文本型 短文本 / 长文本 搜索词、商品标题、评论摘要 需实时向量化、长度截断、词汇表版本对齐
实践提示:在实时特征管道中,类别型特征的“新类别涌现”是样本偏差的常见来源。建议为每个类别特征维护一个在线频次字典,当训练集与实时请求中出现从未见过的类别值时,立即触发偏差告警。

4.2 特征标准化与归一化

尺度变换是确保模型稳定收敛、特征重要性可比的前提。标准化(Standardization)与归一化(Normalization)在实时场景下的选择需考虑数据分布与计算开销。

4.2.1 核心方法对比

方法 公式 输出范围 对异常值敏感度 实时适用性
Z-Score 标准化 \( x' = \frac{x - \mu}{\sigma} \) 无固定范围,均值为0,标准差为1 高 需维护滑动均值和方差
Min-Max 归一化 \( x' = \frac{x - min}{max - min} \) [0, 1] 极高 需维护全局或滑动 min/max
Robust 缩放 \( x' = \frac{x - median}{IQR} \) 无固定范围 低 适合含异常值的实时流
MaxAbs 归一化 \( x' = \frac{x}{|max|} \) [-1, 1] 高 适合稀疏数据
偏差校验关联:当实时请求的特征分布与训练集使用的标准化参数(如 \(\mu, \sigma\))发生偏移时,即使原始特征值未变,变换后的特征值也会产生系统性偏差。因此,标准化参数的时效性应纳入偏差监控指标。

4.2.2 实时标准化参数更新策略

在实时特征管道中,标准化参数不能静态固定,而应随数据分布变化自适应调整。常用策略包括:

  • 滑动窗口法:维护最近 N 个样本的均值和方差,窗口大小根据业务周期设定(如 24 小时)。
  • 指数加权移动平均(EWMA):对历史参数赋予衰减权重,适合快速响应分布变化。
  • 分桶更新法:按时间分桶(如每小时一个桶),每个桶独立计算参数,切换时平滑过渡。
# 伪代码:滑动窗口 Z-Score 标准化
class SlidingZScore:
    def __init__(self, window_size=10000):
        self.window = deque(maxlen=window_size)
        self.mean = 0.0
        self.std = 1.0

    def update(self, value):
        self.window.append(value)
        self.mean = np.mean(self.window)
        self.std = np.std(self.window) + 1e-8

    def transform(self, value):
        return (value - self.mean) / self.std

4.3 特征重要性评估

特征重要性不仅用于模型解释,更是偏差校验中特征优先级排序的依据。高重要性的特征发生分布偏移时,对模型输出的影响更大,应优先监控。

4.3.1 常用评估方法

方法 原理 适用模型 实时计算代价
树模型特征重要性 基于分裂增益或节点纯度提升 随机森林、XGBoost、LightGBM 低(训练时已计算)
Permutation Importance 打乱特征值后观察性能下降 模型无关 高(需多次推理)
SHAP 值 基于博弈论 Shapley 值 模型无关 高(需背景数据集)
系数绝对值 线性模型权重绝对值 线性回归、逻辑回归 极低
推荐做法:在实时偏差校验系统中,优先使用树模型内置重要性作为特征优先级排序的依据。该值在模型训练完成后即可获得,无需额外计算。将重要性归一化到 [0, 1] 区间后,作为偏差告警的加权系数。

4.3.2 特征重要性在偏差校验中的应用

特征重要性可直接用于构建加权分布距离指标。例如,计算训练集与实时请求集之间的加权 PSI(Population Stability Index):

# 加权 PSI 计算示例
def weighted_psi(expected, actual, importance_weights):
    psi = 0.0
    for feat, weight in importance_weights.items():
        feat_psi = compute_psi(expected[feat], actual[feat])
        psi += weight * feat_psi
    return psi

通过引入特征重要性权重,偏差告警将更聚焦于对模型输出影响大的特征,减少低重要性特征分布波动带来的误报。

特征工程与实时偏差校验关联架构 特征类型识别 数值型 / 类别型 / 文本型 尺度变换 标准化 / 归一化 特征重要性 权重 / 优先级排序 实时特征样本偏差校验引擎 分布检测 · 告警阈值 · 根因定位 告警输出 · 特征溯源 · 模型回退 特征类型决定预处理策略 尺度变换影响分布距离计算 特征重要性加权偏差指标 减少低权重特征误报

4.4 特征类型对偏差校验的特殊影响

不同类型的特征在偏差校验中需要差异化的处理逻辑:

  • 数值型特征:使用 KS 检验、PSI、Wasserstein 距离等连续分布度量。需注意长尾分布下均值漂移不敏感的问题。
  • 类别型特征:使用卡方检验、频次分布差异(Jensen-Shannon 散度)。重点关注新类别(OOV)的出现频率。
  • 文本型特征:使用嵌入空间中的中心距离(如 Cos 距离)或词汇覆盖率的差异。需监控 OOV 词比例。
关键结论:特征工程不是一次性工作。在实时偏差校验体系中,特征类型、尺度参数、重要性权重三者共同构成了动态监控的元数据层。每次模型版本更新时,都应重新计算特征重要性并同步更新偏差校验的加权规则。
特征类型 → 偏差校验方法映射 数值型特征 类别型特征 文本型特征 KS 检验 / PSI Wasserstein 距离 卡方检验 / JS 散度 OOV 频次监控 嵌入中心距离 OOV 词比例监控 选择原则 连续分布 → 距离度量 离散分布 → 频次度量 高维嵌入 → 空间度量 所有类型均需 监控缺失率变化 特征重要性加权 统一告警阈值

4.5 本节要点总结

维度 核心要点 对偏差校验的直接影响
特征类型 数值型、类别型、文本型需差异化处理 决定分布距离度量的选择
尺度变换 标准化参数需实时更新,推荐滑动窗口或 EWMA 参数过期会导致系统性偏差误判
特征重要性 树模型内置重要性适合实时场景 用于加权偏差指标,减少误报
三者联动 类型 → 方法,尺度 → 参数,重要性 → 权重 构成完整的偏差校验元数据体系