机器学习中的特征工程

什么是特征工程

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

构建算法模型的步骤

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

一、数据预处理

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

数据清洗

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

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 为样本最小值。

2. 标准化处理

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

离散特征编码

离散特征无法直接使用,需要编码后才能进行相关计算分析。离散特征编码主要有三种方式,独热编码、数值编码、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 正则项特征选择的原理如下图所示:

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

树选择

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

三、特征组合

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

多项式组合

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

GBDT(Xgboost)特征组合

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

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

四、特征降维

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

机器学习中的特征工程相关推荐

  1. 机器学习中的特征工程——分类变量的处理

    出品 | CDA数据分析研究院,转载需授权 文章目录 分类变量 概念 判断 类型 少类别分类变量处理方法 独热编码(One-hot encoding) 虚拟编码(Dummy coding) 效应编码( ...

  2. 机器学习中的特征工程总结!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 译者:张峰 ,Datawhale成员 结构总览 特征工程 传统编程的关注 ...

  3. 【机器学习基础】机器学习中的特征工程总结!

    译者:张峰 ,Datawhale成员 结构总览 特征工程 传统编程的关注点是代码.在机器学习项目中,关注点变成了特征表示.也就是说,开发者通过添加和改善特征来调整模型."Garbage in ...

  4. 机器学习如何计算特征的重要性_干货 :机器学习中的特征工程总结

    结构总览 特征工程 传统编程的关注点是代码.在机器学习项目中,关注点变成了特征表示.也就是说,开发者通过添加和改善特征来调整模型."Garbage in, garbage out" ...

  5. 第五课 机器学习中的特征工程

    本系列是七月算法机器学习课程笔记 文章目录 1 特征工程与意义 2 数据与特征处理 2.1数据采集 2.2 数据清洗 2.3 数据采样 2.4 特征处理 2.4.1 数值型 2.4.2 类别型 2.4 ...

  6. 机器学习中的特征工程详解

    转载请注明出处:http://blog.csdn.net/linxdcn/article/details/80866745 最近看完一本写特征工程的书,概念清晰,内容全面,所以总结如下读书笔记,书名: ...

  7. 机器学习实战之特征工程

    机器学习实战与特征工程 1.机器学习概述 1.1 什么是机器学习 1.2 为什么要机器学习 1.3 机器学习应用场景 1.4 学习框架和资料的介绍 2.特征工程 2.1 特征工程介绍 2.1.1 数据 ...

  8. 浅谈微视推荐系统中的特征工程

    本文作者:hannahguo,腾讯 PCG 推荐算法工程师 在推荐系统中,特征工程扮演着重要的角色.俗话说数据和特征决定了机器学习算法的上限,而模型.算法的选择和优化只是在不断逼近这个上限.特征工程的 ...

  9. 百面机器学习——第一章特征工程

    特征工程:是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用.从本质上来讲,特征工程是一个表示和展现数据的过程.在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的 ...

最新文章

  1. win10默认账户 WDAGUtilityAccount 和 DefaultAccount
  2. mysql表大小限制_技术分享 | 在磁盘上查找 MySQL 表的大小
  3. 与html相关的知识点整理
  4. 多线程编程:return、pthread_exit()、exit()函数区别
  5. hdu 3033(分组背包)
  6. Python中Pyaudio安装失败的解决办法
  7. 所需依赖_包揽全球75%进口!中国为何进口天量铁矿石?如何减少对澳依赖
  8. 什么是运营?与产品的关系是怎样的?
  9. 【转】使用C语言实现MD5消息摘要算法
  10. Eclipse, Lomboz and Tomcat 的配置和调试
  11. war压缩命令_宝塔面板linux版解压WAR文件时,如何解压的三种方法介绍
  12. groovy java to swift_groovy数据类型 - Groovy教程
  13. 小米手机连上无线网却无法上网络连接服务器,连接水星路由器wifi成功但上不了网怎么办?...
  14. 【2019-06-27】现在不杂
  15. Visual.Assist.X.V10.7.1912的Crack破解补丁
  16. 蓝屏解决办法,及介绍。(装逼或学习)
  17. 谷歌SEO排名受哪些因素的影响?(一)
  18. 一政:公务员笔试备考注意这几点
  19. 手机屏幕关于VGA、QVGA、WVGA、HVGA的区别介绍(模拟器)
  20. Justice, grandson of interest!

热门文章

  1. linux下遇到的各种问题
  2. PIM其它特性——IPv6、Anycast RP
  3. 使用UGUI自定义五边形
  4. H3C 通配符掩码的应用示例
  5. 电子签名?玩具罢了!(web前端)
  6. 资源管理器已停止运行,屏幕已黑,explorer.exe打不开
  7. 拜占庭将军问题对应的分布式一致性算法
  8. 植物大战僵尸鼠标状态
  9. AtCoder Regular Contest 107----B - Quadruple(数学分析)
  10. 学生党哪个品牌蓝牙耳机性价比高?300左右高颜值音质动听蓝牙耳机推荐