机器学习笔记——特征工程

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的特征工程方法、正则化方法和简要介绍强化学习。

在这里插入图片描述

文章目录

  • 特征工程(Fzeature Engineering)
    • 1. 特征提取(Feature Extraction)
      • 手工特征提取(Manual Feature Extraction):
      • 自动特征提取(Automated Feature Extraction):
    • 2. 特征选择(Feature Selection)
      • 1. 过滤法(Filter Methods)
      • 2. 包裹法(Wrapper Methods)
      • 3. 嵌入法(Embedded Methods)
      • 4. 其他方法
      • 5. 选择方法的应用场景
      • 总结
    • 3. 特征构造(Feature Construction)
    • 4. 特征缩放
      • 4.1 归一化(Normalization)
      • 4.2 标准化(Standardization)
      • BN、LN、IN、GN
  • 热门专栏
    • 机器学习
    • 深度学习

特征工程(Fzeature Engineering)

1. 特征提取(Feature Extraction)

特征提取:从原始数据提取能够有效表征数据特征的过程。它将原始数据转换为适合模型输入的特征表示。

手工特征提取(Manual Feature Extraction):

  • 文本数据
    • 词袋模型(Bag of Words):将文本数据转化为词频向量,每个单词是一个维度,值为该单词在文本中出现的次数。
    • TF-IDF:为词袋模型加入词频-逆文档频率(Term Frequency-Inverse Document Frequency),降低常见词语的权重提升重要词语的权重
    • N-gram:将连续的 N 个词作为一个特征,捕捉词语间的局部依赖关系
  • 图像数据
    • 边缘检测:使用 Sobel 算子、Canny 边缘检测等方法提取图像边缘信息。
    • SIFT(尺度不变特征变换):提取图像的关键点和局部特征,具有尺度不变性和旋转不变性。
    • HOG(方向梯度直方图):将图像分块,并统计每块的梯度方向直方图,用于描述局部形状和纹理特征。
  • 时间序列数据
    • 移动平均:对时间序列进行平滑,消除短期波动。
    • 傅里叶变换:将时间域的信号转化为频域信号,分析数据的周期性。
    • 窗口函数:将时间序列分为若干窗口,分别计算每个窗口的统计特征,如均值、方差等。

自动特征提取(Automated Feature Extraction):

  • 使用卷积神经网络(CNN):从图像中自动提取高级特征,如边缘、纹理、形状等。
  • 使用循环神经网络(RNN):处理时间序列数据,捕捉长时间依赖关系。
  • 使用BERT(Transformer):通过自监督学习自动提取上下文敏感的文本特征。
  • 自动编码器(Autoencoder):使用无监督学习从数据中提取低维特征表示,捕捉数据的潜在结构和模式。

2. 特征选择(Feature Selection)

特征选择(Feature Selection)是指从原始特征集中挑选出与目标任务最相关的特征,以提高模型的性能、减少训练时间以及降低过拟合的风险。特征选择方法主要分为三类:过滤法(Filter Methods)包裹法(Wrapper Methods)嵌入法(Embedded Methods)

1. 过滤法(Filter Methods)

  • 原理:独立于模型,训练前首先根据某些统计指标对特征进行评分,然后选择得分较高的特征。这种方法不依赖于特定的学习算法,只是基于数据本身的特性进行筛选
  • 常见方法
    • 方差选择法剔除方差较小的特征,认为方差小的特征对目标值影响小。
    • 皮尔森相关系数:计算特征与目标变量之间的线性相关性,选择线性相关性较高的特征
    • 互信息:衡量特征与目标变量之间的信息增益,选择信息量大的特征。
  • 优点计算效率高,易于实现
  • 缺点:未考虑特征之间的相互作用,可能遗漏组合特征的重要性。

