高维组合特征的处理:什么是组合特征?如何处理高维组合特征?
问题:什么是组合特征?如何处理高维组合特征?
分析与解答
为了提高复杂关系的拟合能力,在特征工程
中经常会把一阶离散特征两两组合,构成高阶组合特征。以广告点击预估问题为例,原始数据有语言和类型两种离散特征,表1.2 是语言和类型对点击的影响。为了提高拟合能力, 语言和类型可以组成二阶特征,表1.3 是语言和类型的组合特征对点击的影响。
以逻辑回归为例,假设数据的特征向量为
X
=
(
x
1
,
x
2
,
.
.
.
,
x
k
)
X=(x_1,x_2,...,x_k)
X=(x1,x2,...,xk),则有
Y
=
s
i
g
m
o
i
d
(
∑
i
∑
j
w
i
j
<
x
i
,
x
j
>
)
Y=sigmoid(\sum_i\sum_j w_{ij}<x_i,x_j>)
Y=sigmoid(i∑j∑wij<xi,xj>),其中
<
x
i
,
x
j
>
<x_i,x_j>
<xi,xj>表示
x
i
x_i
xi和
x
j
x_j
xj的组合特征,
w
i
j
w_{ij}
wij的维度等于
∣
x
i
∣
⋅
∣
x
j
∣
|x_i|\cdot |x_j|
∣xi∣⋅∣xj∣,
∣
x
i
∣
|x_i|
∣xi∣和
∣
x
j
∣
|x_j|
∣xj∣分别代表第
i
i
i个特征和第
j
j
j个特征不同取值的个数。在表1.3中广告点击预测问题中,
w
w
w的维度为2×2=4(语言取值为中文或英文两种,类型的取值为电影或电视剧两种)。这两种特征组合看起来是没有任何问题的,但当引入ID类型的特征时,问题就出现了。
以推荐问题为例,表1.4是用户ID和物品ID对点击的影响,表1.5是用户ID和物品ID的组合特征对点击的影响。
若用户的数量为
m
m
m,物品的数量为
n
n
n,那么需要学习的参数的规模为
m
×
n
m\times n
m×n。在互联网环境下,用户数量和物品数量都可以达到千万量级,几乎无法学习
m
×
n
m\times n
m×n规模的参数。在这种情况下,一种行之有效的方法是将用户和物品分别用
k
k
k维的低维向量表示
(
k
<
<
m
,
k
<
<
n
)
(k<<m,k<<n)
(k<<m,k<<n),也就是做特征的embedding。
Y
=
s
i
g
m
o
i
d
(
∑
j
∑
j
w
i
j
<
x
i
,
x
j
>
)
Y=sigmoid(\sum_j\sum_j w_{ij}<x_i,x_j>)
Y=sigmoid(j∑j∑wij<xi,xj>),其中
w
i
j
=
x
i
′
⋅
x
j
′
w_{ij}=x'_i\cdot x'_j
wij=xi′⋅xj′,
x
i
′
x'_i
xi′和
x
j
′
x'_j
xj′分别表示
x
i
x_i
xi和
x
j
x_j
xj对应的低维向量。在表1.5的推荐问题中,需要学习的参数的规模变为
m
×
k
+
n
×
k
m\times k+n\times k
m×k+n×k。这其实等价于矩阵分解。所以这里也提供了另一种理解推荐系统中矩阵分解的思路。
合成特征的方法
- 将一个特征与其本身或其他特征相乘(称为
特征组合
) - 两个特征相除
- 对连续特征进行分桶,以分为多个区间分箱,然后进行离散形式的组合。
特征相乘:其中特征相乘有很多种形式,可以是特征自身与自身相乘,也可以是与其他若干个特征相乘。
特征分桶:特征分桶是根据特征值进行区间分割,然后离散化。比如年龄:
1
∼
20
岁
→
[
1
,
0
,
0
]
1\sim 20岁\rightarrow [1, 0, 0]
1∼20岁→[1,0,0];
21
∼
40
岁
→
[
0
,
1
,
0
]
21\sim 40岁 \rightarrow [0, 1, 0]
21∼40岁→[0,1,0];
41
∼
60
岁
→
[
0
,
0
,
1
]
41\sim 60岁 \rightarrow [0, 0, 1]
41∼60岁→[0,0,1]。或者是性别:
男
→
[
1
,
0
]
男 \rightarrow [1, 0]
男→[1,0];
女
→
[
0
,
1
]
女 \rightarrow [0, 1]
女→[0,1]。类似于独热编码,然后对特征进行组合,组合之后依然还是独热编码。通过这种两两组合,衍生出大量的特征,增强了表征能力和泛化能力。
如何处理高维组合特征
经过以上几种方法进行特征组合之后,我们会得到一个很高维的特征矩阵,直接处理会带来很大的计算负担,我们可以采取降维
,矩阵分解
或者特征筛选
的方法得到具备绝大部分信息的几个特征进行训练。
第一种降维方法中,即基于原有的特征进行降维
,常见的有:PCA
、LDA
、SVD
、稀疏自编码
、word2vec
等
第二种筛选的方法,即基于原有的特征进行筛选
,主要是对原有特征和目标label进行重要性分析,将那些不重要的特征进行剔除,比如使用gbdt
、random forest
等模型进行简单的模型训练,并输出特征的权重,继而进行筛选.
但有时为了能更有效地找出输入数据内部的结构和模式,会寻找一组超完备基向量
,其维度可能比输入的特征维度还要高。
特征降维的好处:
- 数据维度降低,存储所需的空间减少
- 减少计算和训练模型的时间
- 剔除无用或关系不大的特征,减小对模型的影响,提高模型可用性
- 删除冗余特征(比如某几维特征存在多重共线性)
- 便于数据可视化
内容来源
- 《百面机器学习》