机器学习笔记——特征工程
大家好,这里是好评笔记,公主号: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. 特征缩放
- 归一化:通常是指将数据缩放到一个特定的范围,如[0, 1]。目的是让不同特征的值处于相同的尺度上,【同时也有消除不同特征量纲的影响的作用】大范围的特征值可能会导致梯度更新过慢或不稳定。
- 标准化:是指对数据进行均值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′=xmax−xminx−xmin
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 的分布,使得网络的各层输入保持在较为稳定的范围内。本质上是进行标准化。再进行引入两个可学习参数 γ 和 𝛽,分别表示缩放和平移操作。
历史文章回顾
机器学习笔记——损失函数、代价函数和KL散度
相关文章:
机器学习笔记——特征工程
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的特征工程方法、正则化方法和简要介绍强化学习。 文章目录 特征工程(Fzeature Engineering)1. 特征提取ÿ…...
4种革新性AI Agent工作流设计模式全解析
文章目录 导读:AI Agent的四种关键设计模式如下:1. 反思2. 工具使用3. 规划4. 多Agent协作 总结内容简介: 导读: AI Agent是指能够在特定环境中自主执行任务的人工智能系统,不仅接收任务,还自主制定和执行…...
【入门级】计算机网络学习
网络安全:前端开发者必知:Web安全威胁——XSS与CSRF攻击及其防范-CSDN博客 三次握手四次挥手:前端网络—三次握手四次挥手_前端三次握手-CSDN博客 http协议和https协议的区别:前端网络—http协议和https协议的区别-CSDN博客 网…...
安装 Jenkins 后无法访问用户名或密码且忘记这些凭证怎么办?
Jenkins 是一款功能强大的自动化服务器,在持续集成与交付(CI/CD)领域应用广泛。不过,用户在使用过程中,尤其是首次接触该系统或系统重启后,常常会遇到登录方面的问题。要是 Jenkins 突然要求输入用户名和密…...
day08_Kafka
文章目录 day08_Kafka课程笔记一、今日课程内容一、消息队列(了解)**为什么消息队列就像是“数据的快递员”?****实际意义**1、产生背景2、消息队列介绍2.1 常见的消息队列产品2.2 应用场景2.3 消息队列中两种消息模型 二、Kafka的基本介绍1、…...
安装conda 环境
conda create -n my_unet5 python3.8 (必须设置3.8版本) conda activate my_unet5...
【dockerros2】ROS2节点通信:docker容器之间/docker容器与宿主机之间
🌀 一个中大型ROS项目常需要各个人员分别完成特定的功能,而后再组合部署,而各人员完成的功能常常依赖于一定的环境,而我们很难确保这些环境之间不会相互冲突,特别是涉及深度学习环境时。这就给团队项目的部署落地带来了…...
使用外网访问在群晖中搭建思源docker
还是要折腾,之前发现用公网IP可以访问就没有折腾,今天ip变了,用不了了,一搜,发现有方法可以用域名访问,哎,太好了! 原文:分享我在 群晖 docker 部署 思源笔记 步骤 - 链…...
深度学习中的EMA技术:原理、实现与实验分析
深度学习中的EMA技术:原理、实现与实验分析 1. 引言 指数移动平均(Exponential Moving Average, EMA)是深度学习中一种重要的模型参数平滑技术。本文将通过理论分析和实验结果,深入探讨EMA的实现和效果。 深度学习中的EMA技术:原理、实现与…...
win32汇编环境,窗口程序中对按钮控件常用操作的示例
;运行效果 ;win32汇编环境,窗口程序中对按钮控件常用操作的示例 ;常用的操作,例如创建按钮控件,使其无效,改变文本,得到文本等。 ;将代码复制进radasm软件里,直接就可以编译运行。重点部分加备注。 ;>&g…...
CentOS 7.9 通过 yum 安装 Docker
文章目录 前言一、删除已安装的 Docker二、网络设置三、设置 yum 源,并安装依赖四、设置 Docker 仓库五、安装及使用 Docker六、镜像仓库总结 前言 CentOS 7.9 过了维护期,Docker 官方文档没有了相关的安装文档。记录一下,备用! …...
【开源免费】基于Vue和SpringBoot的英语知识应用网站(附论文)
本文项目编号 T 138 ,文末自助获取源码 \color{red}{T138,文末自助获取源码} T138,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
工具推荐:PDFgear——免费且强大的PDF编辑工具 v2.1.12
PDFgear——免费且强大的PDF编辑工具 v2.1.12 软件简介 PDFgear 是一款 完全免费的 PDF 软件,支持 阅读、编辑、转换、合并 以及 跨设备签署 PDF 文件,无需注册即可使用。它提供了丰富的 PDF 处理功能,极大提升了 PDF 文件管理的便捷性和效…...
Web渗透测试之XSS跨站脚本 防御[WAF]绕过手法
目录 XSS防御绕过汇总 参考这篇文章绕过 XSS payload XSS防御绕过汇总 服务端知道有网络攻击或者xss攻 Html...
MMDetection框架下的常见目标检测与分割模型综述与实践指南
目录 综述与实践指南 SSD (Single Shot MultiBox Detector) 基本配置和使用代码 RetinaNet 基本配置和使用代码 Faster R-CNN 基本配置和使用代码 Mask R-CNN 基本配置和使用代码 Cascade R-CNN 基本配置和使用代码 总结 综述与实践指南 MMDetection是一个基于Py…...
怎么实现Redis的高可用?
大家好,我是锋哥。今天分享关于【怎么实现Redis的高可用?】面试题。希望对大家有帮助; 怎么实现Redis的高可用? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 为了实现 Redis 的高可用性,我们需要保证在发…...
OpenCV实现Kuwahara滤波
Kuwahara滤波是一种非线性的平滑滤波技术,其基本原理在于通过计算图像模板中邻域内的均值和方差,选择图像灰度值较为均匀的区域的均值来替代模板中心像素的灰度值。以下是Kuwahara滤波的详细原理说明: 一、基本思想 Kuwahara滤波的基本思想…...
WINFORM - DevExpress -> DevExpress总结[安装、案例]
安装devexpress软件 路径尽量不换,后面破解不容易出问题 vs工具箱添加控件例如: ①使用控制台进入DevExpress安装目录: cd C:\Program Files (x86)\DevExpress 20.1\Components\Tools ②添加DevExpress控件: ToolboxCreator.exe/ini:toolboxcreator…...
Golang学习笔记_22——Reader示例
Golang学习笔记_19——Stringer Golang学习笔记_20——error Golang学习笔记_21——Reader 文章目录 io.Reader 示例从字符串中读取从文件中读取从HTTP响应中读取从内存的字节切片中读取自定义io.Reader实现 源码 io.Reader 示例 从字符串中读取 func ReadFromStrDemo() {str…...
【2024年华为OD机试】(A卷,100分)- 猜字谜(Java JS PythonC/C++)
一、问题描述 小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如 nesw,玩家需要猜出谜底库中正确的单词。猜中的要求如下: 对于某个谜面和谜底单词,满足下面任一条件都表示猜中: 变换顺序…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
