特征工程
通过专业的特征工程提高机器学习的准确性。学习创建、转换和选择有影响力的特征的技术。
特征工程是利用领域知识将原始数据转化为信息属性的艺术和科学。
属性,从而为预测模型更有效地呈现潜在问题。在更广泛的
在机器学习(ML)的大范围内,原始数据很少能
它通常包含噪声、缺失值或算法无法直接解释的格式。
直接解释的格式。通过创建新特征或修改现有特征,工程师可以显著提高
模型的准确性和性能,其结果往往
结果往往比采用更复杂的算法更好。这一过程在收集的原始信息与模型所需的数学表示之间架起了一座桥梁。
收集的原始信息与
预测建模。
特征工程的核心技术
这一过程通常包括几个迭代步骤,旨在揭示数据中最相关的信号。虽然
工具(如Python 中的Pandas 库)为这些操作提供了便利,但这一策略依赖于对特定问题领域的理解。
策略在很大程度上依赖于对特定问题领域的理解。
-
估算和清理:在创建新特征之前,必须稳定数据。这包括
通过
数据清理技术来处理缺失值,例如用平均值、中位数或预测值来填补空缺。
平均值、中位数或预测值来填补缺失值。
估算。
-
转换和缩放:当输入变量的尺度相差悬殊时,许多算法的性能都很差。
不同的尺度时,许多算法的性能都很差。以下技术
归一化(将数据缩放至 0 到 1 的范围内)
或标准化(以平均值为数据中心)等技术,可确保学习过程中不会有任何单一特征纯粹因其大小而占主导地位。
纯粹因其大小而主导学习过程。
-
编码分类数据:模型通常需要数字输入。特征工程涉及
将文本标签或
分类数据转换成
数字。常见的方法包括标签编码和
单次编码,为每个类别创建二进制列。
-
功能构建:这是新变量产生的创造性环节。例如,在
例如,在一个房地产数据集中,工程师可能不会将 "长度 "和 "宽度 "分开使用,而是将它们相乘,创建一个 "平方英尺 "特征。
平方英尺 "特征,它与价格的相关性更强。
-
特征选择:添加过多特征会导致
过度拟合,即模型记忆噪音。
递归特征消除或
降维等技术有助于识别
并只保留最有影响的属性。
计算机视觉中的特征工程
在计算机视觉 (CV) 领域,特征工程通常采取以下形式
工程通常采用
数据增强。虽然现代深度学习
模型会自动学习层次结构和模式,但我们可以通过模拟不同的环境条件来 "设计 "训练数据,使其更具鲁棒性。
模拟不同的环境条件。修改
超参数调整配置,以
包括几何变换,使模型能够学习不受方向或角度影响的特征。
下面的代码片段演示了如何在训练一个
YOLO11 模型。通过调整参数,如
degrees 和 shear,我们从原始数据集中合成新的特征变化。
from ultralytics import YOLO
# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")
# Train with augmentation hyperparameters acting as on-the-fly feature engineering
# 'degrees' rotates images +/- 10 deg, 'shear' changes perspective
model.train(data="coco8.yaml", epochs=3, degrees=10.0, shear=2.5)
实际应用
特征工程在不同行业的实际应用最能体现其价值。
-
金融风险评估:在金融领域,原始交易日志不足以评估信用度。
评估信用度。专家利用
金融领域的人工智能
构建 "债务收入比 "或 "信贷使用率 "等比率。这些工程
特征提供了财务健康状况的直接信号,与使用原始数据相比,可以建立更精确的
信用风险建模。
工资或债务数字。
-
制造业中的预测性维护:在
人工智能在制造业中的应用
振动和温度的高频数据。将原始传感器读数直接输入模型通常会产生噪音,而且效果不佳。
且效果不佳。相反,工程师会使用
时间序列分析来创建特征,如
"过去一小时的滚动平均温度 "或 "振动标准偏差"。这些
这些汇总特征比瞬时值更能捕捉表明机器磨损的趋势和异常现象。
值。
与相关术语的区别
将特征工程与类似概念区分开来,有助于避免工作流程讨论中的混淆。
-
特征工程与特征提取:虽然两者经常互换使用,但还是有细微差别的。
特征工程指的是根据领域知识,手动、创造性地构建新输入的过程。
领域知识构建新的输入。相比之下
特征提取通常指自动
方法或数学投影(如 PCA),可将高维数据提炼为密集的表示形式。在
深度学习(DL)中,层
卷积神经网络(CNN)
通过学习边缘和纹理过滤器来执行自动特征提取。
-
特征工程与嵌入在现代
在现代自然语言处理(NLP)中,人工创建特征(如计算词频)已在很大程度上被
嵌入。嵌入是由模型自身学习的稠密向量
嵌入是模型自身学习的密集向量表示,用于捕捉语义。嵌入是特征的一种形式、
它们是通过
自动机器学习(AutoML)
过程学习的,而非明确的人工 "设计"。
通过掌握特征工程,开发人员可以建立不仅更准确而且更高效的模型、
实现高性能所需的计算能力更少。