Fork me on GitHub

机器学习面试 150 题:不只是考 SVM xgboost 特征工程 | 附送【名企 AI 面试 100 题】

篇幅有限,本文不会把每一题的参考答案都加载出来,会摘出一些摘要,完整解析见题库链接,大家有任何问题欢迎在题库链接下随时留言、讨论、纠正。

看完本了觉得有用点个赞吧!添加微信:julyedukefu14,回复【7】领取最新升级版【名企AI面试100题】,礼包部分资料如下(篇幅有限,私我领取全部资料):

101、你意识到你的模型受到低偏差和高方差问题的困扰。应该使用哪种算法来解决问题呢?为什么?

低偏差意味着模型的预测值接近实际值。换句话说,该模型有足够的灵活性,以模仿训练数据的分布。貌似很好,但是别忘了,一个灵活的模型没有泛化能力。这意味着,当这个模型用在对一个未曾见过的数据集进行测试的时候,它会令人很失望。

在这种情况下,我们可以使用bagging算法(如随机森林),以解决高方差问题。

bagging算法把数据集分成重复随机取样形成的子集。然后,这些样本利用单个学习算法生成一组模型。接着,利用投票(分类)或平均(回归)把模型预测结合在一起。

102、给你一个数据集。该数据集包含很多变量,你知道其中一些是高度相关的。经理要求你用PCA。你会先去掉相关的变量吗?为什么?

你可能会说不,但是这有可能是不对的。丢弃相关变量会对PCA有实质性的影响,因为有相关变量的存在,由特定成分解释的方差被放大。

例如:在一个数据集有3个变量,其中有2个是相关的。如果在该数据集上用PCA,第一主成分的方差会是与其不相关变量的差异的两倍。此外,加入相关的变量使PCA错误地提高那些变量的重要性,这是有误导性的。

103、花了几个小时后,现在你急于建一个高精度的模型。结果,你建了5 个GBM (Gradient Boosted Models),想着boosting算法会显示魔力。不幸的是,没有一个模型比基准模型表现得更好。最后,你决定将这些模型结合到一起。尽管众所周知,结合模型通常精度高,但你就很不幸运。你到底错在哪里?

据我们所知,组合的学习模型是基于合并弱的学习模型来创造一个强大的学习模型的想法。但是,只有当各模型之间没有相关性的时候组合起来后才比较强大。由于我们已经试了5个 GBM,但没有提高精度,表明这些模型是相关的。

具有相关性的模型的问题是,所有的模型提供相同的信息。例如:如果模型1把User1122归类为 1,模型2和模型3很有可能会做有同样分类,即使它的实际值应该是0,因此,只有弱相关的模型结合起来才会表现更好。

104、KNN和KMEANS聚类(kmeans clustering)有什么不同?

不要被它们的名字里的“K”误导。

你应该知道,这两种算法之间的根本区别是,KMEANS本质上是无监督学习而KNN是监督学习。KMEANS是聚类算法。KNN是分类(或回归)算法。

KMEAN算法把一个数据集分割成簇,使得形成的簇是同构的,每个簇里的点相互靠近。该算法试图维持这些簇之间有足够的可分离性。由于无监督的性质,这些簇没有任何标签。

NN算法尝试基于其k(可以是任何数目)个周围邻居来对未标记的观察进行分类。它也被称为懒惰学习法,因为它涉及最小的模型训练。因此,它不用训练数据对未看见的数据集进行泛化。

105、真阳性率和召回有什么关系?写出方程式。

真阳性率=召回。是的,它们有相同的公式(TP / TP + FN)。

注意:要了解更多关于估值矩阵的知识。

106、在分析了你的模型后,经理告诉你,你的模型有多重共线性。你会如何验证他说的是真的?在不丢失任何信息的情况下,你还能建立一个更好的模型吗?

要检查多重共线性,我们可以创建一个相关矩阵,用以识别和除去那些具有75%以上相关性(决定阈值是主观的)的变量。此外,我们可以计算VIF(方差膨胀因子)来检查多重共线性的存在。

VIF值<= 4表明没有多重共线性,而值> = 10意味着严重的多重共线性。

107、什么时候Ridge回归优于Lasso回归?

你可以引用ISLR的作者Hastie和Tibshirani的话,他们断言在对少量变量有中等或大尺度的影响的时候用lasso回归。在对多个变量只有小或中等尺度影响的时候,使用Ridge回归。

从概念上讲,我们可以说,Lasso回归(L1)同时做变量选择和参数收缩,而ridge回归只做参数收缩,并最终在模型中包含所有的系数。在有相关变量时,ridge回归可能是首选。

