60 秒回答模板

我会先分开处理:离散特征如果类别少可以 one-hot,类别多通常用 embedding 或 hashing;连续特征要做缺失处理、标准化、归一化、log 变换或分桶。然后把离散 embedding、连续数值向量和必要的交叉特征 concat 成统一输入,送入 LR、DNN、Wide&Deep 或推荐模型。注意训练和线上必须使用同一套字典、分桶边界和归一化参数,并监控缺失率和分布漂移。

考点 离散要 embedding
难度 算法岗真实面经题
回答目标 讲清方法、取舍和追问

深入解析

01

离散特征先向量化

性别、类目、城市、用户 ID、商品 ID 等离散特征不能直接按整数大小输入模型。小类别可 one-hot,大类别常用 hashing 或 embedding,避免把类别编号误当连续大小。

02

连续特征先标准化

价格、年龄、距离、次数等连续特征尺度差异大,通常要做缺失填充、标准化、归一化、截断、log 变换或分箱。这样能让模型训练更稳定,避免大尺度特征主导梯度。

03

拼接成统一输入

处理后的离散 embedding、连续特征向量和上下文特征可以按固定顺序 concat。拼接后要记录 feature schema,保证训练、验证和线上服务的字段顺序完全一致。

04

补充交叉关系

离散和连续特征之间可能存在交互,例如类目与价格区间、用户等级与消费频次。可以用人工交叉、分桶交叉、FM、DeepFM 或 attention 结构学习交互。

05

线上一致性

字典、embedding 表、归一化均值方差、分箱边界和缺失值规则都要版本化。线上分布漂移或未知类别比例上升时,拼接向量的质量会明显下降。

易错点

  • 不要把离散类别 ID 直接当连续数值输入。
  • 不要忽略特征尺度,连续特征未缩放会影响梯度和模型权重。
  • 不要让训练和线上 schema 顺序不一致。
  • 不要只做简单 concat 而完全不考虑交叉特征和缺失处理。

面试官追问

连续特征要不要分桶后再拼接?

取决于模型。线性模型常通过分桶获得非线性表达;树模型通常不需要;深度模型可以保留连续值,也可以同时加入分桶特征。

类别特征为什么不能直接用整数编码?

整数编码会引入不存在的大小关系和距离关系,例如城市 3 不比城市 1 更大。embedding 或 one-hot 更符合类别语义。

线上出现新类别怎么办?

可以映射到 UNK、使用 hashing、定期更新字典和 embedding,并监控未知类别比例,避免线上大量特征落到默认桶。