200 道机器学习面试题 | 吊打面试官系列_BAT面试

 

 

刷题,是面试前的必备环节。本文作者总结了往年BAT机器学习面试题,干货满满,值得收藏。

 

想要入职大厂可谓是千军万马过独木桥。

 

为了通过层层考验,刷题肯定是必不可少的。本文作者根据网络在线发布的BAT机器学习面试1000题系列,整理了一份面试刷题宝典

 

1.请简要介绍下SVM。

 

SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。

 

扩展:

 

支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

 

支持向量机通俗导论(理解SVM的三层境界)

https://www.cnblogs.com/v-July-v/archive/2012/06/01/2539022.html

机器学习之深入理解SVM

http://blog.csdn.net/sinat_35512245/article/details/54984251

 

2.请简要介绍下Tensorflow的计算图。

 

@寒小阳:Tensorflow是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图,可以把计算图看做是一种有向图,Tensorflow中的每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。

 

3.请问GBDT和XGBoost的区别是什么?

 

@Xijun LI:XGBoost类似于GBDT的优化版,不论是精度还是效率上都有了提升。与GBDT相比,具体的优点有:

 

  • 损失函数是用泰勒展式二项逼近,而不是像GBDT里的就是一阶导数;

  • 对树的结构进行了正则化约束,防止模型过度复杂,降低了过拟合的可能性;

  • 节点分裂的方式不同,GBDT是用的基尼系数,XGBoost是经过优化推导后的。

 

知识点链接:集成学习的总结

https://xijunlee.github.io/2017/06/03/%E9%9B%86%E6%88%90%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/

 

4.在k-means或kNN,我们是用欧氏距离来计算最近的邻居之间的距离。为什么不用曼哈顿距离?

 

曼哈顿距离只计算水平或垂直距离,有维度的限制。另一方面,欧氏距离可用于任何空间的距离计算问题。因为,数据点可以存在于任何空间,欧氏距离是更可行的选择。例如:想象一下国际象棋棋盘,象或车所做的移动是由曼哈顿距离计算的,因为它们是在各自的水平和垂直方向做的运动。

 

5.百度2015校招机器学习笔试题。

 

知识点链接:百度2015校招机器学习笔试题

http://www.itmian4.com/thread-7042-1-1.html

 

6.简单说说特征工程。

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_02

 

7.关于LR。

 

@rickjin:把LR从头到脚都给讲一遍。建模,现场数学推导,每种解法的原理,正则化,LR和maxent模型啥关系,LR为啥比线性回归好。有不少会背答案的人,问逻辑细节就糊涂了。原理都会? 那就问工程,并行化怎么做,有几种并行化方式,读过哪些开源的实现。还会,那就准备收了吧,顺便逼问LR模型发展历史。

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_03

 

知识点链接:机器学习之Logistic回归(逻辑蒂斯回归)

http://blog.csdn.net/sinat_35512245/article/details/54881672

 

8.overfitting怎么解决?

 

dropout、regularization、batch normalizatin

 

9.LR和SVM的联系与区别?

 

@朝阳在望,联系:

1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题) 

2、两个方法都可以增加不同的正则化项,如L1、L2等等。所以在很多实验中,两种算法的结果是很接近的。

区别:

1、LR是参数模型,SVM是非参数模型。

2、从目标函数来看,区别在于逻辑回归采用的是Logistical Loss,SVM采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。

3、SVM的处理方法是只考虑Support Vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。

4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。

5、Logic 能做的 SVM能做,但可能在准确率上有问题,SVM能做的Logic有的做不了。

 

答案来源:机器学习常见面试问题(一)

http://blog.csdn.net/timcompp/article/details/62237986

 

10.LR与线性回归的区别与联系?

 

@nishizhen 

个人感觉逻辑回归和线性回归首先都是广义的线性回归, 

其次经典线性模型的优化目标函数是最小二乘,而逻辑回归则是似然函数, 

另外线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在[0,1]。逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,因而对于这类问题来说,逻辑回归的鲁棒性比线性回归的要好。

@乖乖癞皮狗:逻辑回归的模型本质上是一个线性回归模型,逻辑回归都是以线性回归为理论支持的。但线性回归模型无法做到sigmoid的非线性形式,sigmoid可以轻松处理0/1分类问题。

 

11.为什么XGBoost要用泰勒展开,优势在哪里?

 

@AntZ:XGBoost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准. 使用泰勒展开取得二阶倒数形式, 可以在不选定损失函数具体形式的情况下用于算法优化分析.本质上也就把损失函数的选取和模型算法优化/参数选择分开了. 这种去耦合增加了XGBoost的适用性。

 

12.XGBoost如何寻找最优特征?是又放回还是无放回的呢?

 

@AntZ:XGBoost在训练的过程中给出各个特征的评分,从而表明每个特征对模型训练的重要性.。XGBoost利用梯度优化模型算法, 样本是不放回的(想象一个样本连续重复抽出,梯度来回踏步会不会高兴)。但XGBoost支持子采样, 也就是每轮计算可以不使用全部样本。

 

13.谈谈判别式模型和生成式模型?

 

判别方法:由数据直接学习决策函数 Y = f(X),或者由条件分布概率 P(Y|X)作为预测模型,即判别模型。

 

生成方法:由数据学习联合概率密度分布函数 P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型。

 

由生成模型可以得到判别模型,但由判别模型得不到生成模型。

 

常见的判别模型有:K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场

 

常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机

 

14.L1和L2的区别。

 

L1范数(L1 norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。

比如 向量A=[1,-1,3], 那么A的L1范数为 |1|+|-1|+|3|. 

简单总结一下就是:

L1范数: 为x向量各个元素绝对值之和。

L2范数: 为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或Frobenius范数

 

Lp范数: 为x向量各个元素绝对值p次方和的1/p次方. 

在支持向量机学习过程中,L1范数实际是一种对于成本函数求解最优的过程,因此,L1范数正则化通过向成本函数中添加L1范数,使得学习得到的结果满足稀疏化,从而方便人类提取特征。

L1范数可以使权值稀疏,方便特征提取。

L2范数可以防止过拟合,提升模型的泛化能力。

 

15.L1和L2正则先验分别服从什么分布 ?

 

@齐同学:面试中遇到的,L1和L2正则先验分别服从什么分布,L1是拉普拉斯分布,L2是高斯分布。

 

16.CNN最成功的应用是在CV,那为什么NLP和Speech的很多问题也可以用CNN解出来?为什么AlphaGo里也用了CNN?这几个不相关的问题的相似性在哪里?CNN通过什么手段抓住了这个共性?

 

@许韩

 

知识点链接(答案解析):深度学习岗位面试问题整理笔记

https://zhuanlan.zhihu.com/p/25005808

 

17.说一下Adaboost,权值更新公式。当弱分类器是Gm时,每个样本的的权重是w1,w2…,请写出最终的决策公式。

 

答案解析

http://www.360doc.com/content/14/1109/12/20290918_423780183.shtml

 

18.LSTM结构推导,为什么比RNN好?

 

推导forget gate,input gate,cell state, hidden information等的变化;因为LSTM有进有出且当前的cell informaton是通过input gate控制之后叠加的,RNN是叠乘,因此LSTM可以防止梯度消失或者爆炸。

 

19.经常在网上搜索东西的朋友知道,当你不小心输入一个不存在的单词时,搜索引擎会提示你是不是要输入某一个正确的单词,比如当你在Google中输入“Julw”时,系统会猜测你的意图:是不是要搜索“July”,如下图所示:

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_04

 

这叫做拼写检查。根据谷歌一员工写的文章How to Write a Spelling Corrector显示,Google的拼写检查基于贝叶斯方法。请说说的你的理解,具体Google是怎么利用贝叶斯方法,实现”拼写检查”的功能。

 

用户输入一个单词时,可能拼写正确,也可能拼写错误。如果把拼写正确的情况记做c(代表correct),拼写错误的情况记做w(代表wrong),那么”拼写检查”要做的事情就是:在发生w的情况下,试图推断出c。换言之:已知w,然后在若干个备选方案中,找出可能性最大的那个c,也就是求P(c|w)P(c|w)的最大值。而根据贝叶斯定理,有:

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_05

 

由于对于所有备选的c来说,对应的都是同一个w,所以它们的P(w)是相同的,因此我们只要最大化P(w|c)P(c)即可。其中:

 

P(c)表示某个正确的词的出现”概率”,它可以用”频率”代替。如果我们有一个足够大的文本库,那么这个文本库中每个单词的出现频率,就相当于它的发生概率。某个词的出现频率越高,P(c)就越大。比如在你输入一个错误的词“Julw”时,系统更倾向于去猜测你可能想输入的词是“July”,而不是“Jult”,因为“July”更常见。

 

P(w|c)表示在试图拼写c的情况下,出现拼写错误w的概率。为了简化问题,假定两个单词在字形上越接近,就有越可能拼错,P(w|c)就越大。举例来说,相差一个字母的拼法,就比相差两个字母的拼法,发生概率更高。你想拼写单词July,那么错误拼成Julw(相差一个字母)的可能性,就比拼成Jullw高(相差两个字母)。值得一提的是,一般把这种问题称为“编辑距离”,参见程序员编程艺术第二十八~二十九章:最大连续乘积子串、字符串编辑距离。

http://blog.csdn.net/v_july_v/article/details/8701148#t4

 

所以,我们比较所有拼写相近的词在文本库中的出现频率,再从中挑出出现频率最高的一个,即是用户最想输入的那个词。具体的计算过程及此方法的缺陷请参见How to Write a Spelling Corrector。

http://norvig.com/spell-correct.html

 

20.为什么朴素贝叶斯如此“朴素”?

 

因为它假定所有的特征在数据集中的作用是同样重要和独立的。正如我们所知,这个假设在现实世界中是很不真实的,因此,说朴素贝叶斯真的很“朴素”。

 

21.机器学习中,为何要经常对数据做归一化?

 

@zhanlijun

 

本题解析来源:为什么一些机器学习模型需要对数据进行归一化?

http://www.cnblogs.com/LBSer/p/4440590.html

 

22.谈谈深度学习中的归一化问题。

 

详情参见此视频:深度学习中的归一化

http://www.julyedu.com/video/play/69/686

 

23.请简要说说一个完整机器学习项目的流程。

 

1 抽象成数学问题 

明确问题是进行机器学习的第一步。机器学习的训练过程通常都是一件非常耗时的事情,胡乱尝试时间成本是非常高的。

这里的抽象成数学问题,指的我们明确我们可以获得什么样的数据,目标是一个分类还是回归或者是聚类的问题,如果都不是的话,如果划归为其中的某类问题。

2 获取数据 

数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限。

数据要有代表性,否则必然会过拟合。

而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距。

而且还要对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了。

3 特征预处理与特征选择 

良好的数据要能够提取出良好的特征才能真正发挥效力。

特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤。

筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。

4 训练模型与调优 

直到这一步才用到我们上面说的算法进行训练。现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。

5 模型诊断 

如何确定模型调优的方向与思路呢?这就需要对模型进行诊断的技术。

过拟合、欠拟合 判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。

误差分析 也是机器学习至关重要的步骤。通过观察误差样本,全面分析误差产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题……

诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。

6 模型融合 

一般来说,模型融合后都能使得效果有一定提升。而且效果很好。

工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。

7 上线运行 

这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。

这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程。这里的部分只是一个指导性的说明,只有大家自己多实践,多积累项目经验,才会有自己更深刻的认识。

故,基于此,七月在线每一期ML算法班都特此增加特征工程、模型调优等相关课。比如,这里有个公开课视频《特征处理与特征选择》。

 

24.new 和 malloc的区别?

 

知识点链接:new 和 malloc的区别

https://www.cnblogs.com/fly1988happy/archive/2012/04/26/2470542.html

 

25.hash 冲突及解决办法?

 

@Sommer_Xia

 

关键字值不同的元素可能会映象到哈希表的同一地址上就会发生哈希冲突。解决办法:

1)开放定址法:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地查找,直到找到给定 的关键字,或者碰到一个开放的地址(即该地址单元为空)为止(若要插入,在探查到开放的地址,则可将待插入的新结点存人该地址单元)。查找时探查到开放的 地址则表明表中无待查的关键字,即查找失败。

