备战AI求职季 | 100道机器学习面试题(上)

2019 年 3 月 16 日 七月在线实验室


导读:金三银四招聘季,小编特为大家整理了100道关于机器学习方面的BAT面试大题,希望能助大家一臂之力,有些题目解析较长,所以就写了几行,更多解析可见七月在线官网题库(PS:解析未完的题目后面有注明在官网题库对应的机器学习类目下第几题,可在官网题库查看或是在七月在线APP上查看)


1、协方差和相关性有什么区别?

解析:

相关性是协方差的标准化格式。协方差本身很难做比较。例如:如果我们计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以我们会得到不能做比较的不同的协方差。

为了解决这个问题,我们计算相关性来得到一个介于-1和1之间的值,就可以忽略它们各自不同的度量。


2、xgboost如何寻找最优特征?是有放回还是无放回的呢?


解析:

xgboost在训练的过程中给出各个特征的增益评分,最大增益的特征会被选出来作为分裂依据, 从而记忆了每个特征对在模型训练时的重要性 -- 从根到叶子中间节点涉及某特征的次数作为该特征重要性排序. xgboost属于boosting集成学习方法, 样本是不放回的, 因而每轮计算样本不重复. 另一方面, xgboost支持子采样, 也就是每轮计算可以不使用全部样本, 以减少过拟合. 进一步地, xgboost 还有列采样, 每轮计算按百分比随机采样一部分特征, 既提高计算速度又减少过拟合。


3、谈谈判别式模型和生成式模型?

解析:

判别方法:由数据直接学习决策函数 Y = f(X),或者由条件分布概率 P(Y|X)作为预测模型,即判别模型。
生成方法:由数据学习联合概率密度分布函数 P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型。
由生成模型可以得到判别模型,但由判别模型得不到生成模型。 

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

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


4、线性分类器与非线性分类器的区别以及优劣

解析:

线性和非线性是针对,模型参数和输入特征来讲的;比如输入x,模型y=ax+ax^2那么就是非线性模型,如果输入是x和X^2则模型是线性的。
线性分类器可解释性好,计算复杂度较低,不足之处是模型的拟合效果相对弱些。
非线性分类器效果拟合能力较强,不足之处是数据量不足容易过拟合、计算复杂度高、可解释性不好。
常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归
常见的非线性分类器:决策树、RF、GBDT、多层感知机
SVM两种都有(看线性核还是高斯核)

引用自@伟祺


5、L1和L2正则先验分别服从什么分布

解析:

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

先验就是优化的起跑线, 有先验的好处就是可以在较小的数据集中有良好的泛化性能,当然这是在先验分布是接近真实分布的情况下得到的了,从信息论的角度看,向系统加入了正确先验这个信息,肯定会提高系统的性能。


本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面试大题(33题),或是下载七月在线APP可直接刷题~


6、简单介绍下logistics回归?

解析:

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效,在实际中应用非常广泛。
比如在实际工作中,我们可能会遇到如下问题:预测一个用户是否点击特定的商品
判断用户的性别
预测用户是否会购买给定的品类

判断一条评论是正面的还是负面的


本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面试大题(34题),或是下载七月在线APP可直接刷题~


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

解析:

给定一个训练数据集T={(x1,y1), (x2,y2)…(xN,yN)},其中实例,而实例空间,yi属于标记集合{-1,+1},Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。


本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面试大题(35题),或是下载七月在线APP可直接刷题~


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

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


解析:

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


本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面试大题(36题),或是下载七月在线APP可直接刷题~


9、为什么朴素贝叶斯如此“朴素”?

解析:

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

朴素贝叶斯模型(Naive Bayesian Model)的朴素(Naive)的含义是"很简单很天真"地假设样本特征彼此独立. 这个假设现实中基本上不存在, 但特征相关性很小的实际情况还是很多的, 所以这个模型仍然能够工作得很好。
引用自:@AntZ


10、请大致对比下plsa和LDA的区别

解析:


文档d产生主题z的概率,主题z产生单词w的概率都是两个固定的值。


本题更多解析见七月在线官网题库www.julyedu.com)——机器学习——面试大题(38题),或是下载七月在线APP可直接刷题~

 

11、请详细说说EM算法

解析:

本题解析来源于July在其CSDN博客上的EM笔记《如何通俗理解EM算法》。 

前言
    

了解过EM算法的同学可能知道,EM算法是数据挖掘十大算法,可谓搞机器学习或数据挖掘的基本绕不开,但EM算法又像数据结构里的KMP算法,看似简单但又貌似不是一看就懂,想绕开却绕不开的又爱又恨,可能正在阅读此文的你感同身受。


