美文网首页
特征工程

特征工程

作者: 菜鸡不得行 | 来源:发表于2019-07-27 23:34 被阅读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等模型,类别型特征必须转化成数值型才能正确工作。在对数据预处理时,处理类别型特征主要有三种方法:序号编码,独热编码,二进制编码。

  • 序号编码(Ordinal):处理类别间有大小关系的数据,按照大小关系对特征赋予一个数值ID,例如大为2、小为1。
  • 独热编码(One-hot):处理类别间没有大小关系的特征。例如血型(A,B,AB,O),独热编码会把血型变成一个4维的稀疏向量,(1,0,0,0), (0,1,0,0), (0,0,1,0), (0,0,0,1)。对于类别取值较多的情况需要注意:1. 使用稀疏向量来节省空间。2. 配合特征选择来降维。高维度特征会带来一些问题,K近邻中,高维空间两点的距离很难衡量;逻辑回归中,参数的数量会随维度增高而增加,容易过拟合;通常只有部分维度对分类、预测有帮助。
  • 二进制编码(Binary): 先用序号给每个类别赋予一个ID,然后将ID的二进制编码作为结果。对于血型的例子,使用二进制编码,因为只有4各类型,所以转成二进制,只需要转成3维稀疏向量即可。通过二进制编码,维数小于独热编码,节省了存储空间。

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. 文本表示模型

  • 词袋模型和N-gram模型

    词袋模型是最基础的文本表示模型。将每篇文章看成一袋子词,并且忽略每个词出现的顺序。具体来说,就是将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,该维所对应的权重反映了这个词在原文章中的重要程度。通常用TF-IDF来计算权重。

\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)处理,即将不同词性的单词统一成一个词干的形式。

  • 主题模型

    主题模型用于从文本库中发现有代表性的主题(得到每个主题上面单词的分布特点),并且计算出每篇文章的主题分布。

  • 词嵌入

    词嵌入是将单词向量化的模型的统称。核心思想是将每个词都映射成低维空间上的一个稠密向量(Dense),K维空间的每一维也可以看作一个隐含的主题。

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等等。

参考资料

《百面机器学习》

相关文章

  • 2018-04-03-机器学习相关

    No.1 特征工程 (1)使用sklearn做单机特征工程 - jasonfreak - 博客园 (2)特征工程实...

  • 机器学习之特征工程

    目录大纲 特征工程是什么? 特征工程的重要性 特征工程子问题:1.特征处理2.Feature Selection(...

  • 使用sklearn做单机特征工程

    使用sklearn做单机特征工程 | 转载 使用sklearn做单机特征工程 目录1 特征工程是什么?2 数据预处...

  • 特征工程

    http://www.cnblogs.com/jasonfreak/p/5448385.html

  • 特征工程

    特征工程  我们做比赛的初衷是想在比赛中锻炼用深度学习模型解决实际问题的能力。所以我们做特征工程时更多的考虑了深度...

  • 特征工程

    目录 1 特征工程是什么?2 数据预处理2.1 无量纲化2.1.1 标准化2.1.2 区间缩放法2.1.3 标准化...

  • 特征工程

    数据和特征的质量决定了机器学习的上限,而模型和算法只是不断逼近这个上限而已 数据清洗 数据样本抽样 异常值(空值处...

  • 特征工程

  • 特征工程

    首先,给一张特征工程的思维导图: 【如果要浏览图片,建议将其下载到本地,使用图片浏览软件查看】 关于特征工程(Fe...

  • 特征工程

    Feature Enginnering 应用机器学习的本质是特征工程。通过特征工程,我们能持续地提升效果,而模型算...

网友评论

      本文标题:特征工程

      本文链接:https://www.haomeiwen.com/subject/csiyrctx.html