2) 再哈希法:同时构造多个不同的哈希函数。

3)链地址法:将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。

4)建立公共溢出区:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。

 

26.如何解决梯度消失和梯度膨胀?

 

(1)梯度消失:

根据链式法则,如果每一层神经元对上一层的输出的偏导乘上权重结果都小于1的话,那么即使这个结果是0.99,在经过足够多层传播之后,误差对输入层的偏导会趋于0。

可以采用ReLU激活函数有效的解决梯度消失的情况。

(2)梯度膨胀:

根据链式法则,如果每一层神经元对上一层的输出的偏导乘上权重结果都大于1的话,在经过足够多层传播之后,误差对输入层的偏导会趋于无穷大。

 

可以通过激活函数来解决。

 

27.下列哪个不属于CRF模型对于HMM和MEMM模型的优势( )

 

A. 特征灵活 

B. 速度快 

C. 可容纳较多上下文信息 

D. 全局最优 

解答:首先,CRF,HMM(隐马模型),MEMM(最大熵隐马模型)都常用来做序列标注的建模。

隐马模型一个最大的缺点就是由于其输出独立性假设,导致其不能考虑上下文的特征,限制了特征的选择。

最大熵隐马模型则解决了隐马的问题,可以任意选择特征,但由于其在每一节点都要进行归一化,所以只能找到局部的最优值,同时也带来了标记偏见的问题,即凡是训练语料中未出现的情况全都忽略掉。

条件随机场则很好的解决了这一问题,他并不在每一个节点进行归一化,而是所有特征进行全局归一化,因此可以求得全局的最优值。

 

答案为B。

 

28.简单说下有监督学习和无监督学习的区别?

 

有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。(LR,SVM,BP,RF,GBDT)

无监督学习:对未标记的样本进行训练学习,比发现这些样本中的结构知识。(KMeans,DL)

 

29.了解正则化么?

 

正则化是针对过拟合而提出的,以为在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。

奥卡姆剃刀原理,能够很好的解释已知数据并且十分简单才是最好的模型。

 

30.协方差和相关性有什么区别?

 

相关性是协方差的标准化格式。协方差本身很难做比较。例如:如果我们计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以我们会得到不能做比较的不同的协方差。为了解决这个问题,我们计算相关性来得到一个介于-1和1之间的值,就可以忽略它们各自不同的度量。

 

31.线性分类器与非线性分类器的区别以及优劣。

 

如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是。

常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归。

常见的非线性分类器:决策树、RF、GBDT、多层感知机。

SVM两种都有(看线性核还是高斯核)。

线性分类器速度快、编程方便,但是可能拟合效果不会很好。

非线性分类器编程复杂,但是效果拟合能力强。

 

32.数据的逻辑存储结构(如数组,队列,树等)对于软件开发具有十分重要的影响,试对你所了解的各种存储结构从运行速度、存储效率和适用场合等方面进行简要地分析。

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_06

 

33.什么是分布式数据库?

 

分布式数据库系统是在集中式数据库系统成熟技术的基础上发展起来的,但不是简单地把集中式数据库分散地实现,它具有自己的性质和特征。集中式数据库系统的许多概念和技术,如数据独立性、数据共享和减少冗余度、并发控制、完整性、安全性和恢复等在分布式数据库系统中都有了不同的、更加丰富的内容。

 

34.简单说说贝叶斯定理。

 

在引出贝叶斯定理之前,先学习几个定义:

条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。

比如,在同一个样本空间Ω中的事件或者子集A与B,如果随机从Ω中选出的一个元素属于B,那么这个随机选择的元素还属于A的概率就定义为在B的前提下A的条件概率,所以:P(A|B) = |A∩B|/|B|,接着分子、分母都除以|Ω|得到:

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_07

 

联合概率表示两个事件共同发生的概率。A与B的联合概率表示为P(A∩B)或者P(A,B)。

 

边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中,把最终结果中那些不需要的事件通过合并成它们的全概率,而消去它们(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率),这称为边缘化(marginalization),比如A的边缘概率表示为P(A),B的边缘概率表示为P(B)。

 

接着,考虑一个问题:P(A|B)是在B发生的情况下A发生的可能性。

 

1)首先,事件B发生之前,我们对事件A的发生有一个基本的概率判断,称为A的先验概率,用P(A)表示;

2)其次,事件B发生之后,我们对事件A的发生概率重新评估,称为A的后验概率,用P(A|B)表示;

3)类似的,事件A发生之前,我们对事件B的发生有一个基本的概率判断,称为B的先验概率,用P(B)表示;

4)同样,事件A发生之后,我们对事件B的发生概率重新评估,称为B的后验概率,用P(B|A)表示。

 

贝叶斯定理的公式表达式:

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_08

 

35.#include <filename.h> 和#include“filename.h”有什么区别?

 

知识点链接:#include<filename.h> 和 #include”filename.h”有什么区别

http://blog.csdn.net/u010339647/article/details/77825788

 

36.某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) 

A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理

 

37.将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) 

A. 频繁模式挖掘 B. 分类和预测 C. 数据预处理 D. 数据流挖掘

 

38.下面哪种不属于数据预处理的方法? (D) 

A变量代换 B离散化 C 聚集 D 估计遗漏值

 

39.什么是KDD? (A) 

A. 数据挖掘与知识发现 B. 领域知识发现C. 文档知识发现 D. 动态知识发现

 

40.当不知道数据所带标签时,可以使用哪种技术促使带同类标签的数据与带其他标签的数据相分离?(B) 

A. 分类 B. 聚类 C. 关联分析 D. 隐马尔可夫链

 

41.建立一个模型,通过这个模型根据已知的变量值来预测其他某个变量值属于数据挖掘的哪一类任务?(C) 

A. 根据内容检索 B. 建模描述 

C. 预测建模 D. 寻找模式和规则

 

42.以下哪种方法不属于特征选择的标准方法?(D) 

A嵌入 B 过滤 C 包装 D 抽样

 

43.请用python编写函数find_string,从文本中搜索并打印内容,要求支持通配符星号和问号。

 

 

1find_string('hello\nworld\n','wor')
2['wor']
3find_string('hello\nworld\n','l*d')
4['ld']
5find_string('hello\nworld\n','o.')
6['or']
7答案
8def find_string(str,pat):
9import re
10return re.findall(pat,str,re.I)
11--------------------- 
12作者:qinjianhuang
13来源:CSDN
14原文:https://huangqinjian.blog.csdn.net/article/details/78796328 
15版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

44.说下红黑树的五个性质。

 

教你初步了解红黑树

http://blog.csdn.net/v_july_v/article/details/6105630

 

45.简单说下sigmoid激活函数。

 

常用的非线性激活函数有sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层。这里先简要介绍下最基础的sigmoid函数(btw,在本博客中SVM那篇文章开头有提过)。

 

Sigmoid的函数表达式如下:

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_09

 

也就是说,Sigmoid函数的功能是相当于把一个实数压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0。

 

压缩至0到1有何用处呢?用处是这样一来便可以把激活函数看作一种“分类的概率”,比如激活函数的输出为0.9的话便可以解释为90%的概率为正样本。

 

举个例子,如下图(图引自Stanford机器学习公开课):

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_10

 

46.什么是卷积?

 

对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

非严格意义上来讲,下图中红框框起来的部分便可以理解为一个滤波器,即带着一组固定权重的神经元。多个滤波器叠加便成了卷积层。

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_11

 

OK,举个具体的例子。比如下图中,图中左边部分是原始输入数据,图中中间部分是滤波器filter,图中右边是输出的新的二维数据。

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_12

 

分解下上图

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_13

 

47.什么是CNN的池化pool层?

 

池化,简言之,即取区域平均或最大,如下图所示(图引自cs231n):

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_14

 

上图所展示的是取区域最大,即上图左边部分中 左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4。很简单不是?

 

48.简述下什么是生成对抗网络。

 

GAN之所以是对抗的,是因为GAN的内部是竞争关系,一方叫generator,它的主要工作是生成图片,并且尽量使得其看上去是来自于训练样本的。另一方是discriminator,其目标是判断输入图片是否属于真实训练样本。

 

更直白的讲,将generator想象成假币制造商,而discriminator是警察。generator目的是尽可能把假币造的跟真的一样,从而能够骗过discriminator,即生成样本并使它看上去好像来自于真实训练样本一样。

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_15

 

如下图中的左右两个场景:

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_16

 

更多请参见此课程:生成对抗网络

https://www.julyedu.com/course/getDetail/83

 

49.学梵高作画的原理是啥?

 

这里有篇如何做梵高风格画的实验教程 教你从头到尾利用DL学梵高作画:GTX 1070 cuda 8.0 tensorflow gpu版,至于其原理请看这个视频:NeuralStyle艺术化图片(学梵高作画背后的原理)。

http://blog.csdn.net/v_july_v/article/details/52658965

http://www.julyedu.com/video/play/42/523

 

50.现在有 a 到 z 26 个元素, 编写程序打印 a 到 z 中任取 3 个元素的组合(比如 打印 a b c ,d y z等)。

 

一道百度机器学习工程师职位的面试题

http://blog.csdn.net/lvonve/article/details/53320680

 

51.哪些机器学习算法不需要做归一化处理?

 

概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、GBDT、XGBoost、SVM、LR、KNN、KMeans之类的最优化问题就需要归一化。

 

52.说说梯度下降法。

 

@LeftNotEasy

 

机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