此外,ridge回归在用最小二乘估计有更高的偏差的情况下效果最好。因此,选择合适的模型取决于我们的模型的目标。

108、如何在一个数据集上选择重要的变量?给出解释。

以下是你可以使用的选择变量的方法:

1.选择重要的变量之前除去相关变量

2.用线性回归然后基于P值选择变量

3.使用前向选择,后向选择,逐步选择

4.使用随机森林和Xgboost,然后画出变量重要性图

5.使用lasso回归

6.测量可用的特征集的的信息增益,并相应地选择前n个特征量。

109、Gradient boosting算法(GBM)和随机森林都是基于树的算法,它们有什么区别?

最根本的区别是,随机森林算法使用bagging技术做出预测。GBM采用boosting技术做预测。在bagging技术中,数据集用随机采样的方法被划分成使n个样本。然后,使用单一的学习算法,在所有样本上建模。接着利用投票或者求平均来组合所得到的预测。

110、运行二元分类树算法很容易,但是你知道一个树是如何做分割的吗,即树如何决定把哪些变量分到哪个根节点和后续节点上?

分类树利用基尼系数与节点熵来做决定。简而言之,树算法找到最好的可能特征,它可以将数据集分成最纯的可能子节点。树算法找到可以把数据集分成最纯净的可能的子节点的特征量。基尼系数是,如果总体是完全纯的,那么我们从总体中随机选择2个样本,而这2个样本肯定是同一类的而且它们是同类的概率也是1。

111、你有一个数据集,变量个数p大于观察值个数n。为什么用OLS是一个不好的选择?用什么技术最好?为什么?

在这样的高维数据集中,我们不能用传统的回归技术,因为它们的假设往往不成立。当p>nN,我们不能计算唯一的最小二乘法系数估计,方差变成无穷大,因此OLS无法在此使用的。

为了应对这种情况,我们可以使用惩罚回归方法,如lasso、LARS、ridge,这些可以缩小系数以减少方差。准确地说,当最小二乘估计具有较高方差的时候,ridge回归最有效。

112、什么是凸包?(提示:想一想SVM)其他方法还包括子集回归、前向逐步回归。

当数据是线性可分的,凸包就表示两个组数据点的外边界。一旦凸包建立,我们得到的最大间隔超平面(MMH)作为两个凸包之间的垂直平分线。MMH是能够最大限度地分开两个组的线。

113、我们知道,独热编码(OneHotEncoder)会增加数据集的维度。但是标签编码(LabelEncoder)不会。为什么?

对于这个问题不要太纠结。这只是在问这两者之间的区别。

用独热编码(OneHotEncoder),数据集的维度(也即特征)增加是因为它为分类变量中存在的的每一级都创建了一个变量。例如:假设我们有一个变量“颜色”。这变量有3个层级,即红色、蓝色和绿色。

对“颜色”变量进行一位有效编码会生成含0和1值的Color.Red,Color.Blue和Color.Green 三个新变量。在标签编码中,分类变量的层级编码为0,1和2,因此不生成新变量。标签编码主要是用于二进制变量。

114、你会在时间序列数据集上使用什么交叉验证技术?是用k倍或LOOCV?

都不是。对于时间序列问题,k倍可能会很麻烦,因为第4年或第5年的一些模式有可能跟第3年的不同,而对数据集的重复采样会将分离这些趋势,我们可能最终是对过去几年的验证,这就不对了。

相反,我们可以采用如下所示的5倍正向链接策略:

fold 1 : training [1], test [2]

fold 2 : training [1 2], test [3]

fold 3 : training [1 2 3], test [4]

fold 4 : training [1 2 3 4], test [5]

fold 5 : training [1 2 3 4 5], test [6]

1,2,3,4,5,6代表的是年份。

115、给你一个缺失值多于30%的数据集?比方说,在50个变量中,有8个变量的缺失值都多于30%。你对此如何处理?

我们可以用下面的方法来处理:

1.把缺失值分成单独的一类,这些缺失值说不定会包含一些趋势信息。

2.我们可以毫无顾忌地删除它们。

3.可能值插补缺失值

它的思想来源是以最可能的值来插补缺失值比全部删除不完全样本所产生的信息丢失要少。在数据挖掘中,面对的通常是大型的数据库,它的属性有几十个甚至几百个,因为一个属性值的缺失而放弃大量的其他属性值,这种删除是对信息的极大浪费,所以产生了以可能值对缺失值进行插补的思想与方法。

看完本了觉得有用点个赞吧!添加微信:julyedukefu14,回复【7】领取最新升级版【名企AI面试100题】,礼包部分资料如下(篇幅有限,私我领取全部资料):


本文地址:https://www.6aiq.com/article/1621017230537
本文版权归作者和AIQ共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出