“特征工程”相关面试知识点总结-百面机器学习系列1

提示:在准备机器学习算法工程师面试的过程中,我主要参考《百面机器学习》去巩固自己的基础知识。本系列博客将以该书为主题,并以八股文的方式去概述整本书的内容,以尽量减少读者们的阅读作量,并方便读者可以随时随地的记忆背诵。
建议:我还是认为读者们可以提前买一本《百面机器学习》,从前到后完全看一遍,然后再看我的博客去记忆背诵会更好些哈。

文章目录

    • 问题1:为什么需要对数值类型的特征做归一化?
    • 问题2:怎样处理类别型特征?
    • 问题3:什么是组合特征?如何处理高维组合特征?
    • 问题4:怎样有效地找到组合特征?
    • 问题5:有哪些文本表示模型?它们各有什么优缺点?
    • 问题6:Word2Vec如何工作的?它和隐含狄利克雷模型(LDA)有什么区别和联系?
    • 问题7: 如何缓解图像分类任务中训练数据不足带来的问题?

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

1.为了消除数据特征之间的量纲影响(使得各指标处于同一数值量级),我们需要对特征进行归一化处理,使得不同指标之间具有可比性。
2.对数值类型的特征归一化可以将所有的特征都统一到一个大致相同的数值区间内,以便进行分析。
3.归一化常用的两种方法:线性函数归一化;零均值归一化(详解可看课本)。
4.在实际应用中,通过梯度下降法求解的模型通常需要归一化的(这样可以保证在每个方向梯度学习率相同的前提下,使得每个方向梯度更新速度变得一致,容易更快地通过梯度下降法找到最优解),包括线性回归、逻辑回归、支持向量机、神经网络等模型。
5.但对于决策树模型并不需要归一化处理,以C4.5为例,决策树进行节点分裂时主要依据数据集D关于特征x的信息增益比(因为归一化并不会改变样本在特征x上的信息增益,相应的信息增益比也不会因归一化改变,因此归一化并不能优化决策树模型)。
6.结构化数据类型可以看作关系型数据库的一张表,每列都有清晰的定义,包含了数值型、类别型两种基本类型;每一行数据表示一个样本信息。 非结构化数据主要包括了文本、图像、音频、视频数据,其包含的信息无法用一个简单的数值表示,也没有清晰的类别定义,并且每条数据的大小各不相同。

问题2:怎样处理类别型特征?

1.类别型特征主要指性别、血型等只在有限选项内取值的特征。类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。
2.将类别型特征进行转化的方法:序号编码;独热编码;二进制编码。
1)序号编码:通常用于处理类别间具有大小关系(如高、中、低)的数据。序号编码会按照大小关系对类别型特征赋予一个数值ID。
2)独热编码:又称为一位有效编码,将除了某类别对应的索引位置被标记为1之外,其它都是零值(这也是和二进制编码的区别)。通常用于处理类别间不具有大小关系的特征(如:血型)。注:对于类别值较多的情况使用独热编码需要注意:使用稀疏向量表示法节约空间;配合特征选择来降低维度(高维特征带来的问题:在K近邻算法中,很难有效的衡量高维空间下的两点间的距离;在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合;通常只有部分维度对分类、预测有帮助,因此可以考虑配合特征选择来降低维度)
3)二进制编码主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。二进制编码本质上是利用二进制对ID进行哈希映射,最终得到0/1特征向量,且维数少于独热编码,节省了储存空间。

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