本题更多解析见七月在线官网题库www.julyedu.com)——机器学习——面试大题(39题),或是下载七月在线APP可直接刷题~


12、KNN中的K如何选取的?

解析:

关于什么是KNN,可以查看此文:《从K近邻算法、距离度量谈到KD树、SIFT+BBF算法》(链接:http://blog.csdn.net/v_july_v/article/details/8203674)。

KNN中的K值选取对K近邻算法的结果会产生重大影响。如李航博士的一书「统计学习方法」上所说:

如果选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;
如果选择较大的K值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。 


K=N,则完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。
   


在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(简单来说,就是一部分样本做训练集,一部分做测试集)来选择最优的K值。


13、防止过拟合的方法

解析:

过拟合的原因是算法的学习能力过强;一些假设条件(如样本独立同分布)可能是不成立的;训练样本过少不能对整个空间进行分布估计。

处理方法: 

1 早停止:如在训练中多次迭代后发现模型性能没有显著提高就停止训练 

2 数据集扩增:原有数据增加、原有数据加随机噪声、重采样 

3 正则化,正则化可以限制模型的复杂度 

4 交叉验证 

5 特征选择/特征降维

6 创建一个验证集是最基本的防止过拟合的方法。我们最终训练得到的模型目标是要在验证集上面有好的表现,而不训练集


14、机器学习中,为何要经常对数据做归一化

解析:

机器学习模型被互联网行业广泛应用,如排序(参见:排序学习实践http://www.cnblogs.com/LBSer/p/4439542.html)、推荐、反作弊、定位(参见:基于朴素贝叶斯的定位算法http://www.cnblogs.com/LBSer/p/4020370.html)等。


一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化。 

为什么要归一化呢?

很多同学并未搞清楚,维基百科给出的解释:

1)归一化后加快了梯度下降求最优解的速度;

2)归一化有可能提高精度。

下面再简单扩展解释下这两点。


本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面试大题(42题),或是下载七月在线APP可直接刷题~


15、什么最小二乘法?

解析:

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

  

最小二乘法(又称最小平方法)是一种数学优化技术。

它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。


本题更多解析见七月在线官网题库www.julyedu.com)——机器学习——面试大题(43题),或是下载七月在线APP可直接刷题~


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

解析:

梯度下降法并不一定是全局下降最快的方向,它只是目标函数在当前的点的切平面(当然高维问题不能叫平面)上下降最快的方向。在practical implementation中,牛顿方向(考虑海森矩阵)才一般被认为是下降最快的方向,可以达到superlinear的收敛速度。梯度下降类的算法的收敛速度一般是linear甚至sublinear的(在某些带复杂约束的问题)。by林小溪(https://www.zhihu.com/question/30672734/answer/139689869)。


一般解释梯度下降,会用下山来举例。假设你现在在山顶处,必须抵达山脚下(也就是山谷最低处)的湖泊。但让人头疼的是,你的双眼被蒙上了无法辨别前进方向。


本题更多解析见七月在线官网题库www.julyedu.com)——机器学习——面试大题(44题),或是下载七月在线APP可直接刷题~


17、简单说说贝叶斯定理

解析:

在引出贝叶斯定理之前,先学习几个定义: 条件概率(又称后验概率)就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。 


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


本题更多解析见七月在线官网题库www.julyedu.com)——机器学习——面 试大题(45题),或是下载七月在线APP可直接刷题~


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

解析:

本题解析来源:https://www.zhihu.com/question/58230411 

首先从两个角度解释你的困惑: 

工具包自动处理数据缺失不代表具体的算法可以处理缺失项 对于有缺失的数据:以决策树为原型的模型优于依赖距离度量的模型 回答中也会介绍树模型,如随机森林(Random Forest)和xgboost如何处理缺失值。文章最后总结了在有缺失值时选择模型的小建议。


本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面试大题(46题),或是下载七月在线APP可直接刷题~


19、标准化与归一化的区别?

解析:

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

关于什么是归一化,请参见:https://www.julyedu.com/question/big/kp_id/23/ques_id/1011


20、随机森林如何处理缺失值?

解析:

解析一 @Yieshah:

众所周知,机器学习中处理缺失值的方法有很多,然而,由题目“随机森林如何处理缺失值”可知,问题关键在于随机森林如何处理,所以先简要介绍下随机森林吧。 随机森林是由很多个决策树组成的,首先要建立Bootstrap数据集,即从原始的数据中有放回地随机选取一些,作为新的数据集,新数据集中会存在重复的数据,然后对每个数据集构造一个决策树,但是不是直接用所有的特征来建造决策树,而是对于每一步,都从中随机的选择一些特征,来构造决策树,这样我们就构建了多个决策树,组成随机森林,把数据输入各个决策树中,看一看每个决策树的判断结果,统计一下所有决策树的预测结果,Bagging整合结果,得到最终输出。 那么,随机森林中如何处理缺失值呢?根据随机森林创建和训练的特点,随机森林对缺失值的处理还是比较特殊的。 


首先,给缺失值预设一些估计值,比如数值型特征,选择其余数据的中位数或众数作为当前的估计值,然后,根据估计的数值,建立随机森林,把所有的数据放进随机森林里面跑一遍。记录每一组数据在决策树中一步一步分类的路径,然后来判断哪组数据和缺失数据路径最相似,引入一个相似度矩阵,来记录数据之间的相似度,比如有N组数据,相似度矩阵大小就是N*N,如果缺失值是类别变量,通过权重投票得到新估计值,如果是数值型变量,通过加权平均得到新的估计值,如此迭代,直到得到稳定的估计值。 其实,该缺失值填补过程类似于推荐系统中采用协同过滤进行评分预测,先计算缺失特征与其他特征的相似度,再加权得到缺失值的估计,而随机森林中计算相似度的方法(数据在决策树中一步一步分类的路径)乃其独特之处。 


解析二 

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

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


21、随机森林如何评估特征重要性?

解析:

衡量变量重要性的方法有两种,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足够重要,那么改变它会极大的增加测试误差;反之,如果改变它测试误差没有增大,则说明该变量不是那么的重要。


22、优化Kmeans?

解析:

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


23、KMeans初始类簇中心点的选取。

解析:

k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。
1. 从输入的数据点集合中随机选择一个点作为第一个聚类中心
2. 对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)
3. 选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大
4. 重复2和3直到k个聚类中心被选出来
5. 利用这k个初始的聚类中心来运行标准的k-means算法


24、解释对偶的概念。

解析:

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


25、如何进行特征选择?

解析:

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

1. 去除方差较小的特征 

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

3. 随机森林,对于分类问题,通常采用基尼不纯度或者信息增益,对于回归问题,通常采用的是方差或者最小二乘拟合。一般不需要feature engineering、调参等繁琐的步骤。

它的两个主要问题,

1是重要的特征有可能得分很低(关联特征问题),

2是这种方法对特征变量类别多的特征越有利(偏向问题)。 

4. 稳定性选择。

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


26、衡量分类器的好坏?

解析:

 这里首先要知道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 


更详细请点击:https://siyaozhang.github.io/2017/04/04/%E5%87%86%E7%A1%AE%E7%8E%87%E3%80%81%E5%8F%AC%E5%9B%9E%E7%8 

解析来源:@我愛大泡泡,链接:

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


27、机器学习和统计里面的auc的物理意义是啥?

解析:

auc是评价模型好坏的常见指标之一,本题解析来自:https://www.zhihu.com/question/39840928 


分三部分,第一部分是对AUC的基本介绍,包括AUC的定义,解释,以及算法和代码,第二部分用逻辑回归作为例子来说明如何通过直接优化AUC来训练,第三部分,内容完全由@李大猫原创——如何根据auc值来计算真正的类别,换句话说,就是对auc的反向工程。 


1、什么是AUC? AUC是一个模型评价指标,只能用于二分类模型的评价,对于二分类模型,还有很多其他评价指标,比如logloss,accuracy,precision。如果你经常关注数据挖掘比赛,比如kaggle,那你会发现AUC和logloss基本是最常见的模型评价指标。


本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面 试大题(55题),或是下载七月在线APP可直接刷题~


28、数据预处理。

解析:

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

i. 离散:None,

ii. 连续:均值。 

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

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

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

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


29、观察增益gain, alpha和gamma越大,增益越小?

解析:

xgboost寻找分割点的标准是最大化gain. 考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中计算Gain按最大值找出最佳的分割点。


它的计算公式分为四项, 可以由正则化项参数调整(lamda为叶子权重平方和的系数, gama为叶子数量):
 

第一项是假设分割的左孩子的权重分数, 第二项为右孩子, 第三项为不分割总体分数, 最后一项为引入一个节点的复杂度损失
由公式可知, gama越大gain越小, lamda越大, gain可能小也可能大.
原问题是alpha而不是lambda, 这里paper上没有提到, xgboost实现上有这个参数. 上面是我从paper上理解的答案,下面是搜索到的:
https://zhidao.baidu.com/question/2121727290086699747.html?fr=iks&word=xgboost+lamda&ie=gbk
lambda[默认1]权重的L2正则化项。(和Ridge regression类似)。 