2. 包裹法(Wrapper Methods)

  • 原理:在训练中,通过训练模型评估特征子集的表现,使用搜索策略找到对目标任务最优的特征组合。包裹法直接根据模型的性能进行选择,通常通过交叉验证来评估特征子集的好坏。
  • 常见方法
    • 前向选择(Forward Selection):从空集开始逐步添加对模型性能提升最大的特征。
    • 后向消除(Backward Elimination):从所有特征开始逐步移除对模型性能影响最小的特征。
  • 优点:能够考虑特征之间的相互作用,适合复杂的特征选择任务。
  • 缺点:计算开销大,尤其是当特征数目较多时,训练多个模型的过程会非常耗时。

3. 嵌入法(Embedded Methods)

  • 原理:嵌入法结合了过滤法和包裹法的优点,直接在模型训练过程自动选择特征。它通过学习算法自动选择最重要的特征,使特征选择与模型训练同时进行。
  • 常见方法
    • L1正则化(Lasso回归):通过在损失函数中添加L1正则化项,使**部分特征的系数变为零,从而进行特征选择。
    • 决策树及其变体(如随机森林、XGBoost):树模型的特征重要性得分可以用于选择重要特征。
    • Elastic Net:结合L1和L2正则化的优势,在保持模型稀疏性的同时,减少了多重共线性的影响,进行特征选择和模型优化。
  • 优点:特征选择与模型训练同时完成,考虑特征间的相互作用,效率较高。
  • 缺点:需要根据特定算法来进行选择,不具有模型无关性。

4. 其他方法

  • PCA(主成分分析):虽然PCA是降维方法,但在某些场景下可以间接用于特征选择。通过对数据进行线性变换,将多个原始特征组合成少数几个主成分。
  • LDA(线性判别分析):常用于分类问题的降维,也可以视作一种特征选择方法。
  • 基于稳定性选择(Stability Selection):通过在多次子样本集上重复训练模型,并选择那些在多个子集上都表现重要的特征,从而增强选择的鲁棒性。

5. 选择方法的应用场景

  • 过滤法适用于快速预筛选大量特征的情况,计算效率高,但可能丢失特征之间的组合信息。
  • 包裹法在特征数不多时(例如几十个或上百个)效果较好,能找到最佳的特征组合,但计算开销较大。
  • 嵌入法通常适用于大多数场景,尤其是使用线性模型(Lasso)或树模型时,既能训练模型又能自动选择特征。

总结

下面是特征选择方法的总结表格,保留了原有的描述信息:

方法类别原理常见方法优点缺点适用场景
过滤法(Filter Methods)独立于模型,基于统计指标对特征评分,并选择得分较高的特征。- 方差选择法:剔除方差较小的特征
- 皮尔森相关系数:选择线性相关性高的特征
- 互信息:选择信息增益大的特征
计算效率高,易于实现未考虑特征间相互作用,可能遗漏重要的组合特征快速预筛选大量特征的情况,适合初步筛选特征
包裹法(Wrapper Methods)通过训练模型评估特征子集表现,使用搜索策略找到最优特征组合。- 递归特征消除(RFE):删除不重要的特征
- 前向选择:逐步添加性能提升最大的特征
- 后向消除:逐步移除对模型性能影响小的特征
能考虑特征间的相互作用,适合复杂任务计算开销大,训练多个模型耗时长特征数较少(几十到上百个),适合需要精确特征选择的任务
嵌入法(Embedded Methods)结合过滤法和包裹法的优点,在模型训练过程中选择特征。- L1正则化(Lasso回归):通过L1正则化项使部分特征系数为零
- 决策树及其变体(随机森林、XGBoost):根据特征重要性评分选择特征
- Elastic Net:结合L1和L2正则化
特征选择与模型训练同时进行,考虑特征间相互作用,效率高需要根据特定算法选择,不具有模型无关性适合使用线性模型(如Lasso)或树模型的场景,大多数现代复杂模型都适用
其他方法PCA、LDA等方法虽然是降维方法,但可间接用于特征选择。- PCA:通过线性变换将多个特征组合成少数几个主成分
- LDA:常用于分类问题的降维方法
- 稳定性选择(Stability Selection):通过在子样本集上选择表现稳定的特征
能够进行有效降维,有时可以间接用于特征选择降维后特征解释性较弱数据维度较高的情况下,可以用作降维手段,间接提高特征选择效果
  • 过滤法:速度快,适合预处理大量特征,但可能丢失特征间的组合信息。
  • 包裹法:精度高,适合特征数较少且精度要求高的任务,但计算成本大。
  • 嵌入法性能和效率兼顾,适合大多数场景,尤其是使用线性模型(Lasso)或树模型时
  • 其他方法:如PCA、LDA等可以作为降维手段,间接用于特征选择,适合高维数据的场景。

