机器学习中的特征工程

article/2025/8/14 19:14:37

机器学习中的特征工程

什么是特征工程

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。特征工程指的是把原始数据转变为模型的训练数据的过程,它的目的就是获取更好的训练数据特征,使得机器学习模型逼近这个上限。

构建算法模型的步骤

包括数据准备、特征工程、模型构建、模型调优,其中特征工程是最重要的步骤,需要 70% 甚至以上的工作量。特征工程主要包括数据预处理、特征选择、特征构造、特征降维等。

img

一、数据预处理

数据预处理是特征工程的最重要的起始步骤,主要包括数据清洗特征归一化离散特征编码连续特征离散化等。

数据清洗

数据清洗是数据预处理阶段的主要组成部分,主要包括缺失值处理异常值处理样本不平衡处理等。

1. 缺失值处理

一般来说,未经处理的原始数据中通常会存在缺失值,因此在建模训练之前需要处理好缺失值。

  1. 缺失数据占比小于 20%。可以通过直接填充法,连续特征一般取均值填充,离散特征可以取众数填充;可以模型预测法,通过随机森林或者决策树进行预测结果填充;也可以通过插值法填充。
  2. 缺失数据占比大于 20% 小于 50%,这个时候可以把缺失值构建为新的特征,增加一列离散特征,即有缺失数据和无缺失数据。
  3. 缺失数据占比大于 50%,因为信息量较少,模型可能会学到大量噪音建议直接删除该特征。

xgboost 模型自带缺失值处理功能,可以不进行缺失值处理。

2. 异常值处理

异常值,即在数据集中存在不合理的值,又称离群点、极值等。可以通过统计分析、箱线图、聚类、3σ 原则、孤立森林等方法进行检查。一般的处理方法如下:

  1. 直接删除含有异常值的样本。
  2. 视为缺失值。利用缺失值处理的方法进行处理。
  3. 最近值修正。可以用相近的观测值修正该异常值。
  4. 不处理。可以直接在具有异常值的数据集上进行数据建模

3. 样本不均衡处理

样本不均衡现象是指正样本数目与负样本数目比列相差很大。处理方法如下:

  1. 下采样/欠采样(under sampling):从多数类中随机抽取样本从而减少多数类别样本数据,使数据达到平衡的方式。比如本来样本正负例的比例是 10:1,可以对正样本进行下采样构建 10 个正负样本比例为 1:1 的模型,回归结果取平均值,分类结果进行投票。
  2. 上采样/过采样(Over Sampling):和欠采样采用同样的原理,通过抽样来增加少数样本的数目,从而达到数据平衡的目的。同样比如本来样本正负例的比例是 10:1,可以对负样本进行上采样构建正负样本比例为 1:1 的模型。
  3. Smote 算法:Smote 算法属于上采样的一种,通过人工合成的方法来生成少类别的样本。方法也很简单,对于某一个缺少样本的类别,它会随机找出几个该类别的样本,再找出最靠近这些样本的若干个该类别样本,组成一个候选合成集合,然后在这个集合中不停的选择距离较近的两个样本,在这两个样本之间,比如中点,构造一个新的该类别样本。举个例子,比如该类别的候选合成集合有两个样本(x1,y),(x2,y),那么 Smote采样后,可以得到一个新的训练样本((x1+x2)/2,y),通过这种方法,我们可以得到不改变训练集分布的新样本,让训练集中各个类别的样本数趋于平衡。
  4. Focal loss :主要解决分类样本不平衡问题,通过修改交叉熵损失函数,通过增加类别权重 α 和样本难度权重调因子(modulating factor)(1−pt)γ,来减缓上述问题。
  5. 设置损失函数的权重:使得少数类别数据判断错误的损失大于多数类别数据判断错误的损失,即当我们的少数类别数据预测错误的时候,会产生一个比较大的损失值,从而导致模型参数往让少数类别数据预测准确的方向偏。

特征归一化(标准化)

归一化(标准化),就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。其目的一是把不同量纲的东西放在同一量纲下,保正程序运行时收敛加快,大部分模型归一化后收敛速度会加快。但像树模型不受特征归一化影响,所以不需要特征归一化。

1. 归一化处理

归一化处理:最大最小值归一化或者叫 0-1 归一化,取值范围在 [0,1] 处理,max 为样本最大值, min 为样本最小值。

img

2. 标准化处理

标准化处理:这里只介绍一种经常使用的 z-score 标准化,经过处理后的数据均值为 0,标准差为 1,符合标准的正态分布。其中 mean 为平均值,б 为标准差。

img

离散特征编码

离散特征无法直接使用,需要编码后才能进行相关计算分析。离散特征编码主要有三种方式,独热编码、数值编码、embedding 编码等。

1. 独热(one-hot)编码

将离散型特征的每一种取值都看成一种状态,若你的这一特征中有 N 个不相同的取值,那么我们就可以将该特征抽象成 N 种不同的状态,one-hot 编码保证了每一个取值只会使得一种状态处于 “激活态”,也就是说这 N 种状态中只有一个状态位值为 1,其他状态位都是 0。主要用于数值之间没有大小数值比较,例如将三种不同颜色 red、blue、yellow 编码,映射到( 1 , 0 , 0 ) 、 ( 0 , 1 , 0 )、( 0 , 0 , 1 ) 的向量空间中,映射后类别之间的距离相等,各个类别在运算时权重相等。

