特征与表示决定模型看见什么
说明原始对象如何转成可计算表示,以及表示选择怎样引入信息、约束和偏差。
特征与表示决定模型看见什么
现实对象不能直接进入大多数模型。文字要转成标记或向量,影像要组织成像元和波段,业务记录要选择字段并处理缺失。这个转换形成表示。模型只能利用表示中保留的信息,也会继承表示引入的假设与偏差。
特征不是对象本身
地块面积、坡度、光谱值和道路距离可以描述一块土地,但它们没有包含地块的全部现实状态。选择哪些特征,等于判断哪些信息与任务相关。遗漏关键因素会限制模型,加入部署时无法取得的字段则会造成训练与使用不一致。
代理变量需要格外谨慎。邮政编码可能与服务区域相关,也可能间接编码收入或群体差异。模型发现相关性不代表这种变量适合进入决策,风险还要结合用途和受影响对象评估。
数值尺度会改变计算关系
许多模型依赖距离、内积或梯度。如果一个特征以百万计,另一个位于零到一之间,前者可能支配计算。标准化和归一化改变数值尺度,但不能修复单位错误或不合理编码。
类别变量也不能随意赋整数后当成连续量。把土地类型编码为 1、2、3 会暗示顺序和距离;独热编码、目标编码和嵌入表示各有不同假设。编码方法必须在训练和推理阶段保持一致。
特征工程把领域知识写进表示
原始时间戳可以派生季节、工作日和时间间隔,坐标可以派生距离或空间邻域,文本可以转成词频。这样的特征降低模型学习难度,也可能提前限定关系形式。例如只保留到最近设施的距离,会丢失方向、道路阻隔和多个设施共同作用。
特征计算还可能泄漏未来信息。用事件发生后的统计量预测事件,或在全体数据上计算归一化参数后再划分测试集,都会让评价过于乐观。特征流水线应只使用预测时可获得的信息,并在训练折内拟合处理参数。
学习表示由目标塑造
深度学习可以从像元、标记或波形中学习中间表示。嵌入向量把离散对象映射到连续空间,多层网络逐步组合局部模式。学习表示减少了部分手工设计,却没有消除选择:网络结构、训练数据和目标函数仍决定什么关系被保留。
向量接近只表示在特定训练目标下产生相似表示,不自动等于现实语义相同。换任务、换模型或换数据后,距离含义可能改变。
表示需要版本和验证
特征定义、单位、缺失处理、类别词典和计算代码应与模型一起版本化。上线前要比较训练与服务输出,监测缺失率、范围和分布变化。scikit-learn 的转换与流水线文档提供实现参考,具体行为需按所用版本核对。
一个可靠表示应回答:每个维度从哪里来,何时可用,单位是什么,错误怎样处理,与任务的关系有什么依据。模型看见的世界由这些答案构成。
资料依据
- Ian Goodfellow、Yoshua Bengio、Aaron Courville:《Deep Learning》在线版,https://www.deeplearningbook.org/
- scikit-learn Project:User Guide,https://scikit-learn.org/stable/user_guide.html