选择合适的特征选择方法能够有效提升模型性能,降低训练时间,避免过拟合。

3. 特征构造(Feature Construction)

特征构造是通过对已有特征进行组合、变换或生成新特征来增强模型表达能力的过程。它可以将隐含的关系显式化,提高模型的拟合能力。

类别主要方法适用场景
数值特征构造变换、分箱处理数值特征、非线性关系
类别特征构造编码、组合处理类别特征、捕捉特征间关系
时间特征构造时间提取、周期特征、时间差时间序列数据、周期性特征
文本特征构造词袋、TF-IDF、词向量、N-grams文本数据、自然语言处理
特征交互与组合特征交互、多项式特征捕捉特征间的复杂关系,适合增强线性模型的非线性拟合能力
聚合与统计特征聚合、统计、窗口聚合大规模表格数据、时间序列数据
生成模型特征降维、聚类、自编码器生成特征复杂高维数据、需要特征压缩的场景
特征选择与构造结合筛选后构造、嵌入法生成特征大规模数据集、特征选择与构造结合的场景

特征构造是一项创造性和技术性并重的任务,需要结合领域知识、数据分析技巧以及机器学习经验来挖掘出更有利于模型训练的特征,从而提升模型的表现。

4. 特征缩放

  1. 归一化:通常是指将数据缩放到一个特定的范围,如[0, 1]。目的是让不同特征的值处于相同的尺度上,【同时也有消除不同特征量纲的影响的作用】大范围的特征值可能会导致梯度更新过慢或不稳定
  2. 标准化:是指对数据进行均值0、标准差1的变换,更关注数据的分布形态。目的是消除不同特征的物理单位和量纲(如重量、温度、距离等)差异,同时保持特征间的相对比例关系。

4.1 归一化(Normalization)

归一化特征值缩放到 [0, 1] 之间,常用于以下算法中:

  • K 近邻算法(KNN):归一化后减少不同特征尺度对距离计算的影响。能够避免特征量纲不同带来的距离计算问题。【与数据的分布无关】
  • 神经网络:将输入特征值缩放至 [0, 1],有助于加快模型收敛。
  • 聚类算法(如 K-Means):归一化避免特征尺度不同造成聚类结果偏差。

Min - Max归一化:将特征缩放到指定范围(通常为[0, 1]),公式为:
x ′ = x − x min ⁡ x max ⁡ − x min ⁡ x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}} x=xmaxxminxxmin

4.2 标准化(Standardization)

标准化特征值转化为均值为 0、方差为 1 的标准正态分布,常用于以下算法中:

  • 线性回归:标准化能够提升参数解释性,并避免部分特征影响过大。
  • 逻辑回归:标准化能够使梯度下降更快地收敛。
  • 支持向量机(SVM):标准化后距离计算更稳定。
  • 主成分分析(PCA):标准化防止某些方差大的特征主导主成分的计算。

Z - score标准化: 将数据转换为均值为0,方差为1的标准正态分布,公式为:
x ′ = x − μ σ x' = \frac{x - \mu}{\sigma} x=σxμ

BN、LN、IN、GN

以下是归一化方法对比总结,其中加入了每种归一化方法的原理:

