机器学习的特征工程(特征构造、特征选择、特征转换和特征提取)详解

特征工程是机器学习中至关重要的一步,它直接影响模型的性能和泛化能力。特征构造、特征选择、特征转换和特征提取——构成了特征工程的核心流程。下面我来系统地梳理一下它们的定义、方法和应用场景:

整理 by Moshow郑锴@https://zhengkai.blog.csdn.net/

🏗️ 特征工程总览

特征工程的目标是从原始数据中提取出对模型有用的信息,使模型更容易学习、预测更准确。它包括以下几个部分:

🔧 特征构造(Feature Construction)

定义:基于原始特征创建新的特征,以增强模型的表达能力。

方法示例

  • 数学组合:如 BMI = weight / height²

  • 时间衍生:从时间戳中提取“小时”、“星期几”、“是否节假日”等

  • 文本处理:从文本中提取关键词、情感分数、词频等

  • 分组统计:如每个用户的平均购买金额、点击次数等

特征类型方法名称方法说明示例应用场景
数值型特征数学组合将多个数值特征进行加减乘除等组合,构造新特征BMI = 体重 / 身高²
分箱(Binning)将连续变量离散化为区间,如年龄分组年龄 → 青年/中年/老年
比率构造构造比例特征,反映相对关系销售额 / 访问量 → 转化率
差值构造构造差异特征,捕捉变化趋势当前价格 - 昨日价格
类别型特征频率编码用类别出现频率替代原始类别用户地区 → 地区访问频率
目标编码(Target Encoding)用类别对应的目标变量均值进行编码用户类型 → 平均购买金额
组合特征将多个类别特征组合成新的交叉特征性别 + 地区 → 性别_地区组合
时间型特征时间衍生特征从时间戳中提取年、月、日、小时、星期几等交易时间 → 是否周末、是否夜间
时间差值计算两个时间点之间的间隔注册时间与首次购买时间差
滚动窗口统计在时间序列中计算滑动窗口内的均值、最大值等最近7天平均点击量
文本特征关键词提取(TF-IDF)提取文本中的关键词并量化其重要性评论文本 → 关键词权重
情感分数分析文本情感倾向,构造情感强度特征评论 → 情感得分(正/负)
文本长度统计文本长度、词数等作为特征评论 → 字符数、词数
统计特征分组统计按某个类别分组后计算均值、最大值、标准差等用户ID → 平均购买金额
排名特征在组内对某个数值特征进行排序,构造排名特征用户在地区内的购买排名
聚合特征对多个相关特征进行聚合,如求和、均值多个商品评分 → 平均评分

🧠 特征选择(Feature Selection)

特征选择是为了去除冗余或无关特征,提升模型性能。嵌入方法(Embedded Methods) 是其中一种。

典型方法

  • Lasso 回归(L1 正则化):会将部分特征系数压缩为零

  • 决策树/随机森林:通过特征重要性(feature importance)进行选择

  • 基于梯度提升(如 XGBoost)的特征评分

方法类别方法名称原理简述适用场景/模型示例
过滤法(Filter)方差选择法(Variance Threshold)删除方差低于阈值的特征,认为其信息量少预处理阶段,适用于所有模型
相关系数法(Pearson/Spearman)计算特征与目标变量的相关性,选择相关性高的特征回归任务、线性模型
卡方检验(Chi-Square)评估特征与类别之间的独立性,适用于分类任务分类任务,如朴素贝叶斯、KNN
信息增益(Information Gain)衡量特征对目标变量的信息贡献决策树、随机森林
互信息(Mutual Information)衡量两个变量之间的依赖关系分类与回归任务
包裹法(Wrapper)递归特征消除(RFE)反复训练模型并移除最不重要的特征,直到达到预期维度支持向量机、线性回归等
前向/后向选择从空集开始逐步添加或从全集开始逐步移除特征,评估模型性能变化小规模数据集,模型训练成本高
嵌入法(Embedded)Lasso 回归(L1 正则化)自动将部分特征系数压缩为零,实现特征选择线性模型、逻辑回归
决策树/随机森林特征重要性利用树模型的特征重要性评分进行选择树模型(如 XGBoost、LightGBM)
正则化的逻辑回归/线性模型通过正则项控制特征数量,保留对目标影响大的特征高维稀疏数据

🔄 特征转换(Feature Transformation)

定义:对特征进行数学变换,使其更适合模型学习。

常见方法