这个参数是用来控制XGBoost的正则化部分的。虽然大部分数据科学家很少用到这个参数,但是这个参数在减少过拟合上还是可以挖掘出更多用处的。

11、alpha[默认1]权重的L1正则化项。(和Lasso regression类似)。 可以应用在很高维度的情况下,使得算法的速度更快。
gamma[默认0]在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。
引用自@AntZ


30、什麽造成梯度消失问题?

解析:

Yes you should understand backdrop-Andrej Karpathy

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

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

解析来源:@许韩,链接:https://www.zhihu.com/question/41233373/answer/145404190

简而言之,就是sigmoid函数f(x)的导数为f(x)*(1-f(x)), 因为f(x)的输出在0-1之间,所以随着深度的增加,从顶端传过来的导数每次都乘以两个小于1的数,很快就变得特别特别小。
引用自@张雨石


31、到底什么是特征工程?

解析:

首先,大多数机器学习从业者主要在公司做什么呢?不是做数学推导,也不是发明多高大上的算法,而是做特征工程,如下图所示(图来自:http://www.julyedu.com/video/play/18)


那到底什么是特征工程呢?


本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面试大题(59题),或是下载七月在线APP可直接刷题~


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


解析:

更多请查看此课程《机器学习工程师 第八期 [六大阶段、层层深入]》第7次课 特征工程。



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

解析:

看下来,这些问题的答案基本都在本BAT机器学习面试1000题系列里了。
引用自@穆文,链接:https://www.zhihu.com/question/62482926


34、数据不平衡问题


解析:

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

采样,对小样本加噪声采样,对大样本进行下采样
数据生成,利用已知样本生成新的样本
进行特殊的加权,如在Adaboost中或者SVM中
采用对不平衡数据集不敏感的算法
改变评价标准:用AUC/ROC来进行评价
采用Bagging/Boosting/ensemble等方法

在设计模型的时候考虑数据的先验分布


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

解析:

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

http://blog.sina.com.cn/s/blog_178bcad000102x70r.html



36、常见的分类算法有哪些?他们各自的优缺点是什么?

解析:

贝叶斯分类法 

优点: 

1)所需估计的参数少,对于缺失数据不敏感。 

2)有着坚实的数学基础,以及稳定的分类效率。

 缺点:

 1)假设属性之间相互独立,这往往并不成立。(喜欢吃番茄、鸡蛋,却不喜欢吃番茄炒蛋)。 

2)需要知道先验概率。 

3)分类决策存在错误率。 


 决策树

 优点: 

1)不需要任何领域知识或参数假设。 

2)适合高维数据。 

3)简单易于理解。 

4)短时间内处理大量数据,得到可行且效果较好的结果。 

5)能够同时处理数据型和常规性属性。

 缺点: 

1)对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。 

2)易于过拟合。 

3)忽略属性之间的相关性。 

4)不支持在线学习。 


 支持向量机

优点: 

1)可以解决小样本下机器学习的问题。 

2)提高泛化性能。 

3)可以解决高维、非线性问题。超高维文本分类仍受欢迎。 

4)避免神经网络结构选择和局部极小的问题。

缺点: 

1)对缺失数据敏感。 

2)内存消耗大,难以解释。 

3)运行和调差略烦人。 


 K近邻  

优点: 

1)思想简单,理论成熟,既可以用来做分类也可以用来做回归; 

2)可用于非线性分类; 

 3)训练时间复杂度为O(n); 

4)准确度高,对数据没有假设,对outlier不敏感;

 缺点: 

1)计算量太大 

2)对于样本分类不均衡的问题,会产生误判。 

3)需要大量的内存。 

4)输出的可解释性不强。 


 Logistic回归

优点: 

1)速度快。

 2)简单易于理解,直接看到各个特征的权重。 

3)能容易地更新模型吸收新的数据。 

4)如果想要一个概率框架,动态调整分类阀值。

 缺点: 

特征处理复杂。需要归一化和较多的特征工程。


神经网络  

优点: 

1)分类准确率高。 

2)并行处理能力强。 

3)分布式存储和学习能力强。 

4)鲁棒性较强,不易受噪声影响。

 缺点: 

1)需要大量参数(网络拓扑、阀值、阈值)。 

2)结果难以解释。 

3)训练时间过长。 


 Adaboost 

优点: 

1)adaboost是一种有很高精度的分类器。 

