Feature Engineering
特征工程利用领域知识选择、转换或创建输入变量,帮助 ML 模型学习。本文介绍相关技术、示例和代码。
特征工程是将原始数据转换为有意义的输入,以提升机器学习模型性能的过程。它会利用领域知识来选择、修改或创建新的变量(称为特征),帮助算法更好地理解数据中的模式。尽管现代深度学习架构,例如卷积神经网络(CNN),能够自动学习特征,但显式特征工程在许多工作流中仍是关键步骤,尤其是在处理结构化数据或尝试优化边缘设备上的模型效率时。通过改进输入数据,开发者通常可以用更简单的模型实现更高的准确率,从而减少对大量计算资源的需求。
特征工程在 AI 中的作用#
在人工智能(AI)领域,原始数据很少能直接用于处理。图像可能需要调整大小,文本可能需要分词,表格数据也常包含缺失值或无关列。特征工程弥合了原始信息与算法所需数学表示之间的差距。有效的特征工程能够突出模型可能忽略的关键关系,例如将“距离”和“时间”结合起来生成“速度”特征。这个过程与数据预处理密切相关,但预处理侧重于清理和格式化,而特征工程则通过创造性增强来提升预测能力。
对于计算机视觉任务,特征工程已经有了显著发展。传统方法需要手动构造描述符,例如尺度不变特征变换(SIFT),以识别边缘和角点。如今,YOLO26 等深度学习模型会在隐藏层中自动提取特征。不过,特征工程在数据集准备过程中仍发挥着重要作用,例如生成合成数据,或应用拼图和混合等数据增强技术,让模型在训练期间接触更多样、更稳健的特征变化。
常见技术与应用#
特征工程涵盖多种策略,具体取决于问题和数据类型。
- 降维:主成分分析(PCA)等技术可以在保留关键信息的同时减少变量数量,防止高维数据集出现过拟合。
- 类别变量编码:算法通常需要数值输入。独热编码等方法会将类别标签(例如“红色”“蓝色”)转换为模型可以处理的二进制向量。
- 归一化与缩放:将特征缩放到标准范围,可确保数值较大的变量(如房价)不会主导数值范围较小的变量(如房间数量)。这对于神经网络中的基于梯度的优化至关重要。
- 分箱与离散化:将连续值分组成不同区间(例如年龄段),有助于模型更有效地处理异常值并捕捉非线性关系。
现实场景示例#
特征工程应用于各行各业,用于解决复杂问题。
-
制造业预测性维护:在智能制造中,传感器会采集机械设备的原始振动和温度数据。工程师可以创建表示温度“变化率”或振动强度“滚动平均值”的特征。借助这些工程化特征,异常检测模型可以提前数天预测设备故障,而不只是对当前传感器读数做出反应。
-
信用风险评估:金融机构利用特征工程评估贷款资格。除了查看原始“收入”数值外,还可以构造“债务收入比”或“信用额度使用率”等特征。这些派生特征能更细致地反映借款人的财务状况,从而更准确地进行风险分类。
代码示例:自定义特征增强#
在计算机视觉中,我们可以通过增强图像来模拟不同环境条件,从而“构造”特征。这有助于 YOLO26 等模型更好地泛化。以下示例演示如何使用 OpenCV进行简单的灰度变换,促使模型学习结构特征,而不是只依赖颜色。
import random
import cv2
# 使用 OpenCV 加载示例图像
img = cv2.imread("path/to/image.jpg")
# 构造一种新的视觉变化:以 50% 的概率转换为灰度图
if random.random() < 0.5:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR) # 为模型保留 3 个通道
# 这一过程有助于模型关注边缘和形状,提升鲁棒性与相关术语的区别#
区分特征工程与相似概念,有助于避免在讨论工作流时产生混淆。
- 特征工程与特征提取:这两个术语经常混用,但含义略有不同。特征工程指的是根据领域知识手动、创造性地构造新输入的过程。相比之下,特征提取通常指自动化方法或数学投影(如 PCA),将高维数据提炼为紧凑的表示。在深度学习(DL)中,卷积神经网络(CNN)的各层会学习边缘和纹理滤波器,从而自动执行特征提取。
- 特征工程与嵌入:在现代自然语言处理(NLP)中,手动创建特征(例如统计词频)已基本被嵌入取代。嵌入是模型自身学习得到的稠密向量表示,用于捕捉语义。嵌入虽然也是一种特征,但它们是在模型训练期间学习得到的,而不是通过人工明确“构造”出来的。
掌握特征工程后,开发者可以构建不仅准确度更高、效率也更高的模型,以更少的计算资源实现高性能。Ultralytics Platform 等工具通过提供直观的数据集管理和模型训练界面,为此提供支持,让用户能够快速迭代特征策略。










