机器学习面试 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共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出