http://www.cnblogs.com/LeftNotEasy/archive/2010/12/05/mathmatic_in_machine_learning_1_regression_and_gradient_descent.html

 

53.梯度下降法找到的一定是下降最快的方向么?

 

梯度下降法并不是下降最快的方向,它只是目标函数在当前的点的切平面(当然高维问题不能叫平面)上下降最快的方向。在Practical Implementation中,牛顿方向(考虑海森矩阵)才一般被认为是下降最快的方向,可以达到Superlinear的收敛速度。梯度下降类的算法的收敛速度一般是Linear甚至Sublinear的(在某些带复杂约束的问题)。

 

知识点链接:一文清晰讲解机器学习中梯度下降算法(包括其变式算法)

http://blog.csdn.net/wemedia/details.html?id=45460

 

54.牛顿法和梯度下降法有什么不同?

 

@wtq1993

 

知识点链接:机器学习中常见的最优化算法

http://blog.csdn.net/wtq1993/article/details/51607040

 

55.什么是拟牛顿法(Quasi-Newton Methods)?

 

@wtq1993

 

机器学习中常见的最优化算法

 

56.请说说随机梯度下降法的问题和挑战?

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_17

200 道机器学习面试题 | 吊打面试官系列_BAT面试_18

200 道机器学习面试题 | 吊打面试官系列_BAT面试_19

 

57.说说共轭梯度法?

 

@wtq1993

 

机器学习中常见的最优化算法

http://blog.csdn.net/wtq1993/article/details/51607040

 

58.对所有优化问题来说, 有没有可能找到比現在已知算法更好的算法?

 

答案链接

https://www.zhihu.com/question/41233373/answer/145404190

 

59、什么最小二乘法?

 

我们口头中经常说:一般来说,平均来说。如平均来说,不吸烟的健康优于吸烟者,之所以要加“平均”二字,是因为凡事皆有例外,总存在某个特别的人他吸烟但由于经常锻炼所以他的健康状况可能会优于他身边不吸烟的朋友。而最小二乘法的一个最简单的例子便是算术平均。

 

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。用函数表示为:

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_20

 

由于算术平均是一个历经考验的方法,而以上的推理说明,算术平均是最小二乘的一个特例,所以从另一个角度说明了最小二乘方法的优良性,使我们对最小二乘法更加有信心。

 

最小二乘法发表之后很快得到了大家的认可接受,并迅速的在数据分析实践中被广泛使用。不过历史上又有人把最小二乘法的发明归功于高斯,这又是怎么一回事呢。高斯在1809年也发表了最小二乘法,并且声称自己已经使用这个方法多年。高斯发明了小行星定位的数学方法,并在数据分析中使用最小二乘方法进行计算,准确的预测了谷神星的位置。

 

对了,最小二乘法跟SVM有什么联系呢?请参见支持向量机通俗导论(理解SVM的三层境界)。

http://blog.csdn.net/v_july_v/article/details/7624837

 

60、看你T恤上印着:人生苦短,我用Python,你可否说说Python到底是什么样的语言?你可以比较其他技术或者语言来回答你的问题。

 

15个重要Python面试题 测测你适不适合做Python?

http://nooverfit.com/wp/15%E4%B8%AA%E9%87%8D%E8%A6%81python%E9%9D%A2%E8%AF%95%E9%A2%98-%E6%B5%8B%E6%B5%8B%E4%BD%A0%E9%80%82%E4%B8%8D%E9%80%82%E5%90%88%E5%81%9Apython%EF%BC%9F/

 

61.Python是如何进行内存管理的?

 

2017 Python最新面试题及答案16道题

http://www.cnblogs.com/tom-gao/p/6645859.html

 

62.请写出一段Python代码实现删除一个list里面的重复元素。

 

1、使用set函数,set(list);

2、使用字典函数:

 

 

1a=[1,2,4,2,4,5,6,5,7,8,9,0]
2b={}
3b=b.fromkeys(a)
4c=list(b.keys())
5c

 

 

63.编程用sort进行排序,然后从最后一个元素开始判断。

 

 

1a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
2
3a.sort()
4last=a[-1]
5for i inrange(len(a)-2,-1,-1):
6if last==a[i]:
7del a[i]
8else:last=a[i]
9print(a)

 

 

64.Python里面如何生成随机数?

 

@Tom_junsong

 

random模块

 

随机整数:random.randint(a,b):返回随机整数x,a<=x<=b

random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。

随机实数:random.random( ):返回0到1之间的浮点数

random.uniform(a,b):返回指定范围内的浮点数。

 

65.说说常见的损失函数。

 

对于给定的输入X,由f(X)给出相应的输出Y,这个输出的预测值f(X)与真实值Y可能一致也可能不一致(要知道,有时损失或误差是不可避免的),用一个损失函数来度量预测错误的程度。损失函数记为L(Y, f(X))。

常用的损失函数有以下几种(基本引用自《统计学习方法》):

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_21 

 

66.简单介绍下Logistics回归。

 

Logistic回归目的是从特征学习出一个0/1分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic函数(或称作sigmoid函数)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。

 

假设函数:

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_22

 

其中x是n维特征向量,函数g就是Logistic函数。而:g(z)=11+e−zg(z)=11+e−z的图像是:

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_23

 

可以看到,将无穷映射到了(0,1)。而假设函数就是特征属于y=1的概率。

 

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_24

200 道机器学习面试题 | 吊打面试官系列_机器学习_25

 

67.看你是搞视觉的,熟悉哪些CV框架,顺带聊聊CV最近五年的发展史如何?

 

答案解析
https://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2651986617&idx=1&sn=fddebd0f2968d66b7f424d6a435c84af&scene=0#wechat_redirect

 

68.深度学习在视觉领域有何前沿进展?

 

@元峰

 

本题解析来源:深度学习在计算机视觉领域的前沿进展

https://zhuanlan.zhihu.com/p/24699780

 

69.HashMap与HashTable区别?

 

HashMap与Hashtable的区别

http://oznyang.iteye.com/blog/30690

 

70.在分类问题中,我们经常会遇到正负样本数据量不等的情况,比如正样本为10w条数据,负样本只有1w条数据,以下最合适的处理方法是( )

 

A、将负样本重复10次,生成10w样本量,打乱顺序参与分类 

B、直接进行分类,可以最大限度利用数据 

C、从10w正样本中随机抽取1w参与分类 

D、将负样本每个权重设置为10,正样本权重为1,参与训练过程

 

@管博士:准确的说,其实选项中的这些方法各有优缺点,需要具体问题具体分析,有篇文章对各种方法的优缺点进行了分析,讲的不错 感兴趣的同学可以参考一下:

 

How to handle Imbalanced Classification Problems in machine learning?

https://www.analyticsvidhya.com/blog/2017/03/imbalanced-classification-problem/

 

71.深度学习是当前很热门的机器学习算法,在深度学习中,涉及到大量的矩阵相乘,现在需要计算三个稠密矩阵A,B,C的乘积ABC,假90设三个矩阵的尺寸分别为m∗n,n∗p,p∗q,且m <n <p <q,以下计算顺序效率最高的是(A)

 

A.(AB)C 

B.AC(B) 

C.A(BC) 

D.所以效率都相同

 

正确答案:A

@BlackEyes_SGC:m*n*p <m*n*q,m*p*q < n*p*q, 所以 (AB)C 最小

 

72.Nave Bayes是一种特殊的Bayes分类器,特征变量是X,类别标签是C,它的一个假定是:( C )

 

A.各类别的先验概率P(C)是相等的 

B.以0为均值,sqr(2)/2为标准差的正态分布 

C.特征变量X的各个维度是类别条件独立随机变量 

D.P(X|C)是高斯分布

 

正确答案:C

@BlackEyes_SGC:朴素贝叶斯的条件就是每个变量相互独立。

 

73.关于支持向量机SVM,下列说法错误的是(C)

 

A.L2正则项,作用是最大化分类间隔,使得分类器拥有更强的泛化能力 

B.Hinge 损失函数,作用是最小化经验分类错误 

C.分类间隔为1||w||1||w||,||w||代表向量的模 

D.当参数C越小时,分类间隔越大,分类错误越多,趋于欠学习

 

正确答案:C

@BlackEyes_SGC:

A正确。考虑加入正则化项的原因:想象一个完美的数据集,y>1是正类,y<-1是负类,决策面y=0,加入一个y=-30的正类噪声样本,那么决策面将会变“歪”很多,分类间隔变小,泛化能力减小。加入正则项之后,对噪声样本的容错能力增强,前面提到的例子里面,决策面就会没那么“歪”了,使得分类间隔变大,提高了泛化能力。

B正确。

C错误。间隔应该是2||w||2||w||才对,后半句应该没错,向量的模通常指的就是其二范数。

D正确。考虑软间隔的时候,C对优化问题的影响就在于把a的范围从[0,+inf]限制到了[0,C]。C越小,那么a就会越小,目标函数拉格朗日函数导数为0可以求出w=∑iai∗yi∗xiw=∑iai∗yi∗xi,a变小使得w变小,因此间隔2||w||2||w||变大

 

74.在HMM中,如果已知观察序列和产生观察序列的状态序列,那么可用以下哪种方法直接进行参数估计( D )

 

A.EM算法 

B.维特比算法 

C.前向后向算法 

D.极大似然估计

 

正确答案:D

@BlackEyes_SGC:

EM算法:只有观测序列,无状态序列时来学习模型参数,即Baum-Welch算法

维特比算法:用动态规划解决HMM的预测问题,不是参数估计

前向后向算法:用来算概率

极大似然估计:即观测序列和相应的状态序列都存在时的监督学习算法,用来估计参数

注意的是在给定观测序列和对应的状态序列估计模型参数,可以利用极大似然发估计。如果给定观测序列,没有对应的状态序列,才用EM,将状态序列看不不可测的隐数据。

 

75.假定某同学使用Naive Bayesian(NB)分类模型时,不小心将训练数据的两个维度搞重复了,那么关于NB的说法中正确的是:(BD)

 

A.这个被重复的特征在模型中的决定作用会被加强 

B.模型效果相比无重复特征的情况下精确度会降低 

C.如果所有特征都被重复一遍,得到的模型预测结果相对于不重复的情况下的模型预测结果一样。

D.当两列特征高度相关时,无法用两列特征相同时所得到的结论来分析问题 

E.NB可以用来做最小二乘回归 

F.以上说法都不正确

 

正确答案:BD

@BlackEyes_SGC:NB的核心在于它假设向量的所有分量之间是独立的。在贝叶斯理论系统中,都有一个重要的条件独立性假设:假设所有特征之间相互独立,这样才能将联合概率拆分。

 

76.以下哪些方法不可以直接来对文本分类?(A)

 

A、Kmeans 

B、决策树 

C、支持向量机 

D、KNN

 

正确答案: A分类不同于聚类。

