1.为什么需要对数值类型的特征做归一化?
2.在对数据进行预处理时,应该怎样处理类别型特征?
3.什么是组合特征?如何处理高维组合特征?
为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得不同指标之间具有可比性。
对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常用的方法主要有以下两种。
(1)线性函数归一化(Min-Max Scaling)。它对原始数据进行线性变换,使结果映射到[0, 1]的范围,实现对原始数据的等比缩放。归一化公式如下
其中X为原始数据,Xmax、Xmin分别为数据最大值和最小值。
(
2
)零均值归一化(
Z-Score Normalization
)。它会将原始数据映射到均值为 0、标准差为
1
的分布上。具体来说,假设原始特征的均值为
μ
、标准差为
σ
,那么归一化公式定义为
■
序号编码
序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为低、中、高三档,并且存在“
高
>
中
>
低
”
的排序关系。序号编码会按照大小关系对类别型特征赋予一个数值ID
,例如高表示为
3
、中表示为
2
、低表示为
1
,转换后依然保留了大小关系。
■
独热编码
独热编码通常用于处理类别间不具有大小关系的特征。例如血型,一共有
4
个取值(A
型血、
B
型血、
AB
型血、
O
型血),独热编码会把血型变成一个
4
维稀疏向量,A
型血表示为(
1, 0, 0, 0
),
B
型血表示为(
0, 1, 0, 0
),
AB
型表示为(
0, 0, 1, 0),
O
型血表示为(
0, 0, 0, 1
)。对于类别取值较多的情况下使用独热编码需要注意以下问题。
(
1
)使用稀疏向量来节省空间。在独热编码下,特征向量只有某一维取值为1,其他位置取值均为
0
。因此可以利用向量的稀疏表示有效地节省空间,并且目前大部分的算法均接受稀疏向量形式的输入。
(
2
)配合特征选择来降低维度。高维度特征会带来几方面的问题。一是在
K近邻算法中,高维空间下两点之间的距离很难得到有效的衡量;二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合问题;三是通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度。
■
二进制编码
二进制编码主要分为两步,先用序号编码给每个类别赋予一个类别
ID
,然后将类别ID
对应的二进制编码作为结果。以
A
、
B
、
AB
、
O
血型为例,表
1.1
是二进制编码的过程。A
型血的
ID
为
1
,二进制表示为
001
;
B
型血的
ID
为
2
,二进制表示为010;以此类推可以得到
AB
型血和
O
型血的二进制表示。可以看出,二进制编码本质上是利用二进制对ID
进行哈希映射,最终得到
0/1
特征向量,且维数少于独热编码,节省了存储空间。

为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。以广告点击预估问题为例,原始数据有语言和类型两种离散特征,表1.2
是语言和类型对点击的影响。为了提高拟合能力,语言和类型可以组成二阶特征,表1.3
是语言和类型的组合特征对点击的影响。
表
1.2
语言和类型对点击的影响

表
1.3
语言和类型的组合特征对点击的影响


以逻辑回归为例,假设数据的特征向量为
X
=(
x
1
,
x
2
,...,
x
k
)
,则有,
其中
表示
x
i
和
x
j
的组合特征,
w
ij
的维度等于
|
x
i
|·|
x
j
|
,
|
x
i
|
和
|
x
j
|
分别代表第
i
个特征和第j
个特征不同取值的个数。在表
1.3
的广告点击预测问题中,
w
的维度是2×2=4(语言取值为中文或英文两种、类型的取值为电影或电视剧两种)。这种特征组合看起来是没有任何问题的,但当引入ID
类型的特征时,问题就出现了。以推荐问题为例,表1.4
是用户
ID
和物品
ID
对点击的影响,表
1.5
是用户
ID
和物品
ID
的组合特征对点击的影响。
表
1.4
用户
ID
和物品
ID
对点击的影响
表
1.5
用户
ID
和物品
ID
的组合特征对点击的影响
若用户的数量为
m
、物品的数量为
n
,那么需要学习的参数的规模为
m
×
n
。在互联网环境下,用户数量和物品数量都可以达到千万量级,几乎无法学习m
×
n
规模的参数。在这种情况下,一种行之有效的方法是将用户和物品分别用k
维的低维向量表示(k
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?
立即登录/注册


微信扫码登录