2)可以使用各种方法构建子分类器,Adaboost算法提供的是框架。 

3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。

 4)简单,不用做特征筛选。

 5)不用担心overfitting。

缺点:
对outlier比较敏感


37、常见的监督学习算法有哪些?

解析:

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


38、说说常见的优化算法及其优缺点?

解析:

温馨提示:在回答面试官的问题的时候,往往将问题往大的方面去回答,这样不会陷于小的技术上死磕,最后很容易把自己嗑死了。 简言之 

1)随机梯度下降 优点:可以一定程度上解决局部最优解的问题 缺点:收敛速度较慢 

2)批量梯度下降 优点:容易陷入局部最优解 缺点:收敛速度较快 

3)mini_batch梯度下降 综合随机梯度下降和批量梯度下降的优缺点,提取的一个中和的方法。 

4)牛顿法 牛顿法在迭代的时候,需要计算Hessian矩阵,当维度较高的时候,计算  Hessian矩阵比较困难。 

5)拟牛顿法 拟牛顿法是为了改进牛顿法在迭代过程中,计算Hessian矩阵而提取的算法,它采用的方式是通过逼近Hessian的方式来进行求解。

本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面试大题(66题),或是下载七月在线APP可直接刷题~


39、特征向量的归一化方法有哪些?

解析:

线性函数转换,表达式如下: y=(x-MinValue)/(MaxValue-MinValue) 

对数函数转换,表达式如下: y=log10 (x) 

反余切函数转换 ,表达式如下: y=arctan(x)*2/PI 

减去均值,除以方差: y=(x-means)/ variance


40、RF与GBDT之间的区别与联系?

解析:

1)相同点:都是由多棵树组成,最终的结果都是由多棵树一起决定。 

2)不同点: 

a 组成随机森林的树可以分类树也可以是回归树,而GBDT只由回归树组成 

b 组成随机森林的树可以并行生成,而GBDT是串行生成 

c 随机森林的结果是多数表决表决的,而GBDT则是多棵树累加之和 

d 随机森林对异常值不敏感,而GBDT对异常值比较敏感 

e 随机森林是减少模型的方差,而GBDT是减少模型的偏差 f 随机森林不需要进行特征归一化。而GBDT则需要进行特征归一化


41、

解析:


42、请比较下EM算法、HMM、CRF

解析:

这三个放在一起不是很恰当,但是有互相有关联,所以就放在这里一起说了。注意重点关注算法的思想。 

(1)EM算法   

EM算法是用于含有隐变量模型的极大似然估计或者极大后验估计,有两步组成:

E步,求期望(expectation);

M步,求极大(maxmization)。

本质上EM算法还是一个迭代算法,通过不断用上一代参数对隐变量的估计来对当前变量进行计算,直到收敛。   

注意:EM算法是对初值敏感的,而且EM是不断求解下界的极大化逼近求解对数似然函数的极大化的算法,也就是说EM算法不能保证找到全局最优值。对于EM的导出方法也应该掌握。


(2)HMM算法   

隐马尔可夫模型是用于标注问题的生成模型。有几个参数(π,A,B):初始状态概率向量π,状态转移矩阵A,观测概率矩阵B。称为马尔科夫模型的三要素。 

马尔科夫三个基本问题: 概率计算问题:给定模型和观测序列,计算模型下观测序列输出的概率。–》前向后向算法 学习问题:已知观测序列,估计模型参数,即用极大似然估计来估计参数。–》Baum-Welch(也就是EM算法)和极大似然估计。 

预测问题:已知模型和观测序列,求解对应的状态序列。–》近似算法(贪心算法)和维比特算法(动态规划求最优路径) 


(3)条件随机场CRF   

给定一组输入随机变量的条件下另一组输出随机变量的条件概率分布密度。条件随机场假设输出变量构成马尔科夫随机场,而我们平时看到的大多是线性链条随机场,也就是由输入对输出进行预测的判别模型。求解方法为极大似然估计或正则化的极大似然估计。 之所以总把HMM和CRF进行比较,主要是因为CRF和HMM都利用了图的知识,但是CRF利用的是马尔科夫随机场(无向图),而HMM的基础是贝叶斯网络(有向图)。而且CRF也有:概率计算问题、学习问题和预测问题。大致计算方法和HMM类似,只不过不需要EM算法进行学习问题。 


(4)HMM和CRF对比   

其根本还是在于基本的理念不同,一个是生成模型,一个是判别模型,这也就导致了求解方式的不同。



43、带核的SVM为什么能分类非线性问题?

解析:

核函数的本质是两个函数的內积,通过核函数将其隐射到高维空间,在高维空间非线性问题转化为线性问题, SVM得到超平面是高维空间的线性分类平面, 如图:

其分类结果也视为低维空间的非线性分类结果, 因而带核的SVM就能分类非线性问题。



44、请说说常用核函数及核函数的条件


解析:

我们通常说的核函数指的是正定和函数,其充要条件是对于任意的x属于X,要求K对应的Gram矩阵要是半正定矩阵。RBF核径向基,这类函数取值依赖于特定点间的距离,所以拉普拉斯核其实也是径向基核。SVM关键是选取核函数的类型,常用核函数主要有线性内核,多项式内核,径向基内核(RBF),sigmoid核。


线性核函数

线性核,主要用于线性可分的情况,我们可以看到特征空间到输入空间的维度是一样的,其参数少速度快,对于线性可分数据,其分类效果很理想,因此我们通常首先尝试用线性核函数来做分类,看看效果如何,如果不行再换别的 多项式核函数

多项式核函数

可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。 高斯(RBF)核函数

高斯径向基函数

是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。  


sigmoid核函数

采用sigmoid核函数,支持向量机实现的就是一种多层神经网络。 


因此,在选用核函数的时候,如果我们对我们的数据有一定的先验知识,就利用先验来选择符合数据分布的核函数;如果不知道的话,通常使用交叉验证的方法,来试用不同的核函数,误差最下的即为效果最好的核函数,或者也可以将多个核函数结合起来,形成混合核函数。  


在吴恩达的课上,也曾经给出过一系列的选择核函数的方法: 如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM; 如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数; 如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。



45、请具体说说Boosting和Bagging的区别

解析:

(1) Bagging之随机森林   

随机森林改变了决策树容易过拟合的问题,这主要是由两个操作所优化的:   

1)Boostrap从袋内有放回的抽取样本值   

2)每次随机抽取一定数量的特征(通常为sqr(n))。   

分类问题:采用Bagging投票的方式选择类别频次最高的   

回归问题:直接取每颗树结果的平均值。 


常见参数 误差分析 优点 缺点

1、树最大深度 

2、树的个数  

3、节点上的最小样本数 

4、特征数(sqr(n)) oob(out-of-bag)
将各个树的未采样样本作为预测样本统计误差作为误分率 可以并行计算
不需要特征选择
可以总结出特征重要性
可以处理缺失数据
不需要额外设计测试集 在回归上不能输出连续结果 

 (2)Boosting之AdaBoost
Boosting的本质实际上是一个加法模型,通过改变训练样本权重学习多个分类器并进行一些线性组合。而Adaboost就是加法模型+指数损失函数+前项分布算法。Adaboost就是从弱分类器出发反复训练,在其中不断调整数据权重或者是概率分布,同时提高前一轮被弱分类器误分的样本的权值。最后用分类器进行投票表决(但是分类器的重要性不同)。 

 (3)Boosting之GBDT
将基分类器变成二叉树,回归用二叉回归树,分类用二叉分类树。和上面的Adaboost相比,回归树的损失函数为平方损失,同样可以用指数损失函数定义分类问题。但是对于一般损失函数怎么计算呢?GBDT(梯度提升决策树)是为了解决一般损失函数的优化问题,方法是用损失函数的负梯度在当前模型的值来模拟回归问题中残差的近似值。
注:由于GBDT很容易出现过拟合的问题,所以推荐的GBDT深度不要超过6,而随机森林可以在15以上。 

 (4)Boosting之Xgboost
这个工具主要有以下几个特点:
支持线性分类器
可以自定义损失函数,并且可以用二阶偏导
加入了正则化项:叶节点数、每个叶节点输出score的L2-norm
支持特征抽样
在一定情况下支持并行,只有在建树的阶段才会用到,每个节点可以并行的寻找分裂特征。


46、逻辑回归相关问题

解析:

(1)公式推导一定要会 

(2)逻辑回归的基本概念   

这个最好从广义线性模型的角度分析,逻辑回归是假设y服从Bernoulli分布。 

(3)L1-norm和L2-norm   

其实稀疏的根本还是在于L0-norm也就是直接统计参数不为0的个数作为规则项,但实际上却不好执行于是引入了L1-norm;而L1norm本质上是假设参数先验是服从Laplace分布的,而L2-norm是假设参数先验为Gaussian分布,我们在网上看到的通常用图像来解答这个问题的原理就在这。   


但是L1-norm的求解比较困难,可以用坐标轴下降法或是最小角回归法求解。 

(4)LR和SVM对比   