@BlackEyes_SGC:A:Kmeans是聚类方法,典型的无监督学习方法。分类是监督学习方法,BCD都是常见的分类方法。

 

77.已知一组数据的协方差矩阵P,下面关于主分量说法错误的是( C )

 

A、主分量分析的最佳准则是对一组数据进行按一组正交基分解, 在只取相同数量分量的条件下,以均方误差计算截尾误差最小 

B、在经主分量分解后,协方差矩阵成为对角矩阵 

C、主分量分析就是K-L变换 

D、主分量是通过求协方差矩阵的特征值得到

 

正确答案: C 

@BlackEyes_SGC:K-L变换与PCA变换是不同的概念,PCA的变换矩阵是协方差矩阵,K-L变换的变换矩阵可以有很多种(二阶矩阵、协方差矩阵、总类内离散度矩阵等等)。当K-L变换矩阵为协方差矩阵时,等同于PCA。

 

78.Kmeans的复杂度?

 

时间复杂度:O(tKmn),其中,t为迭代次数,K为簇的数目,m为记录数,n为维数空间复杂度:O((m+K)n),其中,K为簇的数目,m为记录数,n为维数。

 

具体参考:机器学习之深入理解K-means、与KNN算法区别及其代码实现

http://blog.csdn.net/sinat_35512245/article/details/55051306

 

79.关于Logit 回归和SVM 不正确的是(A)

 

A. Logit回归本质上是一种根据样本对权值进行极大似然估计的方法,而后验概率正比于先验概率和似然函数的乘积。logit仅仅是最大化似然函数,并没有最大化后验概率,更谈不上最小化后验概率。A错误

B. Logit回归的输出就是样本属于正类别的几率,可以计算出概率,正确 

C. SVM的目标是找到使得训练数据尽可能分开且分类间隔最大的超平面,应该属于结构风险最小化。

D. SVM可以通过正则化系数控制模型的复杂度,避免过拟合。

 

@BlackEyes_SGC:Logit回归目标函数是最小化后验概率,Logit回归可以用于预测事件发生概率的大小,SVM目标是结构风险最小化,SVM可以有效避免模型过拟合。

 

80.输入图片大小为200×200,依次经过一层卷积(kernel size 5×5,padding 1,stride 2),pooling(kernel size 3×3,padding 0,stride 1),又一层卷积(kernel size 3×3,padding 1,stride 1)之后,输出特征图大小为:()

 

正确答案:97

 

@BlackEyes_SGC:计算尺寸不被整除只在GoogLeNet中遇到过。卷积向下取整,池化向上取整。

 

本题 (200-5+2*1)/2+1 为99.5,取99 

(99-3)/1+1 为97 

(97-3+2*1)/1+1 为97

 

研究过网络的话看到stride为1的时候,当kernel为 3 padding为1或者kernel为5 padding为2 一看就是卷积前后尺寸不变。计算GoogLeNet全过程的尺寸也一样。

 

81.影响聚类算法结果的主要因素有(BCD ) 

A.已知类别的样本质量;

B.分类准则;

C.特征选取;

D.模式相似性测度

 

82.模式识别中,马式距离较之于欧式距离的优点是(CD) 

A. 平移不变性;

B. 旋转不变性;

C. 尺度不变性;

D. 考虑了模式的分布

 

83.影响基本K-均值算法的主要因素有(ABD) 

A. 样本输入顺序;

B. 模式相似性测度;

C. 聚类准则;

D. 初始类中心的选取

 

84.在统计模式分类问题中,当先验概率未知时,可以使用(BD) 

A. 最小损失准则;

B. 最小最大损失准则;

C. 最小误判概率准则;

D. N-P判决

 

85.如果以特征向量的相关系数作为模式相似性测度,则影响聚类算法结果的主要因素有(BC) 

A. 已知类别样本质量;

B. 分类准则;

C. 特征选取;

D. 量纲

 

86.欧式距离具有(AB );马式距离具有(ABCD )。

A. 平移不变性;

B. 旋转不变性;

C. 尺度缩放不变性;

D. 不受量纲影响的特性

 

87.你有哪些Deep Learning(RNN,CNN)调参的经验?

 

答案解析,来自知乎

https://www.zhihu.com/question/41631631

 

88.简单说说RNN的原理。

 

我们升学到高三准备高考时,此时的知识是由高二及高二之前所学的知识加上高三所学的知识合成得来,即我们的知识是由前序铺垫,是有记忆的,好比当电影字幕上出现:“我是”时,你会很自然的联想到:“我是中国人”。

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_26

 

89.什么是RNN?

 

@一只鸟的天空,本题解析来源:

 

循环神经网络(RNN, Recurrent Neural Networks)介绍

http://blog.csdn.net/heyongluoyao8/article/details/48636251

 

90.RNN是怎么从单层网络一步一步构造的的?

 

@何之源,本题解析来源:

 

完全图解RNN、RNN变体、Seq2Seq、Attention机制

https://zhuanlan.zhihu.com/p/28054589

 

101.深度学习(CNN RNN Attention)解决大规模文本分类问题。

 

用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

https://zhuanlan.zhihu.com/p/25928551

 

102.如何解决RNN梯度爆炸和弥散的问题的?

 

深度学习与自然语言处理(7)_斯坦福cs224d 语言模型,RNN,LSTM与GRU

http://blog.csdn.net/han_xiaoyang/article/details/51932536

 

103.如何提高深度学习的性能?

 

机器学习系列(10)_如何提高深度学习(和机器学习)的性能

http://blog.csdn.net/han_xiaoyang/article/details/52654879

 

104.RNN、LSTM、GRU区别?

 

@我愛大泡泡,本题解析来源:

 

面试笔试整理3:深度学习机器学习面试问题准备(必会)

http://blog.csdn.net/woaidapaopao/article/details/77806273

 

105.当机器学习性能遭遇瓶颈时,你会如何优化的?

 

可以从这4个方面进行尝试:基于数据、借助算法、用算法调参、借助模型融合。当然能谈多细多深入就看你的经验心得了。

 

这里有一份参考清单:机器学习系列(20)_机器学习性能改善备忘单

http://blog.csdn.net/han_xiaoyang/article/details/53453145

 

106.做过什么样的机器学习项目?比如如何从零构建一个推荐系统?

 

推荐系统的公开课http://www.julyedu.com/video/play/18/148,另,再推荐一个课程:机器学习项目班 [10次纯项目讲解,100%纯实战](https://www.julyedu.com/course/getDetail/48)

 

107.什么样的资料集不适合用深度学习?

 

@抽象猴,来源:

 

知乎解答

https://www.zhihu.com/question/41233373

 

108.广义线性模型是怎被应用在深度学习中?

 

@许韩,来源:

 

知乎解答

https://huangqinjian.blog.csdn.net/article/details/%E5%A6%82%E6%9E%9C%E4%BD%A0%E6%98%AF%E9%9D%A2%E8%AF%95%E5%AE%98%EF%BC%8C%E4%BD%A0%E6%80%8E%E4%B9%88%E5%8E%BB%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E9%9D%A2%E8%AF%95%E8%80%85%E7%9A%84%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%B0%B4%E5%B9%B3%EF%BC%9F%20-%20%E8%AE%B8%E9%9F%A9%E7%9A%84%E5%9B%9E%E7%AD%94%20-%20%E7%9F%A5%E4%B9%8E%20https://www.zhihu.com/question/41233373/answer/145404190

 

109.准备机器学习面试应该了解哪些理论知识?

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_27

 

知乎解答

https://www.zhihu.com/question/62482926

 

110.标准化与归一化的区别?

 

简单来说,标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。规则为L2的归一化公式如下:

 

特征向量的缺失值处理:

 

1.缺失值较多.直接将该特征舍弃掉,否则可能反倒会带入较大的noise,对结果造成不良影响。

2.缺失值较少,其余的特征缺失值都在10%以内,我们可以采取很多的方式来处理:

 

1) 把NaN直接作为一个特征,假设用0表示;

2) 用均值填充;

3) 用随机森林等算法预测填充

 

111.随机森林如何处理缺失值。

 

方法一(na.roughfix)简单粗暴,对于训练集,同一个class下的数据,如果是分类变量缺失,用众数补上,如果是连续型变量缺失,用中位数补。

方法二(rfImpute)这个方法计算量大,至于比方法一好坏?不好判断。先用na.roughfix补上缺失值,然后构建森林并计算proximity matrix,再回头看缺失值,如果是分类变量,则用没有阵进行加权平均的方法补缺失值。然后迭代4-6次,这个补缺失值的思想和KNN有些类似1缺失的观测实例的proximity中的权重进行投票。如果是连续型变量,则用proximity矩2。

 

112.随机森林如何评估特征重要性。

 

衡量变量重要性的方法有两种,Decrease GINI 和 Decrease Accuracy:

1) Decrease GINI:对于回归问题,直接使用argmax(VarVarLeftVarRight)作为评判标准,即当前节点训练集的方差Var减去左节点的方差VarLeft和右节点的方差VarRight。

2) Decrease Accuracy:对于一棵树Tb(x),我们用OOB样本可以得到测试误差1;然后随机改变OOB样本的第j列:保持其他列不变,对第j列进行随机的上下置换,得到误差2。至此,我们可以用误差1-误差2来刻画变量j的重要性。基本思想就是,如果一个变量j足够重要,那么改变它会极大的增加测试误差;反之,如果改变它测试误差没有增大,则说明该变量不是那么的重要。

 

113.优化Kmeans。

 

使用Kd树或者Ball Tree 

将所有的观测实例构建成一颗kd树,之前每个聚类中心都是需要和每个观测点做依次距离计算,现在这些聚类中心根据kd树只需要计算附近的一个局部区域即可。

 

114.KMeans初始类簇中心点的选取。

 

K-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。

 

1.从输入的数据点集合中随机选择一个点作为第一个聚类中心 

2.对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x) 

3.选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大

4.重复2和3直到k个聚类中心被选出来 

5.利用这k个初始的聚类中心来运行标准的k-means算法

 

115.解释对偶的概念。

 

一个优化问题可以从两个角度进行考察,一个是primal 问题,一个是dual 问题,就是对偶问题,一般情况下对偶问题给出主问题最优值的下界,在强对偶性成立的情况下由对偶问题可以得到主问题的最优下界,对偶问题是凸优化问题,可以进行较好的求解,SVM中就是将Primal问题转换为dual问题进行求解,从而进一步引入核函数的思想。

 

116.如何进行特征选择?

 

特征选择是一个重要的数据预处理过程,主要有两个原因:一是减少特征数量、降维,使模型泛化能力更强,减少过拟合;二是增强对特征和特征值之间的理解。

 

常见的特征选择方式:

1.去除方差较小的特征。

2.正则化。1正则化能够生成稀疏的模型。L2正则化的表现更加稳定,由于有用的特征往往对应系数非零。

