本文为 AI 研习社编译的技术博客,原标题 :
Data Science and Machine Learning Interview Questions
作者 | George Seif
翻译 | Disillusion
校对 | 酱番梨 整理 | 菠萝妹
原文链接:
https://towardsdatascience.com/data-science-and-machine-learning-interview-questions-3f6207cf040b
可怕的机器学习面试。你觉得自己什么都懂,直到你进行了测试!但一切可以得到改变。
在过去的几个月里,我面试了许多公司涉及数据科学和机器学习的初级职位。介绍一下我自己,以让你对我有一定了解。我还有最后几个月就研究生毕业,我的硕士是机器学习和计算机视觉,我之前的大部分经验是研究/学术,但在一个早期创业公司待过8个月(与机器学习无关)。这些角色包括数据科学、通用机器学习和专精自然语言处理及计算机视觉。我面试过亚马逊、特斯拉、三星、优步、华为等大公司,也面试过很多从初创阶段到资金雄厚的初创公司。
今天我将和大家分享我被问到过的所有面试问题以及如何应答这些问题。许多问题都是很常见的理论,但许多其他问题相当有创意。我将简单地列出最常见的一些问题,因为网上有很多关于它们的资源,并将更深入地介绍一些不太常见和更刁钻的问题。我希望通过阅读这篇文章,你可以在机器学习面试中取得好成绩,找到你梦想的工作!
让我们开始吧:
-
偏差和方差之间的协调是什么?
-
什么是梯度下降?
-
解释过拟合和欠拟合以及如何与之对抗?
-
你如何对抗维度的诅咒?
-
什么是正则化,我们为什么要使用它,并给出一些常见方法的例子?
-
解释主成分分析法 (PCA)?
-
为什么在神经网络中ReLU比Sigmoid更好更常用 ?
-
什么是数据标准化,我们为什么需要它? 我觉得很有必要强调这一题。数据标准化是非常重要的预处理步骤,用于对数值进行调节,使其拟合特定的范围,以确保在反向传播过程中更好地收敛。一般来说,这可以归结为减去每个数据点的均值,再除以其标准差。如果我们不这样做,那么一些特征(那些高量级的)将在成本函数中得到更多的权重(如果一个高量级的特征变化了1%,那么这个变化是相当大的,但是对于较小量级的特征来说,它是相当小的)。数据标准化使得所有特征的权重相等。
-
解释降维,在哪里会用到以及它的好处? 降维是通过减少所考虑的特征变量数量来得到一组主变量(也就是重要特征)的过程。特性的重要性取决于特征变量对数据信息表示的贡献,并取决于你使用哪种技术。决定使用哪种技术取决于反复试验和偏好。通常从线性技术开始,当结果不拟合时,就转向非线性技术。数据集降维的潜在好处有:(1)减少所需存储空间 (2)加速计算(例如在机器学习算法),维度低意味着更少的计算,维度低也意味着可以使用不适合高维度的算法 (3)删除冗余特征,例如没有意义同时用平方米和平方英里来存储地形的大小(可能是数据采集存在缺陷) (4)降低数据维度到2D或3D可能允许我们绘图和可视化它们,如观察模式,给我们深刻见解 (5)太多的特征或太复杂的模型可能导致过度拟合。
-
如何处理数据集中丢失或损坏的数据? 你可以在数据集中找到丢失/损坏的数据,你可以删除这些行或列,或者用另一个值替换它们。在Pandas中,有两个非常有用的方法:isnull()和dropna(),它们将帮助您找到丢失或损坏数据的数据列,并删除这些值。如果希望用占位符值(例如0)填充无效值,可以使用fillna()方法。
-
解释这种聚类算法? 我写了一篇很受欢迎的文章,是关于数据科学家需要知道的5种聚类算法,用各种可视化图形详细解释了每种算法。
-
你将如何进行探索性数据分析(EDA)? EDA的目标是在应用预测模型之前从数据中收集一些见解,也就是获得一些信息。基本上,你希望以一种从粗到细的方式进行EDA。我们从获得一些高层次的全局见解开始。看看一些不平衡的类。看看每个类的均值和方差。查看前几行,看看它是关于什么的。运行Pandas df.info()来查看哪些特性是连续的、分类的、它们的类型(int、float、string)。接下来,删除在分析和预测中不无用的列。这些可能是看起来无用的列,其中一个是许多行具有相同的值(即该列没有给我们很多信息),或者它丢失了很多值。我们还可以用该列中最常见的值或中值填充缺失的值。现在我们可以开始做一些基本的可视化。从高层次的东西开始。为特征是分类和有少数组的做一些条形图。最后类的条形图。看看最“宽泛的特征”。对这些单独的特征创建一些可视化,以尝试获得一些基本见解。现在我们可以开始更具体的。在两个或三个特性之间创建可视化。特性是如何相互关联的?你还可以用PCA查看哪些特征包含最多的信息。将一些特性组合在一起,看看它们之间的关系。例如,当A = 0和B = 0时,类会发生什么?当A = 1,B = 0时呢?比较不同的特征。例如,如果特征A可以是“女性”或“男性”,那么我们可以将特征A与他们呆在哪个小屋相对照,看看男性和女性是否住在不同的小屋。除了条形图、散点图和其他基本图外,我们还可以绘制PDF/CDF、重叠图等。查看一些统计数据,如分布、p值等。最后,是时候创建ML模型了。从简单的贝叶斯和线性回归开始。如果你发现很糟糕或者数据是高度非线性的,那就使用多项式回归、决策树或者SVMs。可以根据EDA中特征的重要性选择它们。如果你有很多数据,你可以使用神经网络。检查ROC曲线。精度、回忆 。
-
你如何知道应该使用哪种机器学习模型?虽然人们应该时刻牢记“天下没有免费的午餐”,但还是有一些基本原则的。我在这里写了一篇关于如何选择合适的回归模型的文章。这个备忘单也很棒!
-
为什么我们对图像使用卷积而不仅仅是FC层?这个问题很有趣,因为公司通常不会问这个问题。正如你所料,我从一家专注于计算机视觉的公司得到了这个问题。这个答案有两部分。首先,卷积保存、编码并实际使用了图像中的空间信息。如果我们只使用FC层,就不会有相关的空间信息。其次,卷积神经网络(CNNs)具有部分内建的平移方差,因为每个卷积核都充当自己的滤波器/特征检测器。
-
什么使CNNs不受平移影响?如上所述,每个卷积核都充当自己的滤波器/特征检测器。假设你在做物体检测,物体在图像中的什么位置并不重要因为我们要以滑动窗口的方式对整个图像进行卷积。
-
为什么分类CNNs 有最大池化?正如你所预料的,这是为了计算机视觉中的一个角色。CNN中的最大池化允许你减少计算,因为你的特征图在池化之后更小。你不会丢失太多的语义信息,因为你正在进行最大限度的激活。也有一种理论认为,最大池效应在一定程度上增加了CNNs的不受平移影响性。看看吴恩达关于最大池化的好处视频。
-
为什么分段CNNs通常具有编码器-解码器风格/结构?编码器CNN基本上可以被认为是一个特征提取网络,而解码器利用这些信息通过“解码”特征并向上放大到原始图像大小来预测图像的片段。
-
什么是批量标准化,它为什么有效? 深度神经网络的训练是复杂的,因为每一层的输入分布在训练过程中会随着前一层参数的变化而变化。批量标准化的目的是使每一层的输入标准化,使它们的平均输出激活为0,标准偏差为1。每一层中的每一个小批都会进行处理,即单独计算小批的均值和方差,然后标准化。这类似于网络输入的标准化。这有什么帮助呢?我们知道对网络输入进行标准化有助于其学习。但是网络只是一系列层,其中一层的输出成为下一层的输入。这意味着我们可以把神经网络中的任何一层看作是更小的后续网络的第一层。我们将神经网络看作是一系列相互馈入的神经网络,在应用激活函数之前对一层的输出进行标准化,然后将其馈入下一层(子网络)。
-
如何处理不平衡的数据集?我有一篇关于这个的文章!
-
为什么要使用很多小的卷积核,比如3×3,而不是几个大的?这在VGGNet的论文中得到了很好的解释。有两个原因:首先,你可以使用几个较小的内核而不是几个较大的内核来获得相同的接收域并捕获更多的空间信息,但是使用较小的内核可以使用较少的参数和计算。其次,因为使用更小的内核,你将使用更多的过滤器,使用更多的激活函数,因此CNN将学习到更有鉴别性的映射函数。
-
你还有其他相关的项目吗?在这里,你将真正在你的研究和他们的业务之间建立联系。你有没有做过什么事或学过什么技能,可能与他们的业务或你申请的职位有关? 不必是100%相关,只是某种程度上相关,这样你就可以证明你能够直接为公司增加很多价值。
-
解释一下你目前的硕士研究?什么成功了?没有失败了?未来的发展方向?和上一个问题一样!
结论
这就是所有我在申请数据科学和机器学习职位时得到的面试问题。我希望你喜欢这篇文章,并学到一些新的、有用的东西!如果你觉得学到点什么,请点赞!
AI研习社每日更新精彩内容,观看更多精彩内容:雷锋网(公众号:雷锋网)雷锋网雷锋网
五个很厉害的 CNN 架构
一文带你读懂计算机视觉
用Pytorch做深度学习(第一部分)
让神经网络说“我不知道”——用Pyro/PyTorch实现贝叶斯神经网络
等你来译:
对混乱的数据进行聚类
初学者怎样使用Keras进行迁移学习
强化学习:通往基于情感的行为系统
如果你想学数据科学,这 7 类资源千万不能错过
。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/134762.html