特征工程主要讨论两种数据类型
- 结构化数据
- 非结构化数据
- 如文本、图像、语音等
特征归一化
为什么要进行特征归一化
- 特征归一化是将所有的特征否统一到以个大致相同的值区间内,如[0, 1]或[-1, 1]
- 特征归一化一般有以下两种方法
- 线性函数归一化
X n o r m = X − X m i n X m a x − X m i n X_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}} Xnorm=Xmax−XminX−Xmin
缺点:受离群点影响较大 - 零均值归一化
z = x − / m i u σ z = \frac{x - /miu}{\sigma} z=σx−/miu
- 线性函数归一化
- 进行特征归一化的原因有一下几点
- 在进行梯度下降时,为归一化的数据,在不同维度的更新速率差别很大,很容易发生震荡,相比于归一化后的数据收敛缓慢,更难找到最优解。
- 在实际应用中,通过梯度下降法求解的模型通常是对数据进行归一化处理的,比如线性回归,逻辑回归,支持向量机,神经网络等模型。但是如决策树、朴素贝叶斯等模型,归一化并不会影响其结果。
类别型特征的处理方法
- 在数据预处理时,如何处理类别特征
- 序号编码。序号编码通常用来处理类别间有大小关系的数据,如年龄,成绩等
- 独热编码。最常见的类别处理方式。但是独热编码容易造成维度爆炸的问题。因此,使用独热编码时应注意一下问题:(1)使用稀疏向量来节省空间(2)配合特征选择来降低维度。
- 二进制编码。
- 高维组合特征的处理
- 类别特征(一般使用独特编码)两两组合后的特征,只有二者均为1时组合特征才为1
- 类别特征1有m种可能取值,类别特征2有n种可能取值,那么组合特征的维度为m*n
- 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∑jwij<xi,xj>)可以将类别1,类别2分别用一个k维的向量 x i ′ x_{i}^{'} xi′, x j ′ x_{j}^{'} xj′表示, w i j = < x i ′ , x j ′ > w_{ij}=<x_{i}^{'}, x_{j}^{'}> wij=<xi′,xj′>,再进行梯度下降训练(如线性回归,或逻辑回归等算法)
- 数据维度过高有什么问题
- 计算复杂度高
- 需要度量距离的算法可能在高维空间失效
- 纬度高,参数数量高的模型容易造成过拟合
非结构化数据的表示方式
文本的表示方法
- 词袋模型和N-gram模型
- TF-IDF: T F − I D F ( t , d ) = T F ( t , d ) ∗ I D F ( t ) TF-IDF(t, d) = TF(t, d) * IDF(t) TF−IDF(t,d)=TF(t,d)∗IDF(t)其中$TF(t, d) 表 示 单 词 t 再 文 档 d 中 出 现 的 频 率 , 表示单词t再文档d中出现的频率, 表示单词t再文档d中出现的频率,IDF(t) 时 逆 文 档 频 率 , 时逆文档频率, 时逆文档频率,IDF(t)=log(文章总数/单词t出现的文章总数+1)$.如果一个单词在很多文档中都出现了,那么其权重就会更低。词袋模型、N-gram等模型的表示向量都是稀疏向量
- 主题模型
placeholder:待填坑 - 词嵌入模型
- word2vec(详见我的另一篇博客)、GLove等
特征筛选的方法
- 基于决策树的特征组合寻找方法:构造一个高度为2的决策树(对于两两组合的方式),从根节点到叶节点的每一个路径都是一个组合特征。(可以采用梯度提升决策树来构建决策树)