3.随机森林,对于分类问题,通常采用基尼不纯度或者信息增益,对于回归问题,通常采用的是方差或者最小二乘拟合。一般不需要feature engineering、调参等繁琐的步骤。它的两个主要问题,1是重要的特征有可能得分很低(关联特征问题),2是这种方法对特征变量类别多的特征越有利(偏向问题)。

4.稳定性选择。是一种基于二次抽样和选择算法相结合较新的方法,选择算法可以是回归、SVM或其他类似的方法。它的主要思想是在不同的数据子集和特征子集上运行特征选择算法,不断的重复,最终汇总特征选择结果,比如可以统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。理想情况下,重要特征的得分会接近100%。稍微弱一点的特征得分会是非0的数,而最无用的特征得分将会接近于0。

 

117.数据预处理。

 

1.缺失值,填充缺失值fillna:

i. 离散:None,

ii. 连续:均值。

iii. 缺失值太多,则直接去除该列 

2.连续值:离散化。有的模型(如决策树)需要离散值

3.对定量特征二值化。核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0。如图像操作

4.皮尔逊相关系数,去除高度相关的列

 

118.简单说说特征工程。

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_28

 

119.你知道有哪些数据处理和特征工程的处理?

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_29

120.请对比下Sigmoid、Tanh、ReLu这三个激活函数?

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_30

 

121.Sigmoid、Tanh、ReLu这三个激活函数有什么缺点或不足,有没改进的激活函数?

 

@我愛大泡泡,来源:

 

面试笔试整理3:深度学习机器学习面试问题准备(必会)

http://blog.csdn.net/woaidapaopao/article/details/77806273

 

122.怎么理解决策树、xgboost能处理缺失值?而有的模型(svm)对缺失值比较敏感?

 

知乎解答

https://www.zhihu.com/question/58230411

 

123.为什么引入非线性激励函数?

 

@Begin Again,来源:

 

知乎解答

https://www.zhihu.com/question/29021768

 

如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了。

 

正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入的线性组合,可以逼近任意函数)。最早的想法是Sigmoid函数或者Tanh函数,输出有界,很容易充当下一层输入(以及一些人的生物解释)。

 

124.请问人工神经网络中为什么ReLu要好过于Tanh和Sigmoid function?

 

@Begin Again,来源:

 

知乎解答

https://www.zhihu.com/question/29021768

 

125.为什么LSTM模型中既存在Sigmoid又存在Tanh两种激活函数?

 

本题解析来源:知乎解答

https://www.zhihu.com/question/46197687

 

@beanfrog:二者目的不一样:sigmoid 用在了各种gate上,产生0~1之间的值,这个一般只有sigmoid最直接了。tanh 用在了状态和输出上,是对数据的处理,这个用其他激活函数或许也可以。

 

@hhhh:另可参见A Critical Review of Recurrent Neural Networks for Sequence Learning的section4.1,说了那两个tanh都可以替换成别的。

 

126.衡量分类器的好坏。

 

@我愛大泡泡,来源:

 

答案解析

http://blog.csdn.net/woaidapaopao/article/details/77806273

 

这里首先要知道TP、FN(真的判成假的)、FP(假的判成真)、TN四种(可以画一个表格)。

 

几种常用的指标:

 

精度precision = TP/(TP+FP) = TP/~P (~p为预测为真的数量) 

召回率 recall = TP/(TP+FN) = TP/ P 

F1值:2/F1 = 1/recall + 1/precision

ROC曲线:ROC空间是一个以伪阳性率(FPR,false positive rate)为X轴,真阳性率(TPR, true positive rate)为Y轴的二维坐标系所代表的平面。其中真阳率TPR = TP / P = recall, 伪阳率FPR = FP / N

 

127.机器学习和统计里面的auc的物理意义是什么?

 

详情参见机器学习和统计里面的auc怎么理解?

https://www.zhihu.com/question/39840928

 

128.观察增益gain, alpha和gamma越大,增益越小?

 

@AntZ:XGBoost寻找分割点的标准是最大化gain. 考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,XGBoost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中计算Gain按最大值找出最佳的分割点。它的计算公式分为四项, 可以由正则化项参数调整(lamda为叶子权重平方和的系数, gama为叶子数量):

 

 

第一项是假设分割的左孩子的权重分数, 第二项为右孩子, 第三项为不分割总体分数, 最后一项为引入一个节点的复杂度损失。

 

由公式可知, gama越大gain越小, lamda越大, gain可能小也可能大。

 

原问题是alpha而不是lambda, 这里paper上没有提到, XGBoost实现上有这个参数. 上面是我从paper上理解的答案,下面是搜索到的:

 

如何对XGBoost模型进行参数调优

https://zhidao.baidu.com/question/2121727290086699747.html?fr=iks&word=xgboost%20lamda&ie=gbk

 

129.什么造成梯度消失问题? 推导一下。

   

@许韩,来源:

 

神经网络的训练中,通过改变神经元的权重,使网络的输出值尽可能逼近标签以降低误差值,训练普遍使用BP算法,核心思想是,计算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,进行权值的迭代。

 

梯度消失会造成权值更新缓慢,模型训练难度增加。造成梯度消失的一个原因是,许多激活函数将输出值挤压在很小的区间内,在激活函数两端较大范围的定义域内梯度为0,造成学习停止。

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_31

 

130.什么是梯度消失和梯度爆炸?

 

@寒小阳,反向传播中链式法则带来的连乘,如果有数很小趋于0,结果就会特别小(梯度消失);如果数都比较大,可能结果会很大(梯度爆炸)。

 

@单车

 

神经网络训练中的梯度消失与梯度爆炸

https://zhuanlan.zhihu.com/p/25631496

 

131.如何解决梯度消失和梯度膨胀?

 

(1)梯度消失:

  根据链式法则,如果每一层神经元对上一层的输出的偏导乘上权重结果都小于1的话,那么即使这个结果是0.99,在经过足够多层传播之后,误差对输入层的偏导会趋于0,可以采用ReLU激活函数有效的解决梯度消失的情况。

(2)梯度膨胀 

  根据链式法则,如果每一层神经元对上一层的输出的偏导乘上权重结果都大于1的话,在经过足够多层传播之后,误差对输入层的偏导会趋于无穷大,可以通过激活函数来解决。

 

132.推导下反向传播Backpropagation。

 

@我愛大泡泡,来源:

 

推导过程

http://blog.csdn.net/woaidapaopao/article/details/77806273

 

133.SVD和PCA。

 

PCA的理念是使得数据投影后的方差最大,找到这样一个投影向量,满足方差最大的条件即可。而经过了去除均值的操作之后,就可以用SVD分解来求解这样一个投影向量,选择特征值最大的方向。

 

134.数据不平衡问题。

 

这主要是由于数据分布不平衡造成的。解决方法如下:

 

1)采样,对小样本加噪声采样,对大样本进行下采样 

2)进行特殊的加权,如在Adaboost中或者SVM中 

3)采用对不平衡数据集不敏感的算法 

4)改变评价标准:用AUC/ROC来进行评价

5)采用Bagging/Boosting/Ensemble等方法 

6)考虑数据的先验分布

 

135.简述神经网络的发展。

 

MP模型+sgn—->单层感知机(只能线性)+sgn— Minsky 低谷 —>多层感知机+BP+Sigmoid— (低谷) —>深度学习+Pretraining+ReLU/Sigmoid

 

136.深度学习常用方法。

 

@SmallisBig,来源:

 

机器学习岗位面试问题汇总 之 深度学习

http://blog.csdn.net/u010496169/article/details/73550487

 

137.神经网络模型(Neural Network)因受人类大脑的启发而得名。神经网络由许多神经元(Neuron)组成,每个神经元接受一个输入,对输入进行处理后给出一个输出。请问下列关于神经元的描述中,哪一项是正确的?(E)

 

A.每个神经元只有一个输入和一个输出 

B.每个神经元有多个输入和一个输出 

C.每个神经元有一个输入和多个输出 

D.每个神经元有多个输入和多个输出 

E.上述都正确

 

答案:(E)

每个神经元可以有一个或多个输入,和一个或多个输出

 

138.下图是一个神经元的数学表示

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_32

 

139.在一个神经网络中,知道每一个神经元的权重和偏差是最重要的一步。如果知道了神经元准确的权重和偏差,便可以近似任何函数,但怎么获知每个神经的权重和偏移呢?(C)

 

A. 搜索每个可能的权重和偏差组合,直到得到最佳值 

B. 赋予一个初始值,然后检查跟最佳值的差值,不断迭代调整权重 

C. 随机赋值,听天由命 

D. 以上都不正确的

 

答案:(C)

选项C是对梯度下降的描述。

 

140.梯度下降算法的正确步骤是什么?( D)

 

1.计算预测值和真实值之间的误差 

2.重复迭代,直至得到网络权重的最佳值 

3.把输入传入网络,得到输出值 

4.用随机值初始化权重和偏差 

5.对每一个产生误差的神经元,调整相应的(权重)值以减小误差

 

A. 1, 2, 3, 4, 5 

B. 5, 4, 3, 2, 1 

C. 3, 2, 1, 5, 4 

D. 4, 3, 1, 5, 2

 

答案:(D)

 

141.已知:

- 大脑是有很多个叫做神经元的东西构成,神经网络是对大脑的简单的数学表达。

- 每一个神经元都有输入、处理函数和输出。

- 神经元组合起来形成了网络,可以拟合任何函数。

- 为了得到最佳的神经网络,我们用梯度下降方法不断更新模型 

给定上述关于神经网络的描述,什么情况下神经网络模型被称为深度学习模型?

 

A. 加入更多层,使神经网络的深度增加 

B. 有维度更高的数据 

C. 当这是一个图形识别的问题时 

D. 以上都不正确

 

答案:(A)

更多层意味着网络更深。没有严格的定义多少层的模型才叫深度模型,目前如果有超过2层的隐层,那么也可以及叫做深度模型。

 

142.卷积神经网络可以对一个输入进行多种变换(旋转、平移、缩放),这个表述正确吗?

 

答案:错误

把数据传入神经网络之前需要做一系列数据预处理(也就是旋转、平移、缩放)工作,神经网络本身不能完成这些变换。

 

143.下面哪项操作能实现跟神经网络中Dropout的类似效果?(B)

 

A. Boosting 

B. Bagging 

C. Stacking 

D. Mapping 

   

答案:B

Dropout可以认为是一种极端的Bagging,每一个模型都在单独的数据上训练,同时,通过和其他模型对应参数的共享,从而实现模型参数的高度正则化。

 

144.下列哪一项在神经网络中引入了非线性?(B)

 

A. 随机梯度下降 

B. 修正线性单元(ReLU) 

C. 卷积函数 

D .以上都不正确

 

答案:(B)

修正线性单元是非线性的激活函数。

 