归一化方法原理适用场景优点缺点
批归一化(BN)一个批量中的所有样本的同一通道进行归一化,基于批次的均值和方差调整卷积网络、全连接网络加快收敛,正则化,适应大批量训练对小批次敏感,序列任务效果差
层归一化(LN)单个样本的所有通道进行归一化,不依赖批量,计算层内均值和方差RNN、Transformer、序列任务适应小批次训练,不依赖批次大小计算量较大,收敛可能稍慢
实例归一化(IN)单张图像的每个通道分别独立进行归一化,计算每个样本的通道内均值和方差图像生成、风格迁移对风格敏感,适用于生成任务不适合分类任务,无法捕捉全局信息
组归一化(GN)单个样本的特征通道分组,对每一组进行归一化,计算组内均值和方差小批次训练,卷积网络适合小批次,不依赖批次大小对卷积核大小和通道数较敏感
权重归一化(WN)对神经元的权重向量进行归一化,将方向和长度分开重新参数化卷积网络、全连接网络、生成模型加速收敛,提高稳定性效果不一定显著,某些任务中不如BN

注意,虽然他们是叫做归一化(批归一化、层归一化、实例归一化),是将多个输入特征归一化为均值为 0、方差为 1 的分布,使得网络的各层输入保持在较为稳定的范围内。本质上是进行标准化。再进行引入两个可学习参数 γ 和 𝛽,分别表示缩放和平移操作。

BN、LN、IN、GN 等归一化方法都包含了标准化的步骤,即它们都会将激活值调整为均值为 0、方差为 1 的分布,关键区别在于这些方法在不同的范围内计算均值和方差,以适应不同的训练场景和模型结构:

注意: 虽然它们方法名字中带“归一化”(批归一化、层归一化、实例归一化、组归一化),但它们的核心操作本质上是标准化,将多个输入特征归一化为均值为 0、方差为 1 的分布,使得网络的各层输入保持在较为稳定的范围内。本质上是进行标准化。再进行引入两个可学习参数 γ 和 𝛽,分别表示缩放和平移操作。

热门专栏

机器学习

机器学习笔记合集

深度学习

深度学习笔记合集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/962314.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Cursor火出圈,未来程序员还有出路吗?

大家好,我是凡人。 今天我表弟家邻居的阿姨,托他问问我目前程序员还有前景吗,希望我根据十几年的经验给出点建议,看看程序员这条路未来能不能走。 一下子不知道该怎么回复他了,如果是三年前问我,肯定毫不…

如何移植ftp服务器到arm板子?

很多厂家提供的sdk,一般都不自带ftp服务器功能, 需要要发人员自己移植ftp服务器程序。 本文手把手教大家如何移植ftp server到arm板子。 环境 sdk:复旦微 Buildroot 2018.02.31. 解压 $ mkdir ~/vsftpd $ cp vsftpd-3.0.2.tar.gz ~/vs…

第5章 公共事件

HarmonyOS通过公共事件服务为应用程序提供订阅、发布、退订公共事件的能力。 5.1 公共事件概述 在应用里面,往往会有事件。比如,朋友给我手机发了一条信息,未读信息会在手机的通知栏给出提示。 5.1.1 公共事件的分类 公共事件&#xff08…

STM32 对射式红外传感器配置

这次用的是STM32F103的开发板(这里面的exti.c文件没有how to use this driver 配置说明) 对射式红外传感器 由一个红外发光二极管和NPN光电三极管组成,M3固定安装孔,有输出状态指示灯,输出高电平灯灭,输出…

【数据结构】(2)时间、空间复杂度

一、衡量算法好坏的指标 时间复杂度衡量算法的运行速度,空间复杂度衡量算法所需的额外空间。这些指标,是某场景中选择使用哪种数据结构和算法的依据。如今,计算机的存储器已经变得容易获得,所以不再太关注空间复杂度。 二、渐进表…

FBX SDK的使用:基础知识

Windows环境配置 FBX SDK安装后,目录下有三个文件夹: include 头文件lib 编译的二进制库,根据你项目的配置去包含相应的库samples 官方使用案列 动态链接 libfbxsdk.dll, libfbxsdk.lib是动态库,需要在配置属性->C/C->预…

Ansible自动化运维实战--yaml的使用和配置(7/8)

