百面机器学习之第一章 特征工程

特征工程是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。从本质上来讲,特征工程是一个表示和展现数据的过程。在实际过程中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。

1.特征归一化

为什么需要对数据类型的特征做归一化?

        为了消除数据特征之间的量纲影响,需要对特征进行归一化处理,使得不同指标之间具有可比性。

         对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内,最常用的方法主要有以下两种:

        (1)线性函数归一化:对原始数据进行线性变换,使结果映射到[0,1]的范围,实现对原始数据的等比缩放。归一化公式如下:

 其中X为原始数据,Xmax、Xmin分别为数据最大值和最小值。

        (2)零均值归一化:将原始数据映射到均值为0,标准差为1的分布上。具体来说,假设原始特征的均值为μ,标准差为σ,那么归一化公式定义为:

         在实际应用中,通过梯度下降法求解的模型通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等模型,但对于决策时模型则并不适用,以C4.5为例,决策树在进行节点分裂时主要依据数据集D关于特征x的信息增益比,而信息增益比跟特征是否经过归一化是无关的,因为归一化并不会改变样本在特征x上的信息增益。

2.类别型特征

        类别型特征主要是指性别(男、女)等只在有限选项内取值的特征。类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。

 在对数据进行预处理时,应该怎样处理类别型特征?

         (1)序号编码:序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为低中高三等,并且存在“高>中>低”的排序关系。序号编码会按照大小关系对类别型特征赋予一个数值ID,例如高表示为3,中表示为2,低表示为1,转换后依然保留了大小关系。

        (2)独热编码:独热编码通常用于处理类别间不具有大小关系的特征。例如性别,一共有2个取值(男,女)。独热编码会把性别变成一个2维稀疏向量,男表示为(10),女表示为(01)。对于类别取值较多的情况下使用独热编码需要注意以下问题:

                   A. 使用稀疏向量来节省空间。在独热编码下,特征向量只有某一维取值为1,其他位置取值均为0。因此可以利用向量的稀疏表示有效地节省空间。

                B. 配合特征选择来降低维度。高维度特征会带来几方面的问题。一是在K近邻算法中,高维空间下两点之间的距离很难得到有效的衡量;二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合问题;三是通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度。

        (3)二进制编码:二进制编码主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。以血型A、B、AB、O血型为例,A型血的ID为1,二进制表示为001;B型血的ID为2,二进制表示为010;以此类推可以得到AB型血和O型血的二进制表示。可以看出,二进制编码本质上是利用二进制对ID进行哈希映射,最终得到0/1特征向量,且维数少于独热编码,节省了存储空间。

3.高维组合特征的处理

什么是组合特征?如何处理高维组合特征?

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

        如用户的数量为m,物品的数量为n,那么需要学习的参数的规模为m*n。在大数据环境下,用户数量和物品数量都可以达到千万量级,几乎无法学习m*n规模的参数。在这种情况下,一种行之有效的方法是将用户和物品分别用K维的低维向量表示(k<<m,k<<n)。

4.组合特征

怎样有效地找到组合特征?

        基于决策树地特征组合寻找方法。 给定原始输入该如何有效地构造决策树?可以采用梯度提升决策树。该方法的思想是每次都在之前构建的决策树的残差上构建下一棵决策树。

5.文本表示模型

有哪些文本表示模型?它们各有什么优缺点?

         (1)词袋模型和N-gram模型

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

TF-IDF(t,d)=TF(t,d)×IDF(t)

其中TF(t,d)为单词t在文档d中出现的频率,IDF(t)是逆文档频率,用来衡量单词t对表达语义所起的重要性,表示为

IDF(t) = log

另一种解释:如果一个单词在非常多的文章里面都出现,那么它可能是一个比较通用的词汇,对于区分某篇文章特殊语义的贡献较小,因此对权重做一定惩罚。 

        N-gram模型:将连续出现的n个词组成的词组作为一个单独特征放在向量表示中去,构成N-gram模型。

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

        (3)词嵌入与深度学习模型

        词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射成低维空间上的一个稠密向量。

6.Word2Vec

Word2Vec是如何工作的?它和LDA有什么区别与联系?

Word2Vec实际上是一种浅层的神经网络模型,它有两种网络结构,分别是CBOW和Skip-gram。

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

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

        CBOW和Skip-gram都可以表示成由输入层、映射层和输出层组成的神经网络。

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

        在映射层中,K个隐含单元的取值可以由N维输入向量以及连接输入和隐含单元之间的N*K维权重矩阵计算得到。在CBOW中,还需要将各个输入词所计算出的隐含单元求和。

        同理,输出层向量的值可以通过隐含层向量(K维),以及连接隐含层和输出层之间的K*N维权重矩阵计算得到。输出层也是一个N维向量,每维与词汇表中的一个单词相对应。最后,对输出层向量应用Softmax激活函数,可以计算出每个单词的生成概率。Softmax激活函数的定义为:

 其中x代表N维的原始输出向量。x_n为在原始输出向量中,与单词w_n所对应维度的取值。

接下来的任务就是训练神经网络的权重,使得语料库中所有单词的整体生成概率最大化。


        Word2Vec与LDA的区别与联系:LDA是利用文档中单词的共现关系来对单词按主题聚类,也可以理解成对”文档-单词“进行分解,得到”文档-主题“和”主题-单词“两个概率分布。而Word2Vec其实是对“上下文-单词”矩阵进行学习,其中上下文由周围的几个单词组成,由此得到的词向量表示更多地融入了上下文共现的特征。也就是说,如果两个单词所对应的Word2Vec向量相似度较高,那么它们很可能经常在同样的上下文中出现。需要说明的是,上述分析的是LDA与Word2Vec的不同,不应该作为主题模型和词嵌入两类方法的主要差异。主题模型通过一定的结构调整可以基于“上下文-单词”矩阵进行主题推理。同样地,词嵌入方法也可以根据“文档-单词”矩阵学习出词的隐含向量表示。主题模型和词嵌入两类方法最大的不同其实在于模型本身,主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干条件概率连乘的形式,其中包括需要推测的隐含变量(即主题);而词嵌入模型一般表达为神经网络的形式,似然函数定义在网络的输出之上,需要通过学习网络的权重以得到单词的稠密向量表示。

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

在图像分类任务中,训练数据不足会带来什么问题?如何缓解数据量不足带来的问题?

         当训练数据不足时,说明模型从原始数据中获取的信息比较少,这种情况下要想保证模型的效果,就需要更多先验信息。先验信息可以作用在模型上,例如让模型采用特定的内在结构、条件假设或添加其他一些约束条件;先验信息也可以直接施加在数据集上,即根据特定的先验假设去调整、变换或扩展训练数据、让其展现出更多的、更有用的信息,以利于后续模型的训练和学习。

        在图像分类任务上,训练数据不足带来的问题主要表现在过拟合方面。对应的处理方式大致分两类,一是基于模型的方法,主要是采用降低过拟合风险的措施。包括简化模型,添加约束项以缩小假设空间,集成学习、Dropout超参数等;二是基于数据的方法,主要通过数据扩充。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值