145.在训练神经网络时,损失函数(loss)在最初的几个epochs时没有下降,可能的原因是?(A)

 

A. 学习率(learning rate)太低 

B. 正则参数太高 

C. 陷入局部最小值 

D. 以上都有可能

 

答案:(A)

 

146.下列哪项关于模型能力(model capacity)的描述是正确的?(指神经网络模型能拟合复杂函数的能力)(A)

 

A. 隐藏层层数增加,模型能力增加 

B. Dropout的比例增加,模型能力增加 

C. 学习率增加,模型能力增加 

D. 都不正确

 

答案:(A)

 

147.如果增加多层感知机(Multilayer Perceptron)的隐藏层层数,分类误差便会减小。这种陈述正确还是错误?

 

答案:错误

并不总是正确。过拟合可能会导致错误增加。

 

148.构建一个神经网络,将前一层的输出和它自身作为输入。下列哪一种架构有反馈连接?(A)

 

A. 循环神经网络 

B. 卷积神经网络 

C. 限制玻尔兹曼机 

D. 都不是

 

答案:(A)

 

149.下列哪一项在神经网络中引入了非线性?在感知机中(Perceptron)的任务顺序是什么?

 

1.随机初始化感知机的权重 

2.去到数据集的下一批(batch) 

3.如果预测值和输出不一致,则调整权重 

4.对一个输入样本,计算输出值

 

答案:1 - 4 - 3 - 2

 

150.假设你需要调整参数来最小化代价函数(cost function),可以使用下列哪项技术?(D)

 

A. 穷举搜索 

B. 随机搜索 

C. Bayesian优化 

D. 以上任意一种

 

答案:(D)

 

151.在下面哪种情况下,一阶梯度下降不一定正确工作(可能会卡住)?(B)

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_33

 

答案:(B)

 

这是鞍点(Saddle Point)的梯度下降的经典例子。另,本题来源于:题目来源

https://www.analyticsvidhya.com/blog/2017/01/must-know-questions-deep-learning/

 

152.下图显示了训练过的3层卷积神经网络准确度,与参数数量(特征核的数量)的关系。

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_34

 

从图中趋势可见,如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么?(C)

 

A. 即使增加卷积核的数量,只有少部分的核会被用作预测 

B. 当卷积核数量增加时,神经网络的预测能力(Power)会降低 

C. 当卷积核数量增加时,它们之间的相关性增加(correlate),导致过拟合 

D. 以上都不正确

 

答案:(C)

如C选项指出的那样,可能的原因是核之间的相关性。

 

153.假设我们有一个如下图所示的隐藏层。隐藏层在这个网络中起到了一定的降维作用。假如现在我们用另一种维度下降的方法,比如说主成分分析法(PCA)来替代这个隐藏层。那么,这两者的输出效果是一样的吗?

 

答案:不同,因为PCA用于相关特征而隐层用于有预测能力的特征。

 

154.神经网络能组成函数(y=1xy=1x)吗?

 

答案:可以,因为激活函数可以是互反函数。

 

155.下列哪个神经网络结构会发生权重共享?(D)

 

A. 卷积神经网络 

B. 循环神经网络 

C. 全连接神经网络 

D. 选项A和B 

   

答案:(D)

 

156.批规范化(Batch Normalization)的好处都有啥?(A)

 

A. 在将所有的输入传递到下一层之前对其进行归一化(更改) 

B. 它将权重的归一化平均值和标准差 

C. 它是一种非常有效的反向传播(BP)方法 

D. 这些均不是

 

答案:(A)

 

157.在一个神经网络中,下面哪种方法可以用来处理过拟合?(D) 

   

A. Dropout 

B. 分批归一化(Batch Normalization) 

C. 正则化(regularization) 

D. 都可以

 

答案:(D)

 

158.如果我们用了一个过大的学习速率会发生什么?(D) 

   

A. 神经网络会收敛 

B. 不好说 

C. 都不对 

D. 神经网络不会收敛

 

答案:(D)

 

159.下图所示的网络用于训练识别字符H和T,如下所示:

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_35

 

网络的输出是什么?(D)

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_36

 

D.可能是A或B,取决于神经网络的权重设置

 

答案:(D)

不知道神经网络的权重和偏差是什么,则无法判定它将会给出什么样的输出。

 

160.假设我们已经在ImageNet数据集(物体识别)上训练好了一个卷积神经网络。然后给这张卷积神经网络输入一张全白的图片。对于这个输入的输出结果为任何种类的物体的可能性都是一样的,对吗?(D)

 

A. 对的 

B. 不知道 

C. 看情况 

D. 不对

 

答案:(D)各个神经元的反应是不一样的

 

 

161.当在卷积神经网络中加入池化层(pooling layer)时,变换的不变性会被保留,是吗?(C)

 

A. 不知道 

B. 看情况 

C. 是 

D. 否

 

答案:(C)使用池化时会导致出现不变性。

 

162.当数据过大以至于无法在RAM中同时处理时,哪种梯度下降方法更加有效?(A)

 

A. 随机梯度下降法(Stochastic Gradient Descent) 

B. 不知道 

C. 整批梯度下降法(Full Batch Gradient Descent) 

D. 都不是

 

答案:(A)

 

163.下图是一个利用sigmoid函数作为激活函数的含四个隐藏层的神经网络训练的梯度下降图。这个神经网络遇到了梯度消失的问题。下面哪个叙述是正确的?(A)

 

200 道机器学习面试题 | 吊打面试官系列_BAT面试_37

 

A. 第一隐藏层对应D,第二隐藏层对应C,第三隐藏层对应B,第四隐藏层对应A 

B. 第一隐藏层对应A,第二隐藏层对应C,第三隐藏层对应B,第四隐藏层对应D 

C. 第一隐藏层对应A,第二隐藏层对应B,第三隐藏层对应C,第四隐藏层对应D 

D. 第一隐藏层对应B,第二隐藏层对应D,第三隐藏层对应C,第四隐藏层对应A

 

答案:(A)由于反向传播算法进入起始层,学习能力降低,这就是梯度消失。

 

164.对于一个分类任务,如果开始时神经网络的权重不是随机赋值的,二是都设成0,下面哪个叙述是正确的?(C)

 

A. 其他选项都不对 

B. 没啥问题,神经网络会正常开始训练 

C. 神经网络可以训练,但是所有的神经元最后都会变成识别同样的东西 

D. 神经网络不会开始训练,因为没有梯度改变

 

答案:(C)

 

165.下图显示,当开始训练时,误差一直很高,这是因为神经网络在往全局最小值前进之前一直被卡在局部最小值里。为了避免这种情况,我们可以采取下面哪种策略?(A)

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_38

 

A. 改变学习速率,比如一开始的几个训练周期不断更改学习速率 

B. 一开始将学习速率减小10倍,然后用动量项(momentum) 

C. 增加参数数目,这样神经网络就不会卡在局部最优处 

D. 其他都不对

 

答案:(A)

选项A可以将陷于局部最小值的神经网络提取出来。

 

166.对于一个图像识别问题(在一张照片里找出一只猫),下面哪种神经网络可以更好地解决这个问题?(D)

 

A. 循环神经网络 

B. 感知机 

C. 多层感知机 

D. 卷积神经网络

 

卷积神经网络将更好地适用于图像相关问题,因为考虑到图像附近位置变化的固有性质。

 

答案:(D)

 

167.假设在训练中我们突然遇到了一个问题,在几次循环之后,误差瞬间降低。你认为数据有问题,于是你画出了数据并且发现也许是数据的偏度过大造成了这个问题。

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_39

 

你打算怎么做来处理这个问题?(D)

 

A. 对数据作归一化 

B. 对数据取对数变化 

C. 都不对 

D. 对数据作主成分分析(PCA)和归一化

 

答案:(D)

首先将相关的数据去掉,然后将其置零。

 

168.下面那个决策边界是神经网络生成的?(E)

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_40

 

A. A 

B. D 

C. C 

D. B 

E. 以上都有

 

答案:(E)

 

169.在下图中,我们可以观察到误差出现了许多小的”涨落”。这种情况我们应该担心吗?(B)

 

200 道机器学习面试题 | 吊打面试官系列_机器学习_41

 

A. 需要,这也许意味着神经网络的学习速率存在问题 

B. 不需要,只要在训练集和交叉验证集上有累积的下降就可以了 

C. 不知道 

D. 不好说

 

答案:(B)

选项B是正确的,为了减少这些“起伏”,可以尝试增加批尺寸(batch size)。

 

170.在选择神经网络的深度时,下面那些参数需要考虑?(C)

 

1 神经网络的类型(如MLP,CNN) 

2 输入数据 

3 计算能力(硬件和软件能力决定) 

4 学习速率 

5 映射的输出函数

 

A. 1,2,4,5 

B. 2,3,4,5 

C. 都需要考虑 

D. 1,3,4,5

 

答案:(C)

所有上述因素对于选择神经网络模型的深度都是重要的。

 

171.考虑某个具体问题时,你可能只有少量数据来解决这个问题。不过幸运的是你有一个类似问题已经预先训练好的神经网络。可以用下面哪种方法来利用这个预先训练好的网络?(C)

 

A. 把除了最后一层外所有的层都冻住,重新训练最后一层 

B. 对新数据重新训练整个模型 

C. 只对最后几层进行调参(fine tune) 

D. 对每一层模型进行评估,选择其中的少数来用

 

答案:(C)

 

172.增加卷积核的大小对于改进卷积神经网络的效果是必要的吗?

 

答案:不是,增加核函数的大小不一定会提高性能。这个问题在很大程度上取决于数据集。

 

173.请简述神经网络的发展史。

 

@SIY.Z。本题解析来源:

 

浅析 Hinton 最近提出的 Capsule 计划

https://zhuanlan.zhihu.com/p/29435406

 

174.说说spark的性能调优。

 

https://tech.meituan.com/spark-tuning-basic.html 

https://tech.meituan.com/spark-tuning-pro.html

 

175.机器学习中,有哪些特征选择的工程方法?

 

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已

 

1.计算每一个特征与响应变量的相关性:工程上常用的手段有计算皮尔逊系数和互信息系数,皮尔逊系数只能衡量线性相关性而互信息系数能够很好地度量各种相关性,但是计算相对复杂一些,好在很多toolkit里边都包含了这个工具(如sklearn的MINE),得到相关性之后就可以排序选择特征了;

2.构建单个特征的模型,通过模型的准确性为特征排序,借此来选择特征;

3.通过L1正则项来选择特征:L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过L2正则方法交叉检验*;

4.训练能够对特征打分的预选模型:RandomForest和Logistic Regression等都能对模型的特征打分,通过打分获得相关性后再训练最终模型;