方法说明
归一化(Min-Max)将特征缩放到 [0,1] 区间,适用于距离度量模型(如KNN)
标准化(Z-score)将特征转换为均值为0、标准差为1的分布,适用于线性模型、SVM等
对数变换处理偏态分布,减少极端值影响,如将收入、点击次数等取对数
Box-Cox / Yeo-Johnson更灵活的幂变换,适用于非正值数据

详细方法

特征类型转换方法名称方法说明示例应用场景
数值型特征标准化(Standardization)将特征转换为均值为0、标准差为1的分布适用于线性模型、SVM
归一化(Min-Max Scaling)将特征缩放到固定区间(如0~1)图像像素处理、神经网络输入
对数变换(Log Transform)缓解右偏分布,提高模型稳定性收入、交易金额等长尾分布
Box-Cox变换用于将非正态分布转换为近似正态分布金融风险建模
Yeo-Johnson变换Box-Cox的扩展,支持负值含负值的数值特征
多项式扩展(Polynomial Features)构造高阶特征以捕捉非线性关系回归模型中提升拟合能力
类别型特征One-Hot编码将每个类别转换为一个独立的二元特征决策树、逻辑回归
标签编码(Label Encoding)将类别映射为整数树模型(如XGBoost)
二元编码(Binary Encoding)将类别转换为二进制形式,减少维度高基数类别特征
哈希编码(Hashing Encoding)使用哈希函数将类别映射到固定维度空间文本分类、推荐系统
时间型特征周期性转换(Sin/Cos Encoding)将时间特征转换为正弦/余弦形式以保留周期性信息小时、星期几等周期性时间特征
时间差转换计算时间间隔作为新特征注册时间与购买时间差
时间窗口聚合在时间序列中进行滑动窗口统计最近7天平均访问量
文本特征TF-IDF转换计算词频-逆文档频率,衡量词的重要性评论分析、文本分类
Word Embedding(词嵌入)将词转换为向量,保留语义关系NLP模型输入
文本向量化(CountVectorizer)将文本转换为词频向量基础文本建模
其他转换主成分分析(PCA)降维方法,保留主要信息减少冗余高维数据可视化、加速训练
特征离散化将连续变量转换为离散类别年龄 → 年龄段
分组统计转换按类别分组后计算均值、最大值等统计量用户ID → 平均购买金额

🧬 特征提取(Feature Extraction)

定义:从原始数据中提取出新的表示方式,通常用于高维数据降维。

常见方法

  • 主成分分析(PCA):线性降维,保留最大方差方向

  • 线性判别分析(LDA):用于分类任务的降维

  • 自编码器(Autoencoder):通过神经网络学习压缩表示

  • t-SNE / UMAP:用于可视化的非线性降维方法

全部方法:

方法类别方法名称方法说明应用场景示例
线性降维主成分分析(PCA)将高维数据投影到低维空间,保留最大方差方向的信息图像压缩、数据可视化
线性判别分析(LDA)寻找能最大化类别间距离、最小化类内距离的投影方向分类任务中的降维
非线性降维核主成分分析(Kernel PCA)在高维核空间中进行PCA,捕捉非线性特征关系非线性结构数据降维
t-SNE保留局部结构的非线性降维方法,常用于高维数据可视化NLP嵌入可视化、图像聚类可视化
UMAP保留全局和局部结构的非线性降维方法,比t-SNE计算更快大规模数据可视化
矩阵分解奇异值分解(SVD)将矩阵分解为奇异向量和奇异值,提取主要成分潜在语义分析(LSA)、推荐系统
非负矩阵分解(NMF)分解成非负矩阵,适合可解释性需求文本主题提取
统计特征傅里叶变换(FFT)将时域信号转换到频域,提取频谱特征语音分析、振动信号检测
小波变换(Wavelet Transform)提取不同时间尺度下的频率信息时间序列分析、图像压缩
深度学习自编码器(Autoencoder)通过神经网络编码-解码结构学习低维表示图像去噪、特征压缩
卷积神经网络特征(CNN Features)利用卷积层提取空间局部特征图像识别、目标检测
词嵌入(Word Embedding)将词语映射到连续向量空间,保留语义关系NLP任务(Word2Vec、GloVe、BERT)
嵌入方法图嵌入(Graph Embedding)将图结构映射到低维向量空间,保留节点关系社交网络分析、知识图谱
序列嵌入(Sequence Embedding)将时序/序列数据编码为向量推荐系统、行为预测