文章目录 一、YAML 基本语法1.1. 缩进1.2. 注释1.3. 列表1.4. 字典 二、Ansible 中 YAML 的应用2.1. Ansible 剧本(Playbooks)2.2. 变量定义2.3. 角色(Roles)2.4. Inventory 文件2.5. 数据类型2.6. 引用变量 在 Ansible 里&#x…

springboot集成钉钉,发送钉钉日报

目录 1.说明 2.示例 3.总结 1.说明 学习地图 - 钉钉开放平台 在钉钉开放文档中可以查看有关日志相关的api,主要用到以下几个api: ①获取模板详情 ②获取用户发送日志的概要信息 ③获取日志接收人员列表 ④创建日志 发送日志时需要根据模板规定日志…

Node.js下载安装及环境配置教程 (详细版)

Node.js:是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建可扩展的网络应用程序。Node.js 使用事件驱动、非阻塞 I/O 模型,使其非常适合构建实时应用程序。 Node.js 提供了一种轻量、高效、可扩展的方式来构建网络应用程序&#xff0…

ProfiNet转CANopen应用于汽车总装生产线输送设备ProfiNet与草棚CANopen质量检测系统

ProfiNet转CANopen协议转换网关模块,广泛应用于汽车行业。可替代NT 100-RE-CO和AB7658/7307产品功能 项目概述 在汽车总装生产线的末尾环节,汽车总装生产线输送设备起着关键的搬运作用,其基于 ProfiNet 协议运行,精准控制车辆在各…

「全网最细 + 实战源码案例」设计模式——桥接模式

核心思想 桥接模式(Bridge Pattern)是一种结构型设计模式,将抽象部分与其实现部分分离,使它们可以独立变化。降低代码耦合度,避免类爆炸,提高代码的可扩展性。 结构 1. Implementation(实现类…

Attention--人工智能领域的核心技术

1. Attention 的全称与基本概念 在人工智能(Artificial Intelligence,AI)领域,Attention 机制的全称是 Attention Mechanism(注意力机制)。它是一种能够动态分配计算资源,使模型在处理输入数据…

DeepSeek能执行程序吗?

1. 前言 大过年的,继续蹭DeepSeek的热点,前面考察了DeepSeek能否进行推理(DeekSeek能否进行逻辑推理),其实似乎没有结论,因为还没有到上难度,DeepSeek似乎就纠结在一些与推理无关的事情上了&am…

5.3.2 软件设计原则

文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则:抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义,然后通过这些操作对数…

STM32 TIM编码器接口测速

编码器接口简介: Encoder Interface 编码器接口 编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度 每个高级定…

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用) 文章目录 四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)1. 有序集合 Zset(sorted set)2. zset 有序…

Spring AI 在微服务中的应用:支持分布式 AI 推理

1. 引言 在现代企业中,微服务架构 已成为开发复杂系统的主流方式,而 AI 模型推理 也越来越多地被集成到业务流程中。如何在分布式微服务架构下高效地集成 Spring AI,使多个服务可以协同完成 AI 任务,并支持分布式 AI 推理&#x…

使用Ollama和Open WebUI快速玩转大模型:简单快捷的尝试各种llm大模型,比如DeepSeek r1

Ollama本身就是非常优秀的大模型管理和推理组件,再使用Open WebUI更加如虎添翼! Ollama快速使用指南 安装Ollama Windows下安装 下载Windows版Ollama软件:Release v0.5.7 ollama/ollama GitHub 下载ollama-windows-amd64.zip这个文件即可…

EasyExcel写入和读取多个sheet

最近在工作中,作者频频接触到Excel处理,因此也对EasyExcel进行了一定的研究和学习,也曾困扰过如何处理多个sheet,因此此处分享给大家,希望能有所帮助 目录 1.依赖 2. Excel类 3.处理Excel读取和写入多个sheet 4. 执…

《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》

DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance)订阅 已识别 - 已识别问题,并且正在实施修复。 1月 29, 2025 - 20:57 CST 更新 - 我们将继续监控任何其他问题。 1月 28, 2025 - 22&am…