首先,LR和SVM最大的区别在于损失函数的选择,LR的损失函数为Log损失(或者说是逻辑损失都可以)、而SVM的损失函数为hinge loss。   

其次,两者都是线性模型。   

最后,SVM只考虑支持向量(也就是和分类相关的少数点) 

(5)LR和随机森林区别   

随机森林等树算法都是非线性的,而LR是线性的。LR更侧重全局优化,而树模型主要是局部的优化。 

(6)常用的优化方法   

逻辑回归本身是可以用公式求解的,但是因为需要求逆的复杂度太高,所以才引入了梯度下降算法。   一阶方法:梯度下降、随机梯度下降、mini 随机梯度下降降法。随机梯度下降不但速度上比原始梯度下降要快,局部最优化问题时可以一定程度上抑制局部最优解的发生。  


二阶方法:

牛顿法、拟牛顿法:   

这里详细说一下牛顿法的基本原理和牛顿法的应用方式。牛顿法其实就是通过切线与x轴的交点不断更新切线的位置,直到达到曲线与x轴的交点得到方程解。在实际应用中我们因为常常要求解凸优化问题,也就是要求解函数一阶导数为0的位置,而牛顿法恰好可以给这种问题提供解决方法。实际应用中牛顿法首先选择一个点作为起始点,并进行一次二阶泰勒展开得到导数为0的点进行一个更新,直到达到要求,这时牛顿法也就成了二阶求解问题,比一阶方法更快。我们常常看到的x通常为一个多维向量,这也就引出了Hessian矩阵的概念(就是x的二阶导数矩阵)。


缺点:牛顿法是定长迭代,没有步长因子,所以不能保证函数值稳定的下降,严重时甚至会失败。还有就是牛顿法要求函数一定是二阶可导的。而且计算Hessian矩阵的逆复杂度很大。 


拟牛顿法: 不用二阶偏导而是构造出Hessian矩阵的近似正定对称矩阵的方法称为拟牛顿法。拟牛顿法的思路就是用一个特别的表达形式来模拟Hessian矩阵或者是他的逆使得表达式满足拟牛顿条件。主要有DFP法(逼近Hession的逆)、BFGS(直接逼近Hession矩阵)、 L-BFGS(可以减少BFGS所需的存储空间)。


47、什么是共线性, 跟过拟合有什么关联?

解析:

共线性:多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确。 共线性会造成冗余,导致过拟合。 

解决方法:排除变量的相关性/加入权重正则。  

本题解析来源:@抽象猴,链接:https://www.zhihu.com/question/41233373/answer/145404190


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

解析:

本题解析来源:@jasonfreak,链接:http://www.cnblogs.com/jasonfreak/p/5448385.html 

目录 

1 特征工程是什么? 

2 数据预处理   

2.1 无量纲化     

2.1.1 标准化     

2.1.2 区间缩放法     

2.1.3 标准化与归一化的区别   

2.2 对定量特征二值化   

2.3 对定性特征哑编码   

2.4 缺失值计算   

2.5 数据变换   

2.6 回顾 


3 特征选择   

3.1 Filter     

3.1.1 方差选择法     

3.1.2 相关系数法     

3.1.3 卡方检验     

3.1.4 互信息法   

3.2 Wrapper     

3.2.1 递归特征消除法   

3.3 Embedded     

3.3.1 基于惩罚项的特征选择法     

3.3.2 基于树模型的特征选择法   

3.4 回顾 


4 降维   

4.1 主成分分析法(PCA)   

4.2 线性判别分析法(LDA)   

4.3 回顾 5 总结 6 参考资料


本题更多解析见七月在线官网题库(www.julyedu.com)——机器学习——面试大题(76题),或是下载七月在线APP可直接刷题~



49、用贝叶斯机率说明Dropout的原理

解析:

回想一下使用Bagging学习,我们定义 k 个不同的模型,从训练集有替换采样 构造 k 个不同的数据集,然后在训练集上训练模型 i。 


Dropout的目标是在指数 级数量的神经网络上近似这个过程。Dropout训练与Bagging训练不太一样。在Bagging的情况下,所有模型是独立 的。 


在Dropout的情况下,模型是共享参数的,其中每个模型继承的父神经网络参 数的不同子集。参数共享使得在有限可用的内存下代表指数数量的模型变得可能。 在Bagging的情况下,每一个模型在其相应训练集上训练到收敛。 在Dropout的情况下,通常大部分模型都没有显式地被训练,通常该模型很大,以致到宇宙毁灭都不 能采样所有可能的子网络。取而代之的是,可能的子网络的一小部分训练单个步骤,参数共享导致剩余的子网络能有好的参数设定。


