首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >特征工程之数据预处理

特征工程之数据预处理

作者头像
用户7569543
发布2020-07-17 14:04:44
6600
发布2020-07-17 14:04:44
举报

前面我们说过,特征工程在数据挖掘任务中非常重要,可以说直接关系着后续模型效果的好坏。不过要做好特征工程并不容易,它既需要对业务有深入的理解,还要求掌握扎实的专业知识。在数据分析中,常用的特征工程方法包括特征放缩和特征编码,前者主要是归一化和正则化,用于消除量纲关系的影响。后者包括了序号编码、独热编码等,主要是处理类别型、文本型以及连续型特征。下面将给大家分别介绍特征放缩和特征编码的具体处理方法。

一、特征放缩

1、归一化

归一化(Normalization),也称为标准化,这里不仅仅是对特征,实际上对于原始数据也可以进行归一化处理,它是将特征(或者数据)都缩放到一个指定的大致相同的数值区间内。

  • 常用的两种归一化方法

线性函数归一化(Min-MaxSCaling)。它对原始数据进行线性变换,使得结果映射到[0,1]的范围,实现对原始数据的等比缩放,其公式如下:

零均值归一化(Z-ScoreNormalization)。它会将原始数据映射到均值为0,标准差为1的分布上,其公式如下:

需要注意的是,如果数据集分为训练集、验证集、测试集,那么三个数据集都需要采用相同的归一化方法,数值都是通过训练集计算得到,即上述两种方法中分别需要数据的最大值、最小值、方差和均值都是通过训练集计算得到。但归一化不是万能的,在实际应用中,通过梯度下降法求解的模型是需要归一化的,这包括线性回归、逻辑回归、支持向量机、神经网络等模型。但决策树模型不需要,以C4.5 算法为例,决策树在分裂结点的时候主要依据数据集 D关于特征 x的信息增益比,而信息增益比和特征是否经过归一化是无关的,即归一化不会改变样本在特征 x上的信息增益。

2、正则化

正则化是将样本或者特征的某个范数(如 L1、L2 范数)缩放到单位1。

假设数据集为D:

对样本首先计算范数,得到:

正则化后的结果是每个属性值除以其范数

注意:正则化的过程是针对单个样本的,对每个样本将它缩放到单位范数。而归一化是针对单个属性的,需要用到所有样本在该属性上的值。

二、特征编码

1、序号编码

序号编码一般用于处理类别间具有大小关系的数据。比如用户价值,可以分为高、中、低三个档次,并且存在“高>中>低”的大小关系,那么序号编码可以对这三个档次进行如下编码:高表示为3,中表示为2,低表示为1,这样转换后依然保留了大小关系。

2、独热编码

独热编码通常用于处理类别间不具有大小关系的特征。独热编码是采用N位状态位来对N个可能的取值进行编码。比如年龄段,一共有 4 个取值(0-18、19-36、37-54 以及55岁以上),那么独热编码会将年龄段转换为一个4维稀疏向量,分别表示上述四种年龄段为:0-18岁:(1,0,0,0)、19-36岁:(0,1,0,0)、37-54岁:(0,0,1,0)、55岁以上:(0,0,0,1)。

3、二进制编码

二进制编码主要分为两步,先采用序号编码给每个类别赋予一个类别ID,然后将类别 ID对应的二进制编码作为结果。继续以年龄段为例子,如下表所示:

年龄段

类别 ID

二进制表示

独热编码

0-18岁

1

0 0 1

1 0 0 0

19-36岁

2

0 1 0

0 1 0 0

37-54岁

3

0 1 1

0 0 1 0

55岁以上

4

1 0 0

0 0 0 1

从上表可以知道,二进制编码本质上是利用二进制对类别 ID进行哈希映射,最终得到 0/1 特征向量,并且特征维度小于独热编码,更加节省存储空间。

4、二元化

特征二元化就是将数值型的属性转换为布尔型的属性。通常用于假设属性取值分布是伯努利分布的情形。特征二元化的算法比较简单。对属性i指定一个阈值m。如果样本在属性i上的值大于等于m, 则二元化后为1;如果样本在属性i上的值小于m,则二元化为0。

5、离散化

离散化可以理解为二元化的一般形式,对数值型的属性i指定多个阈值,将属性i分隔成多个分段。那么什么时候需要采用特征离散化呢?这就要考虑是采用“海量离散特征+简单模型”,还是采用“少量连续特征+复杂模型”的做法了。

对于线性模型,通常使用“海量离散特征+简单模型”的方式。其特点是模型比较简单,但特征工程比较困难,但一旦有成功的经验就可以推广,并且可以很多人并行研究;对于非线性模型(比如深度学习),通常使用“少量连续特征+复杂模型”的方式。其特点是不需要复杂的特征工程,但模型相对较复杂。具体采用哪一种做法我们可以根据实际情况来决定。

总的来说,特征缩放是非常常用的方法,特别是归一化处理特征数据,对于利用梯度下降来训练学习模型参数的算法,有助于提高训练收敛的速度;而特征编码,特别是独热编码,也常用于对结构化数据的数据预处理。好了,本节课介绍到此,有时间再跟大家继续分享其他干货内容。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 多赞云数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档