💡 小贴士

  • 如果是高维稠密数值数据,PCA/LDA 是首选

  • 如果是非线性分布,可以试试 Kernel PCA、UMAP

  • 深度学习任务中,CNN/RNN 提取的高层特征往往比人工特征更具表现力

  • 文本类任务中,词嵌入技术几乎是标配

  •  整理 by Moshow郑锴@https://zhengkai.blog.csdn.net/

📊 特征工程性能评估指标

指标类别具体指标说明典型用途/场景
模型性能类准确率(Accuracy)正确预测占总样本的比例分类任务,类别均衡时适用
精确率(Precision)预测为正的样本中实际为正的比例正样本代价高时(如诈骗检测)
召回率(Recall)实际为正的样本中被正确预测的比例追求漏报率低(如疾病筛查)
F1-Score精确率与召回率的调和平均平衡Precision与Recall
ROC-AUC衡量分类器对正负样本的区分能力二分类、类别不均衡
RMSE/MAE回归任务中预测值与真实值的偏差连续值预测(如房价预测)
特征质量类特征重要性(Feature Importance)模型输出的各特征贡献度决策树、XGBoost、LightGBM
相关性(Correlation)与目标变量或其他特征的相关程度过滤冗余或多重共线性
信息增益(Information Gain)特征对类别区分的贡献分类模型、树模型
稀疏度(Sparsity)特征矩阵中零值的比例稀疏矩阵优化、文本特征
方差(Variance)特征取值的分散程度,低方差特征信息量少特征筛选前的快速过滤

💡 小贴士

  • 在评估特征工程效果时,应固定模型和数据集,只比较特征变化前后的指标差异,才能确保改进是由特征工程带来的

  • 如果是高维稀疏特征,可以多看稀疏度、特征重要性等;如果是时序或非结构化数据,则可结合任务相关指标

  • 有时单个特征看起来不强,但和其他特征组合后效果更好,需要通过模型性能指标验证

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Force Dimension触觉力反馈设备在外科手术机器人遥操作和训练中的应用

触觉力反馈设备通过传感器-执行器-信号处理闭环系统,在外科手术机器人领域实现了从远程手术操作到虚拟训练的全流程革新。外科手术机器人外科医生广博的专业知识往往受限于他们的主要工具——手。机器人的精确度和灵活性远远超过人手。然而,目前机器人还…

【网络与爬虫 00】试读

网络爬虫技术全栈指南:从入门到AI时代的数据采集革命 关键词:网络爬虫、Python爬虫、数据采集、反爬技术、分布式爬虫、AI爬虫、Scrapy框架、自动化数据提取、爬虫架构设计 摘要:本专栏是最全面的网络爬虫技术指南,涵盖从基础框架…

[Chat-LangChain] 前端用户界面 | 核心交互组件 | 会话流管理

链接:https://python.langchain.com/docs/tutorials/qa_chat_history/ Chat-LangChain技术栈 : LangChainLangGraphNext.jsWeaviate (向量存储)OpenAI (嵌入模型) docs:chat-langchain Chat LangChain 是一个智能聊天机器人,专为解答Lang…

编写和运行 Playbook

编写和运行 Playbook Playbook 介绍 adhoc 命令可以作为一次性命令对一组主机运行一项简单的任务。不过,若要真正发挥Ansible的能力,需要使用功能 playbook。 playbook 是一个文本文件,其中包含由一个或多个按特定顺序运行的play组成的列表。…

uniapp手机端video标签层级过高问题

当我们想以视频作为背景时,其他dom通过定位显示在视频上方,h5页面上调试发现可以正常使用,效果如下: 当放在手机上看,会发现,仅仅剩一个视频,本应在视频上层的元素不见了。 经过一番排查&#x…

【MyBatis批量更新实现】按照list传入批量更新

学习目标&#xff1a; <update id"updateModelEngineeringSpatialNode" parameterType"com.mxpt.model.manage.domain.ModelEngineeringSpatialNode">update model_engineering_spatial_node<trim prefix"SET" suffixOverrides",&…

VOFA+ 显示数据、波形

本篇&#xff0c;以最常用的串口通信作展示&#xff0c;示范如何通过VOFA显示数据波形。 一、VOFA 下载 VOFA 是一款面向嵌入式开发的上位机软件&#xff0c;专注于硬件数据实时可视化与调试。它通过高效协议&#xff08;如FireWater、JustFloat&#xff09;将原始字节流转化为…

MySQL 插入数据提示字段超出范围?一招解决 DECIMAL 类型踩坑

