特征工程的QA

来源

《百面机器学习》第1章

特征工程

简单的说,数据和特征决定了结果的上限,模型、算法的选择及优化则是在逐步接近这个上限。

(除了少数推理任务,大部分模型基于独立同分布假设)

从本质上说,特征工程是一个表示和展现数据的过程。

在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。比如用tfidf作为文本分类的一个特征。

特征归一化

问1:为什么需要对数值类型的特征做归一化?

特征归一化常用的方法有两种:
1.线性函数归一化:对原始数据进行线性变换,映射到[0,1]范围,实现对原始数据的等比缩放。
2.零均值归一化:将原始数据映射到均值为0、标准差为1的分布上。
归一化的原因:
1.归一化之后,模型的优化路径会从椭圆到圆形,梯度下降的速度会加快。
实际应用中,通过GD求解的模型通常是需要归一化的,包括LR、SVM、NN等
但对于决策树并不适用,比如C4.5,节点分裂的依据是信息增益比,因为归一化不会改变样本在特征x上的信息增益,所以与特征归一化无关。(这里我认为信息增益本身已经归一化过了,因为对待不同特征用的衡量标准都是样本个数)

类别型特征

类别型特征: categorical feature

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

序号编码:通常用于处理类别间具有大小关系的数据。比如成绩分档“高”“中”“低”->3,2,1
独热编码:通常用于处理类别间不具有大小关系的特征。
	问题:稀疏向量,配合特征选择来降低维度
二进制编码:本质是利用二进制对ID进行哈希映射,最终得到0/1特征向量,且维数少于独热编码,节省了存储空间。(我认为这和word2vec的hierarchical softmax的思路相似)

高维组合特征的处理

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

高阶组合特征:是指把一阶离散特征两两组合,构成高阶组合特征。比如特征1取值为m个,特征2取值为n个,组合起来就有m*n个特征。
处理方法:矩阵分解,将用户和物品分别用k维的低维向量表示,即将学习的参数规模从m*n降低到m*k+n*k。

组合特征

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

给定原始输入如何有效地构造决策树呢?
可以采用梯度提升决策树,方法思想是每次都在之前构建的决策树的残差上构建下一棵决策树。
(每一条从根节点到叶节点的路径都可以看做一种特征组合的方式)

文本表示模型

问1:有哪些文本表示模型?各有什么优缺点?

有词袋模型,TF-IDF,主题模型,词嵌入模型四类。
词袋模型和N-gram模型:忽略词序,会结合TFIDF作为权重反映词在原文章中的重要程度。
主题模型:用于从文本库中发现有代表性的主题(得到每个主题上面词的分布特性),并且能够计算出每篇文章的主题分布。
词嵌入模型:将每个词映射成低维空间上的一个稠密向量。K维空间的每一维也可以看作一个隐含的主题,只不过不像主题模型中的主题那样直观。
PS:深度模型的优势:自动进行特征工程,模型的每个隐层对应着不同抽象层次的特征。
比如CNN和RNN能够对文本建模时抽取出一些高层的语义特征。

Word2Vec

浅层神经网络模型,有两种网络结构:CBOW和Skip-gram

问1:word2vec是如何工作的?它和LDA有什么区别与联系?

CBOW和Skip-gram的模型结果:输入层->映射层->输出层(softmax激活函数生成每个单词的概率)
由于softmax激活函数中存在归一化项的缘故,迭代非常缓慢,由此产生了
Hierarchical Softmax和Negative sampling两种改进方法。
训练得到维度为N*K和K*N的两个权重矩阵,可以选择其中一个作为N个词的K维向量表示。
LDA是利用文档中单词的共现关系来对单词按主题聚类,可以理解成对【文档-单词】矩阵进行分解,得到【文档-主题】和【主题-单词】两个概率分布。
而word2vec其实是对【上下文-单词】矩阵进行学习,其中上下文由周围几个单词组成,由此得到的词向量表示更多地融入了上下文共现的特征。

但是!上述的做法其实可以变换成彼此的。主题模型和词嵌入两类方法最大的不同在于模型本身:
主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干条件概率连乘的形式,其中包括需要推测的隐含变量(主题)
词嵌入模型一般表达为神经网络的形式,似然函数定义在网络的输出之上,需要通过学习网络的权重以得到单词的稠密向量表示。

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

问:如何缓解数据量不足带来的问题?

模型能提供的信息来源两方面:1.训练数据中蕴含的信息,2.模型形成过程中(构造、学习、推理等),人们提供的先验信息。
先验信息举例:
1.让模型采用特定的内在结构、条件假设或添加其他一些约束条件;
2.也可以施加在数据集上,即根据特定的先验假设去调整、变换或扩展训练数据,
让其展现出更多的、更有用的信息,以利于后续模型的训练和学习。
(这理论结合过往的经验听着真舒服)
具体到图像分类上,训练数据不足带来的问题主要是过拟合,即泛化效果差,学到了一些不该学的东西(比如和小狗经常一起出现的乌云,就识别有乌云的动物为小狗)
对应的处理方法也分两类:
1.基于模型的方法,主要是采用降低过拟合风险的措施,包括简化模型、添加约束项以缩小假设空间、集成学习、Dropout超参数等
2.基于数据的方法,主要通过数据扩充,即根据一些先验知识,在保持特定信息的前提下,对原始数据进行适当变换以达到扩充数据集的效果。
具体到图像分类任务中,可以进行如下变换:
1.同一目标在不同角度的观察结果:随机旋转、平移、缩放、裁剪..
2.对像素添加噪声扰动:椒盐的、高斯白的..
3.颜色变换
4.亮度、清晰度、对比度、锐度..
5.新的:特征提取,在特征空间变换,接着数据扩充和采样,比如SMOTE算法
6.fine-tune:拿在大规模数据集上预训练好的通用模型,针对目标任务的小数据集上进行微调(这点在NLP上除了PTMs好像并没有展现)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值