特征工程

2019-07-27  本文已影响0人  菜鸡不得行

1. 介绍

特征工程是对原始数据进行一系列工程处理,将其提炼为特征,作为输入。是一个表示和展示数据的过程,特征工程去除原始数据中的杂质和冗余,设计更高效的特征来寻找问题与模型之间的关系。

2. 常见数据类型

3. 特征归一化

为了消除数据特征之间的量级影响,需要进行特征归一化处理,使各特征指标处于同一量级。对数值类型的特征做归一化可以将所有特征统一到一个大致相同的数值区间。 最常用的方法主要有以下两种:

  1. 线性函数归一化(Min-Max Scaling):对原始数据进行线性变换,是结果映射到[0,1]之间,实现等比缩放。
    X_{norm}= \frac{X-X_{min}}{X_{max}-X_{min}}
  2. 零均值归一化(Z-Score Normalization): 将原始数据映射到均值为0、标准差为1的分布上。假设原始特征的均值为\mu 、标准差为\sigma , 那么归一化公式为:
    z=\frac{x- \mu}{\sigma}
    通过梯度下降求解的模型通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但是对于决策树并不适用,比如C4.5,决策树在进行节点分裂时,主要依据数据集关于特征的信息增益比,而信息增益比跟特征是否经过归一化无关,因为归一化并不会改变样本在特征上的信息增益。

4. 类别型特征

类别型特征主要是指性别、星座这种有限选项内取值的特征。原始输入通常是字符串,除了决策树等少数模型能直接处理字符串输入,像逻辑回归、SVM等模型,类别型特征必须转化成数值型才能正确工作。在对数据预处理时,处理类别型特征主要有三种方法:序号编码,独热编码,二进制编码。

5. 高维组合特征的处理

组合特征:为了提高复杂关系的拟合能力,在特征工程中,经常会把一阶离散特征两两组合,组成高阶组合特征。

以逻辑回归为例,假设数据的特征向量为 X=(x_1,x_2,...,x_k),则有
\huge{Y = \operatorname{sigmoid}(\sum_i\sum_jw_{ij})}
其中\langle x_i,x_j\rangle表示x_ix_j 的组合特征,w_{ij} 的维度等于\mid x_i\mid\cdot \mid x_j\mid, \mid x_i\mid\mid x_j\mid分别代表第i 个特征和第j 个特征不同的取值个数。例如 i=(语言:中文/英文)j=(类型:小说/散文), 则w 的维度为2\times2=4。这种特征组合看起来没什么问题,但是当引入一些具有标识性的特征(比如ID)时,就会出现参数太多的问题。比如说在推荐系统中,用户的数量为m, 物品的数量为n, 那么需要学习的参数为m\times n个。当用户和物品数量到达百万级、千万级时,这种规模的参数是无法学习的。在这种情况下,可以进行降维处理。将用户和物品分别用k 维的低维向量表示。其中k<<m,k<<n 。所以上面公式中的 w_{ij}=x^\prime_i \cdot x^\prime_j, 其中 x^\prime_i,x^\prime_j,分别表示 x_i,x_j 对应的低维向量。现在需要学习的参数规模就变成m\times k+n\times k。在推荐算法中,这就等价于矩阵分解,这里的低维向量可以看出矩阵分解时的隐含变量。

6. 文本表示模型

\huge{TF-IDF(t,d)=TF(t,d)\times IDF(t)} \\[3ex]
其中TF(t,d)是单词t 在文档d 中出现的频率,IDF(t) 是逆文档频率,用来衡量单词 t 对表达语义所起的重要性。
IDF(t)=\log(\frac{文章总数}{包含单词t的文章总数+1})
直观的解释,如果一个单词在非常多的文章里面都出现,那么它可能是一个比较通用的单词,对于区分文章是否有特殊语义的贡献较少,因此对权重做一定的惩罚。

但是很多单词组合起来的意思和这些单词单独出现时表示的意思差距很大,通常可以将连续出现的 n(n\leq N) 个单词合成词组(N-gram),将词组也作为一个单独的特征放到向量表示中去。在实际中,一般会对单词进行词干抽取(Word Stemming)处理,即将不同词性的单词统一成一个词干的形式。

7. Word2Vec

word2Vec是目前常用的词嵌入模型之一,实际上是一种浅层的神经网络模型,有两种网络结构,分别是CBOW(Continues Bag of Words)和Skip-gram。

COBW的目标是根据上下文出现的词语来预测当前词的生成概率。而Skip-gram是根据当前词来预测上下文中各词的生成频率。


3.jpg

其中w(t) 是当前所关注的词,w(t-2),w(t-1),w(t+1),w(t+2) 是上下文出现的词。这里前后滑动窗口大小(上下文取值)均为2。

CBOW和Skip-gram都可以看成由输入层(Input),映射层(Projection),输出层(Output)组成的神经网络。

输入层中的每个词由独热编码方式表示,即所有词均表示成一个N维向量,其中N为词汇表中单词的总数。在向量中,每个词都将与之对应的维度置为1,其余维度均为0.

在映射层中,K个隐含单元的取值可以由N维输入向量以及连接输入和隐含单元之间的N\times K 维权重矩阵计算得到。在CBOW中还需将各个输入词所计算出的隐含单元求和。同样,输出层的值也可以这样得到。输出层也是一个N维向量,每维与词汇表中的一个单词相对应。最后,通过Softmax激活函数,可以计算出每个词的生成频率。Softmax函数定义如下:
\huge{P(y=w_n\mid x)=\frac{e^{x_n} }{\sum_{k=1}^N e^{x_k} } }
其中x 代表N维的原始输出向量,x_n 为在原始输出向量中,与单词w_n 所对应维度的取值。

8. 图像数据不足时的处理方法

一个模型所能提供的信息一般来源于两个方面,一是训练数据中蕴含的信息,二是在模型的形成过程中,人们提供的先验信息。当训练数据不足时,说明原始数据中能获取的信息较少,所以就需要更多的先验信息。先验信息可以添加在模型上,也可以添加在数据集中。

具体到图像上,训练数据不足带来的问题主要表现在过拟合方面。处理方法大致可以分两类,一是基于模型的方法,比如简化模型,添加正则约束,集成学习,Dropout等;二是基于数据的方法,比如数据增强。在保持图像类别不变的前提下,对图像进行变换,旋转、平移、缩放、添加噪声、颜色变换、改变图像亮度、清晰度等等。也可以对图像进行特征提取,或者使用生成模型合成新样本。再就是借助其他模型或数据进行迁移学习,进行fine-tune等等。

参考资料

《百面机器学习》

上一篇 下一篇

猜你喜欢

热点阅读