MySQL 插入数据提示字段超出范围&#xff1f;一招解决 DECIMAL 类型踩坑 在日常数据库操作中&#xff0c;我们经常会遇到各种字段类型相关的问题。今天就来聊聊一个常见的错误&#xff1a;插入数据时提示字段值超出范围&#xff0c;以实际案例带你搞懂 MySQL 中 DECIMAL 类型的…

一周学会Matplotlib3 Python 数据可视化-绘制误差条形图

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib&#xff0c;学习Matplotlib图形参数基本设置&…

JVM垃圾回收器

垃圾回收算法标记-复制缺点&#xff1a;内存利用率低&#xff0c;有一块区域无法使用。标记-清除缺点&#xff1a;1. 效率问题 (如果需要标记的对象太多&#xff0c;效率不高)2. 空间问题&#xff08;标记清除后会产生大量不连续的碎片&#xff09;标记-整理分代收集根据对象存…

科研工具的一些注意事项

Origin Origin导入数据之后&#xff0c;可以考虑 [删除数据连接器…] 导入数据之后&#xff0c;删除数据连接&#xff0c;这样当原来的文件移动之后&#xff0c;就不影响origin文件里面的数据。不然就会出现空白数据&#xff1a;当然&#xff0c;没有数据了也可以加载出来&…

美国服务器环境下Windows容器工作负载智能弹性伸缩

在北美数据中心加速数字化转型的今天&#xff0c;企业客户日益重视Windows容器工作负载的智能化管理。本文将深入探讨基于Azure Stack HCI&#xff08;混合云基础设施&#xff09;的弹性伸缩方案如何突破传统资源调度瓶颈&#xff0c;通过分析指标收集、策略配置、混合云联动三…

欧姆龙CP系列以太网通讯实现上位机与触摸屏监控

一、行业痛点在现代工业生产中&#xff0c;自动化生产线的控制系统的高效性与智能化程度对生产效率和产品质量有着至关重要的影响。然而&#xff0c;许多传统工业生产线中使用的欧姆龙CP系列系列PLC以太网模块&#xff0c;由于自身设计原因&#xff0c;并未配备以太网接口&…

【大语言模型 00】导读

【大语言模型00】导读&#xff1a;你的LLM全栈工程师进阶之路关键词&#xff1a;大语言模型、LLM、Transformer、深度学习、AI工程化、全栈开发、技术路线图摘要&#xff1a;这是一份完整的大语言模型学习指南&#xff0c;涵盖从数学基础到商业落地的200篇深度文章。无论你是AI…

Business Magic

题目描述There are n stores located along a street, numbered from 1 to n from nearest to farthest. Last month, the storek had a net profit of rk . If rk is positive, it represents a profit of rk dollars; if rk is negative, it represents a loss of −rk dolla…

在ubuntu系统上离线安装jenkins的做法

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 1.安装java环境和下载war包&#xff1a; Jenkins 依赖于 Java 环境&#xff08;OpenJDK 11 或更高版本&#xff09;&#xff1a; # 安装OpenJDK 11和字体依赖 sudo dpkg -i openjdk-11-jre-headless_*.deb fontconfi…

图像相似度算法汇总及Python实现

下面整理了一些图像相似度算法&#xff0c;可根据不同的需求选择不同的算法&#xff0c;对每种算法进行了简单描述并给出Python实现&#xff1a; 1. 基于像素的算法&#xff1a; (1).MSE(Mean Squared Error)&#xff1a;均方误差&#xff0c;通过计算两幅图像对应像素值差的平…

IO流与单例模式

单例模式 单例模式是指一个类只能有一个对象。 饿汉模式 在单例模式下&#xff0c;在程序开始&#xff08;main函数运行前&#xff09;的时候创建一个对象&#xff0c;这之后就不能再创建这个对象。 class HungryMan { public:static HungryMan* getinstance(){return &ins…

Java设计模式之依赖倒置原则使用举例说明

示例1&#xff1a;司机驾驶汽车 问题场景&#xff1a;司机类直接依赖奔驰车类&#xff0c;新增宝马车需修改司机类代码。 // 未遵循DIP class Benz { public void run() { /*...*/ } } class Driver { public void drive(Benz benz) { benz.run(); } } // 遵循DIP&#xff1a;…

【Docker】openEuler 使用docker-compose部署gitlab-ce

docker-compose配置 services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlab.example.comenvironment:GITLAB_OMNIBUS_CONFIG: |# Add any other gitlab.rb configuration here, each on its own lineexternal_url https://gi…