1.为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。
2.若用户数量为m,物品数量为n,那么学习的参数的规模为m×n。在互联网的环境下,用户数量和物品数量可以达到千万量级,几乎无法学习m×n规模的参数。在这种情况下,可以将用户和物品分别用k维的低维向量表示(k<

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

1.除了利用降维的方式对高维特征进行组合。还可以利用基于决策树进行特征组合。
2.如何有效地构造决策树:可以采用梯度提升决策树的方法构建,该方法的思想是每次都在之前构建的决策树的残差上构建下一棵决策树。
3.决策树中每一条从根节点到叶结点的路径都可以看成一种特征组合方式。

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

1.文本是一种非结构化数据。常用的文本表示模型:词袋模型;主题模型;词嵌入模型
1)词袋模型是最基础的文本表示模型。就是将每篇文章看成一袋子词,并忽略每个词出现的顺序。具体来说,就是将整段文本以词为单位切分开,然后每篇文章可以表示为一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反应了这个词在原文章中的重要程度(TF-IDF用于计算权重,TF为某单词在文档中出现的频率,IDF是逆文档频率用来衡量某单词对表达语义所起的重要性)。
2)对于一个词组或句子,如果进行拆分,所表达的含义就会发生很大变化。通常可以将连续出现的n个词组成的词组(N-gram)也作为一个单独的特征放到向量表示中去,构成N-gram模型。另外,同一个词可能有多种词性变化,却具有相似的含义。在实际应用中,一般会对单词进行词干抽取处理,即将不同词性的单词统一成为同一词干的形式。
3)主题模型用于从文本库中发现有代表性的主题(得到每个主题上面词的分布特性),并能够计算出每篇文章的主题分布。
4)词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射成低维空间(通常K=50~300维)上的一个稠密向量,若一篇文章包含N个词,就需用一个N×K维的矩阵来表示这篇文档。
若仅仅把这个矩阵作为原文本的表示特征输入到机器学习模型中,通常不会得到好的分类结果。一般需要在此基础上加工出更高层的特征,来改善分类效果。深度学习模型提供了一种自动进行特征工程的方式,可以认为模型中的每个隐藏层对应不同抽象层次的特征。从这个角度来讲,深度学习模型能够提取一些高层的语义特征,这也是它能够打败浅层模型的原因。与全连接的网络结构相比,卷积神经网络和循环神经网络一方面能够抓住文本的特征,另一方面又减少了网络中的学习参数,提高了训练速度,并降低了过拟合的风险。

问题6:Word2Vec如何工作的?它和隐含狄利克雷模型(LDA)有什么区别和联系?

1.Word2Vec实际是一种浅层神经网络模型,它有两种网络结构,分别是CBOW和Skip-gram.
2.CBOW的目标是根据上下文出现的词语来预测当前词的生成频率;Skip-gram是根据当前词来预测上下文中各词的生成频率。
3.Word2Vec与LDA的区别和联系,首先,LDA是利用文档中的单词的共现关系来对单词按主题聚类,也可以理解为“文档-单词”矩阵进行分解,得到“文档-主题”和“主题-单词”两个概率分布。而Word2Vec其实是对“上下文-单词”矩阵进行学习,其中上下文由周围的几个单词组成,由此得到的词向量表示更多地融入了上下文共现特征。(这并不是主题模型和词嵌入两类方法的主要差异)
4.主题模型和词嵌入两类方法最大的不同其实在于模型本身,主题模型是一种基于概率图的生成式模型,其似然函数可以写成若干条件概率连乘的形式,其中包括需要推测的隐含变量(即主题);而词嵌入模型一般表达为神经网络的形式,似然函数定义在网络的输出之上,需要通过学习网络的权重以得到单词的稠密向量表示。

问题7: 如何缓解图像分类任务中训练数据不足带来的问题?

1.处理方法大致分为两类:一是基于模型的方法,主要是采用降低过拟合风险的措施,包括简化模型(如将非线性模型简化为线性模型)、添加约束项以缩小假设空间(如L1/L2正则项)、集成学习、Dropout正则化等:二是基于数据的方法,主要通过数据扩充,即根据一些先验知识,在保持特定信息的前提下,对原始数据进行适当变换以达到扩充数据集的效果。
2.除了常规的数据扩充(如:图片的旋转、剪切、缩放、颜色亮度变化等方式),生成式对抗网络模型以及迁移学习也是两种常用方式。

注:这些知识点是作者在备战秋招的时候,把《百面机器学习》这本书看了n遍后,为了方便自己背诵,进行了八股文形式的总结。(写作目的:主要用于各位小伙伴们的知识交流,如若侵权,则会及时删除)。
祝愿您能顺利通过每一次面试哈,干就完事了!加油!

你可能感兴趣的:(机器学习面试知识点系列)