5.通过特征组合后再来选择特征:如对用户id和用户特征最组合来获得较大的特征集再来选择特征,这种做法在推荐系统和广告系统中比较常见,这也是所谓亿级甚至十亿级特征的主要来源,原因是用户数据比较稀疏,组合特征能够同时兼顾全局模型和个性化模型,这个问题有机会可以展开讲。

6.通过深度学习来进行特征选择:目前这种手段正在随着深度学习的流行而成为一种手段,尤其是在计算机视觉领域,原因是深度学习具有自动学习特征的能力,这也是深度学习又叫unsupervised feature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。

 

176.常见的分类算法有哪些?

 

SVM、神经网络、随机森林、逻辑回归、KNN、贝叶斯

 

177.常见的监督学习算法有哪些?

 

感知机、SVM、人工神经网络、决策树、逻辑回归

 

178.在其他条件不变的前提下,以下哪种做法容易引起机器学习中的过拟合问题(D)

 

A. 增加训练集量 

B. 减少神经网络隐藏层节点数 

C. 删除稀疏的特征 

D. SVM算法中使用高斯核/RBF核代替线性核

 

正确答案:(D)

 

@刘炫320

 

一般情况下,越复杂的系统,过拟合的可能性就越高,一般模型相对简单的话泛化能力会更好一点。

 

B.一般认为,增加隐层数可以降低网络误差(也有文献认为不一定能有效降低),提高精度,但也使网络复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向, svm高斯核函数比线性核函数模型更复杂,容易过拟合

 

D.径向基(RBF)核函数/高斯核函数的说明,这个核函数可以将原始空间映射到无穷维空间。对于参数 ,如果选的很大,高次特征上的权重实际上衰减得非常快,实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调整参数 ,高斯核实际上具有相当高的灵活性,也是 使用最广泛的核函数之一。

 

179.下列时间序列模型中,哪一个模型可以较好地拟合波动性的分析和预测?(D)

 

A. AR模型 

B. MA模型 

C. ARMA模型 

D. GARCH模型

 

正确答案:(D)

 

@刘炫320

 

R模型是一种线性预测,即已知N个数据,可由模型推出第N点前面或后面的数据(设推出P点),所以其本质类似于插值。

 

MA模型(moving average model)滑动平均模型,其中使用趋势移动平均法建立直线趋势的预测模型。

 

ARMA模型(auto regressive moving average model)自回归滑动平均模型,模型参量法高分辨率谱分析方法之一。这种方法是研究平稳随机过程有理谱的典型方法。它比AR模型法与MA模型法有较精确的谱估计及较优良的谱分辨率性能,但其参数估算比较繁琐。

 

GARCH模型称为广义ARCH模型,是ARCH模型的拓展,由Bollerslev(1986)发展起来的。它是ARCH模型的推广。GARCH(p,0)模型,相当于ARCH(p)模型。GARCH模型是一个专门针对金融数据所量体订做的回归模型,除去和普通回归模型相同的之处,GARCH对误差的方差进行了进一步的建模。特别适用于波动性的分析和预测,这样的分析对投资者的决策能起到非常重要的指导性作用,其意义很多时候超过了对数值本身的分析和预测。

 

180.以下哪个属于线性分类器最佳准则?(ACD)

 

A. 感知准则函数 

B.贝叶斯分类 

C.支持向量机 

D.Fisher准则

 

正确答案:(ACD)

 

@刘炫320

 

线性分类器有三大类:感知器准则函数、SVM、Fisher准则,而贝叶斯分类器不是线性分类器。

 

感知准则函数 :准则函数以使错分类样本到分界面距离之和最小为原则。其优点是通过错分类样本提供的信息对分类器函数进行修正,这种准则是人工神经元网络多层感知器的基础。

 

支持向量机 :基本思想是在两类线性可分条件下,所设计的分类器界面使两类之间的间隔为最大,它的基本出发点是使期望泛化风险尽可能小。(使用核函数可解决非线性问题)

 

Fisher 准则 :更广泛的称呼是线性判别分析(LDA),将所有样本投影到一条远点出发的直线,使得同类样本距离尽可能小,不同类样本距离尽可能大,具体为最大化“广义瑞利商”。

 

根据两类样本一般类内密集,类间分离的特点,寻找线性分类器最佳的法线向量方向,使两类样本在该方向上的投影满足类内尽可能密集,类间尽可能分开。这种度量通过类内离散矩阵SwSw和类间离散矩阵SbSb实现。

 

181.基于二次准则函数的H-K算法较之于感知器算法的优点是(BD)?

 

A. 计算量小 

B. 可以判别问题是否线性可分 

C. 其解完全适用于非线性可分的情况 

D. 其解的适应性更好

 

正确答案:(BD)

 

@刘炫320

 

HK算法思想很朴实,就是在最小均方误差准则下求得权矢量。

他相对于感知器算法的优点在于,他适用于线性可分和非线性可分得情况,对于线性可分的情况,给出最优权矢量,对于非线性可分得情况,能够判别出来,以退出迭代过程。

 

182.以下说法中正确的是(BD)?

 

A. SVM对噪声(如来自其他分布的噪声样本)鲁棒 

B. 在AdaBoost算法中,所有被分错的样本的权重更新比例相同 

C. Boosting和Bagging都是组合多个分类器投票的方法,二者都是根据单个分类器的正确率决定其权重 

D. 给定n个数据点,如果其中一半用于训练,一般用于测试,则训练误差和测试误差之间的差别会随着n的增加而减少

 

正确答案:(BD)

 

@刘炫320

 

A、SVM对噪声(如来自其他分布的噪声样本)鲁棒 

  SVM本身对噪声具有一定的鲁棒性,但实验证明,是当噪声率低于一定水平的噪声对SVM没有太大影响,但随着噪声率的不断增加,分类器的识别率会降低。

B、在AdaBoost算法中所有被分错的样本的权重更新比例相同 

  AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中n为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被凸显出来,从而得到一个新的样本分布。在新的样本分布下,再次对样本进行训练,得到弱分类器。以此类推,将所有的弱分类器重叠加起来,得到强分类器。

C、Boost和Bagging都是组合多个分类器投票的方法,二者均是根据单个分类器的正确率决定其权重。

  Bagging与Boosting的区别:

  取样方式不同。

  Bagging采用均匀取样,而Boosting根据错误率取样。

  Bagging的各个预测函数没有权重,而Boosting是有权重的。

  Bagging的各个预测函数可以并行生成,而Boosing的各个预测函数只能顺序生成。

 

183.输入图片大小为200×200,依次经过一层卷积(kernel size 5×5,padding 1,stride 2),pooling(kernel size 3×3,padding 0,stride 1),又一层卷积(kernel size 3×3,padding 1,stride 1)之后,输出特征图大小为(C):

 

A. 95 

B. 96 

C. 97 

D. 98

 

正确答案:(C)

 

@刘炫320

 

首先我们应该知道卷积或者池化后大小的计算公式:

out_height=((input_height - filter_height + padding_top+padding_bottom)/stride_height )+1 

out_width=((input_width - filter_width + padding_left+padding_right)/stride_width )+1

 

其中,padding指的是向外扩展的边缘大小,而stride则是步长,即每次移动的长度。

 

这样一来就容易多了,首先长宽一般大,所以我们只需要计算一个维度即可,这样,经过第一次卷积后的大小为: (200-5+2)/2+1,取99;经过第一次池化后的大小为:(99-3)/1+1 为97;经过第二次卷积后的大小为:(97-3+2)/1+1 为97。

 

184.在SPSS的基础分析模块中,作用是“以行列表的形式揭示数据之间的关系”的是(C)

 

A. 数据描述 

B. 相关 

C. 交叉表 

D. 多重相应

 

正确答案:(C )

 

185.一监狱人脸识别准入系统用来识别待进入人员的身份,此系统一共包括识别4种不同的人员:狱警,小偷,送餐员,其他。下面哪种学习方法最适合此种应用需求:(B)。

 

A. 二分类问题 

B. 多分类问题 

C. 层次聚类问题 

D. k-中心点聚类问题 

E. 回归问题 

F. 结构分析问题 

   

正确答案:(B)

 

@刘炫320

 

  二分类:每个分类器只能把样本分为两类。监狱里的样本分别为狱警、小偷、送餐员、其他。二分类肯 定行不通。瓦普尼克95年提出来基础的支持向量机就是个二分类的分类器,这个分类器学习过 程就是解一个基于正负二分类推导而来的一个最优规划问题(对偶问题),要解决多分类问题 就要用决策树把二分类的分类器级联,VC维的概念就是说的这事的复杂度。

  层次聚类:创建一个层次等级以分解给定的数据集。监狱里的对象分别是狱警、小偷、送餐员、或者其 他,他们等级应该是平等的,所以不行。此方法分为自上而下(分解)和自下而上(合并)两种操作方式。

  K-中心点聚类:挑选实际对象来代表簇,每个簇使用一个代表对象。它是围绕中心点划分的一种规则,所以这里并不合适。

  回归分析:处理变量之间具有相关性的一种统计方法,这里的狱警、小偷、送餐员、其他之间并没有什 么直接关系。

  结构分析:结构分析法是在统计分组的基础上,计算各组成部分所占比重,进而分析某一总体现象的内部结构特征、总体的性质、总体内部结构依时间推移而表现出的变化规律性的统计方法。结构分析法的基本表现形式,就是计算结构指标。这里也行不通。

  多分类问题:针对不同的属性训练几个不同的弱分类器,然后将它们集成为一个强分类器。这里狱警、 小偷、送餐员 以及他某某,分别根据他们的特点设定依据,然后进行区分识别。

 

186.关于 Logit 回归和 SVM 不正确的是(A)。

 

A. Logit回归目标函数是最小化后验概率 

B. Logit回归可以用于预测事件发生概率的大小 

C. SVM目标是结构风险最小化 

D. SVM可以有效避免模型过拟合

 

正确答案:(A)

 

@刘炫320

 

  A. Logit回归本质上是一种根据样本对权值进行极大似然估计的方法,而后验概率正比于先验概率和似然函数的乘积。logit仅仅是最大化似然函数,并没有最大化后验概率,更谈不上最小化后验概率。而最小化后验概率是朴素贝叶斯算法要做的。A错误

  B. Logit回归的输出就是样本属于正类别的几率,可以计算出概率,正确 

  C. SVM的目标是找到使得训练数据尽可能分开且分类间隔最大的超平面,应该属于结构风险最小化。

  D. SVM可以通过正则化系数控制模型的复杂度,避免过拟合。

 

187.有两个样本点,第一个点为正样本,它的特征向量是(0,-1);第二个点为负样本,它的特征向量是(2,3),从这两个样本点组成的训练集构建一个线性SVM分类器的分类面方程是(C)

 

A. 2x+y=4 

B. x+2y=5 

C. x+2y=3 

D. 2x-y=0

 

正确答案:(C)

 

解析:这道题简化了,对于两个点来说,最大间隔就是垂直平分线,因此求出垂直平分线即可。

 