http://bi.dataguru.cn/article-10459-1.html


50、对于维度极低的特征,选择线性还是非线性分类器?

解析:

非线性分类器,低维空间可能很多特征都跑到一起了,导致线性不可分。 

1.如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM

2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel 

3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况。


由于文章篇幅较长,这次只整理了50题,下期会继续更新整理后面50道题~


面试题来源七月在线官网题库www.julyedu.com)——面试题库——面试大题——机器学习,下载七月在线APP可在线刷题。





免费公开课分享


主题:程序员春招进大厂指南


你将掌握


1.面试官的面试逻辑是什么?
· 技术  · 基础  · 潜力

2.Leetcode最新试题解析
(1) 二叉树知多少
(2) 换个角度看问题
(3) 挑战难题


时间3月17日(周日)晚8点


前BAT面试官教你成为面试高手

明晚即将开始  感兴趣的朋友赶快扫码报名


扫描下方海报二维码 回复:面试 

立即参与



往期推荐






成为年薪50W的数据分析师,你首先得学会这项技能(文末送课)

【实战分享】电影推荐系统项目实战应用

一文让你通俗理解奇异值分解

万字长文概述NLP中的深度学习技术

34个最优秀好用的Python开源框架

一文详解机器学习中最好用的提升方法:Boosting 与 AdaBoost



点击“阅读原文”,查看更多面试题

好看你就点点
登录查看更多
9

相关内容

在机器学习领域,分类的目标是指将具有相似特征的对象聚集。而一个线性分类器则透过特征的线性组合来做出分类决定,以达到此种目的。对象的特征通常被描述为特征值,而在向量中则描述为特征向量。
专知会员服务
139+阅读 · 2020年5月19日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
356+阅读 · 2020年2月15日
谷歌机器学习速成课程中文版pdf
专知会员服务
145+阅读 · 2019年12月4日
【机器学习课程】Google机器学习速成课程
专知会员服务
164+阅读 · 2019年12月2日
【斯坦福&Google】面向机器人的机器学习,63页PPT
专知会员服务
25+阅读 · 2019年11月19日
备战AI求职季 | 100道机器学习面试题(下)
七月在线实验室
9+阅读 · 2019年3月22日
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
BAT机器学习面试题1000题(331~335题)
七月在线实验室
12+阅读 · 2018年8月13日
BAT机器学习面试题1000题(316~320题)
七月在线实验室
14+阅读 · 2018年1月18日
机器学习面试题精讲(一)
七月在线实验室
4+阅读 · 2018年1月11日
BAT机器学习面试题及解析(266-270题)
七月在线实验室
6+阅读 · 2017年12月13日
BAT题库 | 机器学习面试1000题系列(第226~230题)
七月在线实验室
9+阅读 · 2017年11月27日
BAT题库 | 机器学习面试1000题系列(第196~200题)
七月在线实验室
17+阅读 · 2017年11月16日
BAT机器学习面试1000题系列(第116~120题)
七月在线实验室
16+阅读 · 2017年10月24日
BAT机器学习面试1000题系列(第36~40题)
七月在线实验室
8+阅读 · 2017年10月3日
Efficiently Embedding Dynamic Knowledge Graphs
Arxiv
14+阅读 · 2019年10月15日
Arxiv
19+阅读 · 2018年10月25日
Arxiv
7+阅读 · 2018年1月10日
VIP会员
相关VIP内容
相关资讯
备战AI求职季 | 100道机器学习面试题(下)
七月在线实验室
9+阅读 · 2019年3月22日
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
BAT机器学习面试题1000题(331~335题)
七月在线实验室
12+阅读 · 2018年8月13日
BAT机器学习面试题1000题(316~320题)
七月在线实验室
14+阅读 · 2018年1月18日
机器学习面试题精讲(一)
七月在线实验室
4+阅读 · 2018年1月11日
BAT机器学习面试题及解析(266-270题)
七月在线实验室
6+阅读 · 2017年12月13日
BAT题库 | 机器学习面试1000题系列(第226~230题)
七月在线实验室
9+阅读 · 2017年11月27日
BAT题库 | 机器学习面试1000题系列(第196~200题)
七月在线实验室
17+阅读 · 2017年11月16日
BAT机器学习面试1000题系列(第116~120题)
七月在线实验室
16+阅读 · 2017年10月24日
BAT机器学习面试1000题系列(第36~40题)
七月在线实验室
8+阅读 · 2017年10月3日
Top
微信扫码咨询专知VIP会员