1. 数值编码

直接将类别 A,B,C … 映射到 1,2,3…,适用于存在大小内在关系的类别特征。例如等级 A>B>C。

3. embedding 编码

embedding 编码适用于类别量太多,如果进行 one-hot 编码太过于稀疏,不利于模型训练,一般通过 embedding 编码进行降维处理,比如 B 端门店、C 端用户等。

连续特征离散化

在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列 0、1 特征交给模型。像树模型(随机森林、GBDT、Xgboost 等)不需要对连续特征离散化,连续特征离散化主要有用户逻辑回归、神经网络等模型。而 离散方式主要有等频、等距、聚类三种。

1. 等频

等频:取值范围均匀划成 n 等份,每份的间距相等(x);

2. 等距

等距:均匀分为 n 等份,每份内包含的观察点数相同((x,y));

3. 聚类

聚类:通过聚类分成不同的区间;

二、特征选择

当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:

特征是否发散:如果一个特征不发散,例如方差接近于 0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。

特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。

方差选择

方差代表特征信息量的大小,使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。方差小于某个阈值或者为 0 的特征可以选择舍弃。

Filter

Filter 选择法主要有方差分析法、相关系数法、卡方检验法等,用哪种方法取决于特征(X)和标签值(y)的数据类型,是连续还是离散数据。

特征(X)/标签y连续y离散
X连续相关系数法方差分析法
X离散卡方检验法卡方检验法

L1 正则项

L1 正则项特征选择的原理如下图所示:

img

但 L1 正则项特征选择在于保留多个对目标值具有同等相关性的特征中的一个,所以没选到的特征不代表不重要。

树选择

因为树模型都是基于特征重要性进行分裂的,像随机森林、GBDT、Xgboost 等可以特征选择以及特征重要度输出。

三、特征组合

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征进行两两组合,这样就构成了高阶的组合特征。主要有人工组合、多项式组合、GBDT 特征组合等。

多项式组合

常见的多项式组合有基于多项式的、基于指数函数的、基于对数函数的。4 个特征,度为 2 的多项式转换公式如下:

img

GBDT(Xgboost)特征组合

最初是由 Facebook 在 2014 年提出,并被广泛运用于点击率预估项目上,被证明有效。

动机在于 GBDT 无法直接处理海量的离散特征,复杂度太高,所以主要思路就是先用已有特征训练 GBDT 模型,然后利用 GBDT 模型学习到的树来构造新特征,最后把这些新特征加入原有特征一起训练模型。构造的新特征向量是取值 0/1 的,向量的每个元素对应于 GBDT 模型中树的叶子结点。当一个样本点通过某棵树最终落在这棵树的一个叶子结点上,那么在新特征向量中这个叶子结点对应的元素值为 1,而这棵树的其他叶子结点对应的元素值为 0。新特征向量的长度等于 GBDT 模型里所有树包含的叶子结点数之和。最后的输出一般会接一个 Logistic Regression,事实上就是一种 Stacking 的模型融合方式。如下图所示:

img

四、特征降维

当特征选择完成后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。常见的降维方法除了以上提到的基于 L1 惩罚项的模型以外,另外还有主成分分析法(PCA)和线性判别分析(LDA),线性判别分析本身也是一个分类模型。PCA 和 LDA 有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是 PCA 和 LDA 的映射目标不一样:PCA 是为了让映射后的样本具有最大的发散性;而 LDA 是为了让映射后的样本有最好的分类性能。所以说 PCA 是一种无监督的降维方法,而 LDA 是一种有监督的降维方法。


http://chatgpt.dhexx.cn/article/g0VR8UTm.shtml

相关文章

【特征工程】特征衍生+案例

问:特征衍生上千、万的变量,是怎么做的? 问:大家是如何衍生出成千上万个变量的?衍生变量是怎么生成的? 研习社-上海-桂浩: 请教一个问题,大家是如何衍生出成千上万个变量的?衍生变量…

细说:特征工程 - Feature Engineering

转载至http://www.csuldw.com/2015/10/24/2015-10-24%20feature%20engineering/ 先来一张思维导图: 坊间常说:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。由此可见,特征工程在机器学习中占有相当重要…

机器学习——特征工程

目录 特征工程 特征构造 特征选择 特征提取 模拟训练 训练数据收集方法 特征工程 特征工程就是一个从原始数据提取特征的过程,这些特征可以很好地描述这些数据,并且利用它们建立的模型在未知数据上的性能可以达到最优,最大限度减少“垃…

特征工程文章收集

1. 离散特征编码方法 数据预处理:离散特征编码方法_快乐小码农的博客-CSDN博客_离散特征编码文章目录数据预处理:离散特征编码方法无监督方法:1.序号编码OrdinalEncoder2.独热编码OneHotEncoder3.二进制编码BinaryEncoder4.计数编码CountEnco…

