数据科学和机器学习面试问题:不容易!
在过去的几个月里,我一直在面试几个涉及数据科学和机器学习的入门级职位。为了让你更深入地了解我的背景,我目前正处于研究生院的最后几个月,机器学习和计算机视觉肯定是投入的,我之前的大部分经验都是研究/学术,但一开始是 8 个月(与机器学习无关)。这些职位包括数据科学、机器学习和自然语言处理或计算机视觉方面的专业工作。我面试过亚马逊、特斯拉、三星、Uber、华为等大公司。还采访了许多从早期到成熟且资金充足的初创公司。
今天我将分享我被问到的所有面试问题以及我是如何处理它们的。许多问题是常见的,一些理论是基础的,但许多其他理论是创造性和新颖的。我将简要列出最常见的,因为有很多关于此基础理论知识的在线资源,并更深入地讨论一些不太常见和困难的内容。我希望在阅读这篇文章的同时,它能帮助你面试机器学习并获得你梦想的工作!
让我们看看:
- 偏差和方差有什么区别?
- 什么是梯度下降?
- 解释一下过拟合和欠拟合的问题以及如何解决?
- 如何解决高维数据问题以及如何降维?
- 什么是正则化,为什么要使用它,并举一些常用方法的例子?
- 什么是主成分分析(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、叠加图等。从朴素贝叶斯和线性回归等简单的开始。如果您正在查看高度非线性的数据,请使用多项式回归、决策树或 SVM。可以根据功能对 EDA 的重要性来选择功能。如果您有大量数据,则可以使用神经网络。检查 ROC 曲线、精度和召回率。 - 您如何知道应该使用哪种机器学习模型? 虽然人们应该始终牢记“没有免费午餐定理”,但还是有一些一般准则。我在这里写了一篇关于如何选择正确的回归模型的文章。这篇文章也写得很好。
- 为什么我们使用卷积来处理图像而不仅仅是 FC 层? 这真的很有趣,因为这不是公司通常会问的问题。不出所料,我从一家专注于计算机视觉的公司那里得到了这个问题。这个答案有两个部分。首先,卷积保留并编码所使用图像的空间信息。如果我们只使用FC层,我们将没有相应的空间信息。其次,卷积神经网络(CNN)有一个部分内置的翻译变体,因为每个卷积核都充当自己的过滤器/特征检测器。
- 是什么让 CNN 翻译不变? 如上所述,每个卷积核充当自己的滤波器/特征检测器。因此,如果您正在进行对象检测,则对象在图像中的位置并不重要,因为我们将以滑动窗口的方式将卷积应用于整个图像。
- 为什么我们在 CNN 分类中采用最大池化? 再次如预期,这是计算机视觉中的一个角色。 CNN 中的最大聚类可以减少计算量,因为收集的特征图更小。因为您正在进行最大程度的激活,所以不会丢失太多语义信息。还有一种理论认为最大池化有助于为 CNN 提供更多方差变换。观看 Andrew Ng 的这段精彩视频,了解最大池化的好处。
- 为什么分段 CNN 通常具有编码器-解码器风格/结构? CNN 编码器可以被认为是一个特征提取网络,而解码器则使用这些信息通过“解码”特征并将其大小增加到原始图像的大小来预测图像片段。
- 残余组织的重要性是什么? 残差连接的主要作用是允许直接访问前一层的函数。这使得在整个网络中分发信息变得更加容易。一篇非常有趣的论文描述了如何使用本地跳跃连接为网络提供整体多路径结构,从而提供多条具有在整个网络中传播的能力的路径。
- 什么是批量归一化?是否可以? 深度神经网络训练很复杂,因为每一层的输入分布在训练过程中都会随着前一层参数的变化而变化。这个想法是对每层的输入进行归一化,以便输出激活函数的均值为零,标准差为 1。这是针对每层中的每个单独的小批量完成的,这是该小批量的均值和方差小批量。批次单独计算,然后标准化。这类似于网络输入的标准化。重点是什么?我们知道标准化网络输入有助于学习。但网络只是一系列层,其中一层的输出成为下一层的输入。这意味着我们可以将神经网络中的任何层视为后续较小网络的第一层。被视为一系列相互馈送的神经网络,我们在应用激活函数之前对一层的输出进行归一化,然后将其馈送到下一层(子网络)。
- 如何处理不平衡的数据集? 我有一篇文章谈论这个!查看第 3 部分:)
- 为什么使用大量小卷积核(例如 3x3)而不是一些大卷积核? 这在 VGGNet 论文中得到了很好的解释。原因有两个:首先,您可以使用几个小内核而不是几个较大的内核来获得相同的感知场并捕获更多的空间上下文,但使用小内核可以使用更少的参数和计算。其次,由于较小的内核将使用更多的过滤器,因此您将能够使用更多的激活函数,因此您的 CNN 可以学习更多的判别性映射函数。
- **您还有其他与此相关的项目吗? ** 在这里您将了解您的研究与您的业务之间的联系。您是否拥有学到的技能或与您所申请的业务或职位相关的技能?它不必 100% 准确,只需在某种程度上相关,这样您就可以证明您将能够立即贡献大量资金。
- 描述一下硕士当前的研究?他穿什么?不是有吗?未来的方向? 和上一个问题一样!
结论
大家现在应该知道了吧!我在申请数据科学和机器学习职位时遇到的所有面试问题。我希望您喜欢这篇文章并学到一些新的有用的东西!
作者:jianboy
来源:掘金
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网