188.下面有关分类算法的准确率,召回率,F1 值的描述,错误的是?(C)

 

A. 准确率是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率 

B. 召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率 

C. 正确率、召回率和 F 值取值都在0和1之间,数值越接近0,查准率或查全率就越高 

D. 为了解决准确率和召回率冲突问题,引入了F1分数

 

正确答案:(C)

 

解析:对于二类分类问题常用的评价指标是精准度(precision)与召回率(recall)。通常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不正确,4种情况出现的总数分别记作:

  TP——将正类预测为正类数 

  FN——将正类预测为负类数 

  FP——将负类预测为正类数 

  TN——将负类预测为负类数 

  由此:

  精准率定义为:P = TP / (TP + FP)

  召回率定义为:R = TP / (TP + FN)

  F1值定义为:F1 = 2 P R / (P + R)

精准率和召回率和F1取值都在0和1之间,精准率和召回率高,F1值也会高,不存在数值越接近0越高的说法,应该是数值越接近1越高。

 

189.以下几种模型方法属于判别式模型(Discriminative Model)的有(A) 

1)混合高斯模型 2)条件随机场模型 

3)区分度训练 4)隐马尔科夫模型 

   

A. 2,3 

B. 3,4 

C. 1,4 

D. 1,2

 

正确答案:(A)

 

@刘炫320

 

常见的判别式模型有:Logistic Regression(Logistical 回归)

 

  Linear discriminant analysis(线性判别分析) 

  Supportvector machines(支持向量机) 

  Boosting(集成学习) 

  Conditional random fields(条件随机场) 

  Linear regression(线性回归) 

  Neural networks(神经网络) 

   

常见的生成式模型有:Gaussian mixture model and othertypes of mixture model(高斯混合及其他类型混合模型) 

  Hidden Markov model(隐马尔可夫) 

  NaiveBayes(朴素贝叶斯) 

  AODE(平均单依赖估计) 

  Latent Dirichlet allocation(LDA主题模型) 

  Restricted Boltzmann Machine(限制波兹曼机)

 

生成式模型是根据概率乘出结果,而判别式模型是给出输入,计算出结果。

 

190.SPSS中,数据整理的功能主要集中在(AD )等菜单中。

 

A. 数据 

B. 直销 

C. 分析 

D. 转换 

   

正确答案:(AD )

 

@刘炫320

 

解析:对数据的整理主要在数据和转换功能菜单中。

 

191.深度学习是当前很热门的机器学习算法,在深度学习中,涉及到大量的矩阵相乘,现在需要计算三个稠密矩阵A,B,C的乘积ABC,假设三个矩阵的尺寸分别为m∗n,n∗p,p∗q,且m<n<p<q,以下计算顺序效率最高的是(A)

 

A. (AB)C 

B. AC(B) 

C. A(BC) 

D. 所以效率都相同

 

正确答案:(A)

 

@刘炫320

 

首先,根据简单的矩阵知识,因为 A*B , A 的列数必须和 B 的行数相等。因此,可以排除 B 选项。

 

然后,再看 A 、 C 选项。在 A 选项中,m∗n 的矩阵 A 和n∗p的矩阵 B 的乘积,得到 m∗p的矩阵 A*B ,而 A∗B的每个元素需要 n 次乘法和 n-1 次加法,忽略加法,共需要 m∗n∗p次乘法运算。同样情况分析 A*B 之后再乘以 C 时的情况,共需要 m∗p∗q次乘法运算。因此, A 选项 (AB)C 需要的乘法次数是 m∗n∗p+m∗p∗q 。同理分析, C 选项 A (BC) 需要的乘法次数是 n∗p∗q+m∗n∗q。

 

由于m∗n∗p<m∗n∗q,m∗p∗q<n∗p∗q,显然 A 运算次数更少,故选 A 。

 

192.Nave Bayes是一种特殊的Bayes分类器,特征变量是X,类别标签是C,它的一个假定是:( C )

 

A. 各类别的先验概率P(C)是相等的 

B. 以0为均值,sqr(2)/2为标准差的正态分布 

C. 特征变量X的各个维度是类别条件独立随机变量 

D. P(X|C)是高斯分布

 

正确答案:( C )

 

@刘炫320

 

朴素贝叶斯的条件就是每个变量相互独立。

 

193.关于支持向量机SVM,下列说法错误的是(C)

 

A. L2正则项,作用是最大化分类间隔,使得分类器拥有更强的泛化能力 

B. Hinge 损失函数,作用是最小化经验分类错误 

C. 分类间隔为1||w||1||w||,||w||代表向量的模 

D. 当参数C越小时,分类间隔越大,分类错误越多,趋于欠学习

 

正确答案:(C)

 

@刘炫320

 

A正确。考虑加入正则化项的原因:想象一个完美的数据集,y>1是正类,y<-1是负类,决策面y=0,加入一个y=-30的正类噪声样本,那么决策面将会变“歪”很多,分类间隔变小,泛化能力减小。加入正则项之后,对噪声样本的容错能力增强,前面提到的例子里面,决策面就会没那么“歪”了,使得分类间隔变大,提高了泛化能力。

 

B正确。

 

C错误。间隔应该是2||w||2||w||才对,后半句应该没错,向量的模通常指的就是其二范数。

 

D正确。考虑软间隔的时候,C对优化问题的影响就在于把a的范围从[0,+inf]限制到了[0,C]。C越小,那么a就会越小,目标函数拉格朗日函数导数为0可以求出w=∑iai∗yi∗xiw=∑iai∗yi∗xi,a变小使得w变小,因此间隔2||w||2||w||变大。

 

194.在HMM中,如果已知观察序列和产生观察序列的状态序列,那么可用以下哪种方法直接进行参数估计( D )

 

A. EM算法 

B. 维特比算法 

C. 前向后向算法 

D. 极大似然估计

 

正确答案:( D )

 

@刘炫320

 

EM算法:只有观测序列,无状态序列时来学习模型参数,即Baum-Welch算法

 

维特比算法:用动态规划解决HMM的预测问题,不是参数估计

 

前向后向算法:用来算概率

 

极大似然估计:即观测序列和相应的状态序列都存在时的监督学习算法,用来估计参数

 

注意的是在给定观测序列和对应的状态序列估计模型参数,可以利用极大似然发估计。如果给定观测序列,没有对应的状态序列,才用EM,将状态序列看不不可测的隐数据。

 

195.假定某同学使用Naive Bayesian(NB)分类模型时,不小心将训练数据的两个维度搞重复了,那么关于NB的说法中正确的是: (BD)

 

A. 这个被重复的特征在模型中的决定作用会被加强 

B. 模型效果相比无重复特征的情况下精确度会降低 

C. 如果所有特征都被重复一遍,得到的模型预测结果相对于不重复的情况下的模型预测结果一样。

D. 当两列特征高度相关时,无法用两列特征相同时所得到的结论来分析问题 

E. NB可以用来做最小二乘回归 

F. 以上说法都不正确 

   

正确答案:(BD)

 

196.L1与L2范数在Logistic Regression 中,如果同时加入L1和L2范数,会产生什么效果( A )。

 

A. 可以做特征选择,并在一定程度上防止过拟合 

B. 能解决维度灾难问题 

C. 能加快计算速度 

D. 可以获得更准确的结果

 

正确答案:( A )

 

@刘炫320

 

L1范数具有系数解的特性,但是要注意的是,L1没有选到的特征不代表不重要,原因是两个高相关性的特征可能只保留一个。如果需要确定哪个特征重要,再通过交叉验证。

 

在代价函数后面加上正则项,L1即是Losso回归,L2是岭回归。L1范数是指向量中各个元素绝对值之和,用于特征选择。L2范数 是指向量各元素的平方和然后求平方根,用于 防止过拟合,提升模型的泛化能力。因此选择A。

 

对于机器学习中的范数规则化,也就是L0,L1,L2范数的详细解答,请参阅范数规则化。

 

197.机器学习中L1正则化和L2正则化的区别是?(AD)

 

A. 使用L1可以得到稀疏的权值 

B. 使用L1可以得到平滑的权值 

C. 使用L2可以得到稀疏的权值 

D. 使用L2可以得到平滑的权值

 

正确答案:(AD)

 

@刘炫320

 

L1正则化偏向于稀疏,它会自动进行特征选择,去掉一些没用的特征,也就是将这些特征对应的权重置为0。

L2主要功能是为了防止过拟合,当要求参数越小时,说明模型越简单,而模型越简单则,越趋向于平滑,从而防止过拟合。

 

L1正则化/Lasso 

L1正则化将系数w的L1范数作为惩罚项加到损失函数上,由于正则项非零,这就迫使那些弱的特征所对应的系数变成0。因此L1正则化往往会使学到的模型很稀疏(系数w经常为0),这个特性使得L1正则化成为一种很好的特征选择方法。

 

L2正则化/Ridge regression 

L2正则化将系数向量的L2范数添加到了损失函数中。由于L2惩罚项中系数是二次方的,这使得L2和L1有着诸多差异,最明显的一点就是,L2正则化会让系数的取值变得平均。对于关联特征,这意味着他们能够获得更相近的对应系数。还是以Y=X1+X2Y=X1+X2为例,假设X1X1和X1X1具有很强的关联,如果用L1正则化,不论学到的模型是Y=X1+X2Y=X1+X2还是Y=2X1Y=2X1,惩罚都是一样的,都是2α2α。但是对于L2来说,第一个模型的惩罚项是2α2α,但第二个模型的是4α4α。可以看出,系数之和为常数时,各系数相等时惩罚是最小的,所以才有了L2会让各个系数趋于相同的特点。

 

可以看出,L2正则化对于特征选择来说一种稳定的模型,不像L1正则化那样,系数会因为细微的数据变化而波动。所以L2正则化和L1正则化提供的价值是不同的,L2正则化对于特征理解来说更加有用:表示能力强的特征对应的系数是非零。

 

因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。

 

198.位势函数法的积累势函数K(x)的作用相当于Bayes判决中的( AD )

 

A. 后验概率 

B. 先验概率 

C. 类概率密度 

D. 类概率密度与先验概率的乘积

 

正确答案: (AD)

 

事实上,AD说的是一回事。

 

参考链接:势函数主要用于确定分类面,其思想来源于物理。

 

199.隐马尔可夫模型三个基本问题以及相应的算法说法正确的是( ABC)

 

A. 评估—前向后向算法 

B. 解码—维特比算法 

C. 学习—Baum-Welch算法 

D. 学习—前向后向算法

 

正确答案: ( ABC)

 

解析:评估问题,可以使用前向算法、后向算法、前向后向算法。

 

200.特征比数据量还大时,选择什么样的分类器?

 

答案:线性分类器,因为维度高的时候,数据一般在维度空间里面会比较稀疏,很有可能线性可分。