2022年Python自动化特征工程框架

💡 作者:韩信子ShowMeAI 📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41 📘 本文地址:https://www.showmeai.tech/article-detail/328 📢 声明:版权所有,转…

数据的特征工程

数据的特征工程 1.特征工程是什么 特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性 2.特征工程的意义 更好的特征意味着更强的鲁棒性 更好的特征意味着只需用简单模型 更好的特征意味着更好的结果 3.…

机器学习中的特征建模(特征工程)和算法选型建模 - 以暴力破解识别为例

catalogue 1. 特征工程是什么?有什么作用? 2. 特征获取方案 - 如何获取这些特征? 3. 特征观察 - 运用各种统计工具、图标等工具帮助我们从直观和精确层面认识特征中的概率分布 4. 特征处理 - 特征清洗 5. 特征护理 - 特征预处理 6. 特征处理 …

机器学习之特征工程

机器学习之特征工程 转载自: 点击打开链接 在这个振奋人心的程序员节日里,我决定认真地写一篇文章来纪念一下自己这长达六年程序员史。o(╯□╰)o 本文是一篇关于特征工程的总结类文章,如有不足之处或理解有偏差的地方,还望多多指…

Python机器学习—特征工程

文章目录 1、数据集1.1 可用数据集1.2 scikit-learn数据集sklearn小数据集sklearn大数据集 1.3 数据集的划分数据集划分API 2.特征工程2.1特征工程包含内容 3.特征提取3.1字典特征提取3.2 文本特征提取3.3中文文本特征提取3.4 Tf-idf文本特征提取公式 4.特征预处理4.1 归一化4.…

特征工程全过程

文章目录 简介数据预处理 无量纲化 标准化区间缩放法标准化与归一化的区别对定量特征二值化对定性特征哑编码缺失值计算数据变换回顾特征选择 Filter 方差选择法相关系数法卡方检验互信息法Wrapper 递归特征消除法Embedded 基于惩罚项的特征选择法基于树模型的特征选择法总结降…

特征工程与自动特征工程

目录 1. 什么是特征工程 2. 什么是自动特征工程 2.1 自动方法有哪些 3. 文献说明 4、参考文献 1. 什么是特征工程 特征工程,是指用一系列工程化的方式从原始数据中提取出更好的数据特征,以提升模型的训练效果。特征工程是机器学习中不可或缺的一部…

特征工程常用方法

特征工程 ●特征(feature) :数据中抽取出来的对结果预测有用的信息。 ●特征的个数就是数据的观测维度 ●特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程, ●特征工程一般包括特征清…

特征工程——文本特征

目录 文本特征 1.expansion编码 2.consolidation编码 3.文本长度特征 4.标点符号特征 5.词汇属性特征 6.特殊词汇特征 7.词频特征 8.TF-IDF特征 9.LDA特征 注意: 1. 本系列所有的文章主要是梯度提升树模型展开的,抽取的特征主要为帮助梯度提升…

时间序列特征工程

关注微信公众号“时序人”获取更好的阅读体验 时间序列知识整理系列 时间序列统计分析时间序列聚类时间序列预测时间序列回归时间序列特征工程时间序列补缺时间序列异常检测 前几次的文章分享,我们了解了时间序列分析的基础方法以及预测方法。但在使用这些方法一般…

机器学习——特征工程——交互特征(多项式特征)

一、交互特征定义 两个特征的乘积可以组成一对简单的交互特征,这种相乘关系可以用逻辑操作符AND来类比,它可以表示出由一对条件形成的结果:“该购买行为来自于邮政编码为98121的地区”AND“用户年龄在18和35岁之间”。这种特征在基于决策树的…

特征工程到底是什么?

特征工程是一个过程,它首先在概念上,然后在程序上将一个原始样本转化为特征向量。它包括将一个特征概念化,然后编写程序代码,可能借助一些间接数据,将整个原始样本转化为一个特征。 4.1 为什么要进行特征工程 具体来…

什么是特征工程?如何进行特征工程?

1 特征工程是什么? 有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中…

特征工程

文章目录 一、特征工程概述二、特征选择1.什么是特征选择2.为什么要做特征选择3.特征选择的基本原则4.特征选择常用的四种方法4.1 方差选择法4.2 相关系数法4.3 递归特征消除法4.4 模型选择法 参考: 三、特征构造1.什么是好?2.常见做法3.两个变量组合而成…

机器学习——特征工程(3分钟的超详细介绍)

目录 1 什么是特征工程?2 数据预处理和特征处理2.1 数据预处理2.2 特征处理 3 特征降维3.0 什么是特征降维?3.1 特征选择3.2 线性降维3.2.1 主成分分析法(PCA)3.2.2 线性判别分析法(LDA) 1 什么是特征工程&…

机器学习之特征工程详解

特征工程是指使用专业的背景知识和技巧处理数据,使得特征能在机器学习算法上发生更好的作用的过程。更好的特征意味着更强的灵活性,只需简单模型就能得到更好的结果,因此,特征工程在机器学习中占有相当重要的地位,可以…