Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Feature Engineering

特征工程利用领域知识将原始数据转换为模型更容易学习的输入。涵盖核心技术、数据泄漏陷阱、用途和代码。

特征工程是利用领域知识和数据,创建、转换并选择输入变量(即特征)的过程,让机器学习模型以这些变量为依据进行学习。原始时间戳可以转换为小时和星期几;一组银行卡交易可以转换为客户过去 30 天的消费情况;一次出行的距离和时长可以转换为速度。选择合适的特征能让简单模型捕捉到原本可能遗漏的模式,这在表格数据和时间序列数据中尤为重要,因为模型只能使用提供给它的列。深度学习模型可以从原始图像、音频和文本中自行学习特征,因此在这些领域,特征工程逐渐转向数据准备和基于模型输出构建特征。

常见技术#

  • 缩放和归一化:将特征标准化为均值为零、方差为一,可避免单位较大的特征在基于距离的模型和基于梯度的训练中占据主导;对收入或价格等偏态数值进行对数变换则可以压缩数值范围。
  • 类别编码:独热编码会将颜色等类别转换为二进制列;目标编码则会将每个类别替换为该类别对应的目标均值,并在独立的数据折上计算,避免编码泄露每一行自身的标签。
  • 比率和交互项:债务收入比、每平方英尺价格和身体质量指数,会将两个原始数值组合成真正影响结果的量。
  • 日期和时间特征:小时、星期几、月份和节假日标记可以揭示周期性;对小时使用正弦和余弦编码,则能让 23:00 与 00:00 相邻。
  • 滞后值和滚动窗口:此前的数值、滚动均值和近期窗口中的计数,可以为模型提供传感器、账户或产品的近期历史记录。
  • 分箱:将连续数值划分到不同区间(例如年龄段)中,可以捕捉阶跃效应,并限制极端值的影响。
  • 使用 PCA 降维:主成分分析会将许多彼此相关的特征压缩为少数几个互不相关的特征。
  • 特征选择:过滤法会根据特征与目标之间的相关性或互信息对特征排序;包装法会使用模型测试特征子集;L1 正则化等嵌入法则会在训练过程中移除特征。

比例特征说明了这种方法为何有效。深度受限的决策树一次只能按一个特征进行划分,因此仅凭距离和持续时间,很难准确近似“平均速度高于 90 km/h”这一规则;而计算出速度后,就能一次准确划分:

import numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier

# 1,000 trips: raw distance (km) and duration (h); label = average speed above 90 km/h
rng = np.random.default_rng(0)
distance = rng.uniform(10, 300, 1000)
hours = rng.uniform(0.5, 4.0, 1000)
y = (distance / hours > 90).astype(int)

raw = np.column_stack([distance, hours])
engineered = (distance / hours).reshape(-1, 1)  # domain knowledge: speed = distance / time

tree = DecisionTreeClassifier(max_depth=2, random_state=0)
for name, X in [("Raw distance and duration", raw), ("Engineered speed", engineered)]:
    print(f"{name}: accuracy {cross_val_score(tree, X, y, cv=5).mean():.3f}")

使用相同的深度为 2 的树,交叉验证准确率从原始距离和持续时间特征的 0.861 提升到工程化速度特征的 1.000,因为距离—持续时间空间中的对角线边界变成了速度上的单一阈值。

无数据泄漏地验证特征#

只有在预测时已知某个特征的值,这个特征才有效。使用“取消后的那个月内的支持电话数量”或在整个数据集上计算的目标编码的客户流失模型,在测试中得分很高,却会在生产环境中失效;这是一种数据泄漏。因此,所有带有学习所得参数的变换(例如缩放器均值或类别编码)都只在训练折上拟合,正如 scikit-learn 管道会自动执行的那样;每个新特征只有在能提高交叉验证得分时才会保留。生产系统还必须按照训练时完全相同的方式计算每个特征,特征存储会通过向两者提供相同的特征定义来处理这一点。

计算机视觉中的特征工程#

传统计算机视觉依赖人工设计的特征,例如边缘图、SIFT关键点描述符和方向梯度直方图,然后由支持向量机等分类器进行分类。自 AlexNet 于 2012 年赢得 ImageNet 挑战赛以来,卷积神经网络已能从像素中学习自己的特征图,工程工作也转向了训练数据(通过数据增强)以及视觉模型的输出。Ultralytics SpeedEstimator根据YOLO26目标跟踪输出构建速度特征:轨迹达到五个位置后,它使用 meter_per_pixel 比例将首末位置之间的像素位移转换为米,再除以经过的时间,报告 km/h。

应用场景#

  • 信用风险:贷款机构从原始账户记录中计算债务收入比、信用额度使用率以及距上次逾期还款的月数;这些特征比原始余额更能预测违约。
  • 预测性维护:根据振动和温度数据流计算的滚动平均值、变化率和频带能量,能在任何原始读数达到警报阈值之前揭示正在发展的磨损。
  • 欺诈检测:交易速度特征(例如过去一小时的刷卡交易次数)以及购买地点与持卡人常见位置之间的距离,可以区分欺诈和正常消费。
  • 需求预测:零售模型会为每家门店和每种商品结合销售滞后值、滚动平均值、价格变化、促销标记和节假日指标。
  • 特征提取:使用固定算法或学习所得模型(例如 PCA 或神经网络主干)自动计算特征。这两个术语常被互换使用,而特征工程涵盖更广泛、由领域知识指导的流程。
  • 数据预处理:通过修正错误、填补缺失值和转换类型来清理并格式化数据,这是设计特征之前的步骤。
  • 嵌入:模型在训练过程中学习到的稠密向量,用来表示词语、图像或用户;在大多数语言和视觉系统中,它们取代了词频等人工构建的特征。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来