面了Amazon、Uber、Tesla、Samsung数据科学家岗后,我总结了这16道面试真题

Machine Learning 的面试令人非常畏惧。你觉得你知道一切……直到你亲身经历它!但它也不一定是这样的。

在过去的几个月里,我面试了许多公司初级的 Data ScienceMachine Learning 的岗位。给你一点参考建议,我前几个月在Machine Learning和Computer Vision硕士学位毕业,以前的大多数经验都是研究/学术,但有八个月与ML无关的早期创业经历。这些岗位包括Data Science,General Machine Learning以及自然语言处理或计算机视觉。我面试了亚马逊,特斯拉,三星,优步,华为等大公司,还有许多从早期阶段到资金充足的创业公司。

今天我将与大家分享我被问过的所有面试问题以及如何处理这些问题。 许多问题都是相当普遍和预期的理论,但其他问题也都非常需要创造性。我将简单地列出最常见的那些,因为有很多关于它们的在线资源,并且更深入地介绍了一些不那么常见和棘手的问题。 我希望在阅读这篇文章时,你可以在机器学习面试中取得优异成绩并获得梦想中的工作!

1.什么是Data Normalization以及为什么我们需要它?
WHAT IS DATA NORMALIZATION AND WHY DO WE NEED IT?

我觉得这一点很重要。Data Normalization是一个非常重要的数据预处理步骤,用于重新调整值以适应特定范围,以确保在反向传播算法中更好的收敛。通常,它归结为每个数据点减去平均值并除以标准差。如果我们不这样做,一些特征(那些High Magnitude)将在Cost Function中有更多的加权(如果Higher-magnitude的特征变化1%,那么这种变化相当大,但对于较小的特征,它是非常微不足道的)。Data Normalization使所有特征均等加权。

2.解释降维,何时使用它以及它的好处?
EXPLAIN DIMENSIONALITY REDUCTION, WHERE IT’S USED, AND ITS BENEFITS?

降维是通过获得一组基本上是重要特征的主要变量来减少所考虑的特征变量的数量的过程。特征的重要性取决于特征变量对数据的信息表示的贡献程度,也取决于你决定使用哪种技术。决定使用哪种技术取决于试验、误差和效果。通常从线性开始,当结果表明不合适时,转向非线性。减少数据集降维的好处可能是:

· 减少所需的存储空间。
· 加速计算(例如在机器学习算法中),更少的维度意味着更少的计算,同时更少的维度可以允许使用不适合大量维度的算法。
· 删除冗余特征,例如以平方米和平方英里同时存储地形大小没有意义(可能数据收集存在缺陷)。
· 将数据的维度减少到2D或3D可以允许我们绘制和可视化它,可以通过观察给我们一些见解。
· 特征太多或模型过于复杂都可能导致过拟合。

3.如何在数据集中处理丢失或损坏的数据?
HOW DO YOU HANDLE MISSING OR CORRUPTED DATA IN A DATASET?

你可以在数据集中找到丢失/损坏的数据,并删除这些行或列,或者决定将其替换为其他值。在Pandas中,有两个非常有用的方法:isnull()和dropna(),它们可以查找数据丢失或损坏的数据列并删除这些值。如果要使用占位符值(例如,0)填充无效值,可以使用fillna()方法。

4.解释聚类算法?
EXPLAIN THIS CLUSTERING ALGORITHM?

我写过一篇关于Data Scientists需要知道的五种聚类算法的文章,其中有一些很好的可视化解释了这个问题。

Link:https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68

5.如何进行探索性数据分析(EDA)?
HOW WOULD YOU GO ABOUT DOING AN EXPLORATORY DATA ANALYSIS (EDA)?

EDA的目的是在应用预测模型之前从数据中发现一些见解,即获得一些信息。基本上,是以粗略到精细的方式进行EDA。我们首先获得一些高级别全局的见解。查看一些不平衡的类。看每个类的均值和方差。查看前几行来了解它的全部内容。运行pandas里面的df.info()以查看哪些特征是连续的,哪些是分类的,它们的类型(int,float,string)。

接下来,删除在分析和预测中无用的不必要的列。这些可以是看起来毫无用处的列,其中许多行具有相同的值(即它没有给我们提供太多信息),或者它缺少很多值。我们还可以使用该列中众数或中位数来填充缺失值。

现在我们可以开始做一些基本的可视化。从高级别的开始。对于分类变量和有少量组的特征画一些条形图。因变量的条形图。看看最“一般的功能”。创建一些关于这些单独特征的可视化,以尝试获得一些简单的见解。

现在我们可以开始更具体了。在特征之间进行可视化,一次两个或三个。特征如何相互关联?你还可以执行PCA以查看哪些功能包含最多信息。将一些功能组合在一起以查看它们之间的关系。例如,当A = 0且B = 0时,类会发生什么?那A = 1和B = 0的时候呢?比较不同的特征。例如,如果特征A可以是“女性”或“男性”,那么我们可以绘制特征A和他们留在哪个小屋的变量,看看男性和女性是否倾向于留在不同的小屋中。除了条形图,散点图和其他基本图之外,我们还可以进行PDF / CDF,叠加图等。查看一些统计信息,如分布,p值等。

最后可以构建ML模型。从最简单的Naive Bayes和线性回归开始。如果你发现这些数据是高度非线性的,就使用多项式回归,决策树或SVM。可以根据EDA的重要性选择特征。如果有大量数据,可以使用神经网络。最后看ROC曲线,Precision和Recall的值。

6. 如何知道应该使用哪种Machine Learning模型?
HOW DO YOU KNOW WHICH MACHINE LEARNING MODEL YOU SHOULD USE?

虽然人们应该始终牢记“天下没有免费的午餐定理”,但仍有一些一般性的指导方针。我写了一篇关于如何选择合适的回归模型的文章。

希望这张Cheat sheet也能帮到你!

7. 为什么我们对图像使用卷积而不仅仅是FC层?
WHY DO WE USE CONVOLUTIONS FOR IMAGES RATHER THAN JUST FC LAYERS?

这个非常有趣,因为这不是公司通常会问的问题。正如你所料,我从一家专注于计算机视觉的公司那里得到了这个问题。这个答案有两个部分。首先,卷积保留,编码并实际使用来自图像的空间信息。如果我们只使用FC层,我们就没有相对的空间信息。其次,卷积神经网络(CNN)具有部分内置的平移方差,因为每个卷积核都充当它自己的滤波器/特征检测器。

8. 什么使CNNS具有平移不变性?
WHAT MAKES CNNS TRANSLATION INVARIANT?

如上所述,每个卷积核心充当其自己的滤波器/特征检测器。因此,假设你正在进行对象检测,对象在图像中的位置无关紧要,因为无论如何我们将以滑动窗口的方式应用卷积。

9. 为什么我们在分类CNNS中有Max-Pooling?
WHY DO WE HAVE MAX-POOLING IN CLASSIFICATION CNNS?

同样这是计算机视觉岗位中一道面试题。CNN中的Max-pooling允许你减少计算,因为在Pooling之后特征图较小。由于正在进行最大程度的激活,因此不会丢失过多的语义信息。还有一种理论认为,Max-pooling有助于为CNN提供更多的方差转换。看看这个来自Andrew Ng的精彩视频了解Max-pooling的好处。

Link: https://www.coursera.org/lecture/convolutional-neural-networks/pooling-layers-hELHk

10.为什么分段CNNS通常具有编码器解码器样式及结构?
WHY DO SEGMENTATION CNNS TYPICALLY HAVE AN ENCODER-DECODER STYLE / STRUCTURE?

编码器CNN基本上可以被认为是特征提取网络,而解码器使用该信息通过“解码”特征并且放大到原始图像大小来预测图像片段。

11.Residual Networks的意义何在?
WHAT IS THE SIGNIFICANCE OF RESIDUAL NETWORKS?

Residual Connections所做的主要事情是允许从先前层直接访问特征。这使得整个网络中的信息传播变得更加容易。关于这个话题的一篇非常有趣的论文显示了如何使用本地跳过连接为网络提供一种集合多路径结构,为特征提供多个路径在整个网络中传播。

Link: https://arxiv.org/abs/1605.06431

12. 什么是Batch Normalization以及它的工作原理?
WHAT IS BATCH NORMALIZATION AND WHY DOES IT WORK?

训练深度神经网络很复杂,因为每层输入的分布会随着前一层的参数变化而也在训练期间改变。我们的想法是将每层的输入标准化,使得它们的平均输出激活为零,标准差为1。这是针对每层的每个小批量完成的,即仅计算该小批量的均值和方差,然后进行标准化。这类似于网络输入的标准化方式。这有什么用?我们知道将网络输入标准化有助于它学习。但网络只是一系列层,其中一层的输出成为下一层的输入。这意味着我们可以将神经网络中的任何层视为较小的后续网络的第一层。考虑到作为一系列相互馈送的神经网络,我们在应用激活函数之前标准化一层的输出,然后将其馈送到下一层(子网络)。

13.如何处理不平衡的数据集?
HOW WOULD YOU HANDLE AN IMBALANCED DATASET?

我有一篇关于这个问题的文章!

14. 为什么你会使用许多小型的卷积内核,如3X3,而不是几个大的?
WHY WOULD YOU USE MANY SMALL CONVOLUTIONAL KERNELS SUCH AS 3X3 RATHER THAN A FEW LARGE ONES?

这在VGGNet论文中得到了很好的解释。有两个原因:首先你可以使用几个较小的内核而不是几个较大的内核来获取相同的感知字段并捕获更多的空间背景,但是使用较小的内核可以使用较少的参数和计算。其次,因为对于较小的内核将使用更多的过滤器,能够使用更多的激活函数,从而具有更有辨别力的由CNN学习的映射函数。

Link: https://arxiv.org/pdf/1409.1556.pdf

15. 你是否还有其他与此相关的项目?
DO YOU HAVE ANY OTHER PROJECTS THAT WOULD BE RELATED HERE?

这道问题中,你将把你的研究和业务之间联系起来。你是否有任何做过什么或者学过的技能可以和公司的业务或者你申请的岗位联系起来?不需要是100%相关,只是以某种方式相关,这样你就可以证明你可以带来很多价值。

16. 解释你当前的硕士研究?哪些有用?未来发展方向?
EXPLAIN YOUR CURRENT MASTERS RESEARCH? WHAT WORKED? WHAT DIDN’T? FUTURE DIRECTIONS?

和上一个问题一样!

其他Data Science面试问题:

原文作者:George Seif

原文链接:

8 Likes

谢谢分享跟走心的翻译!

谢谢分享

谢谢

This one is real nice! Thanks for posting!

thanksForSharing

感谢分享!

谢谢

谢谢分享

非常感谢分享希望自己顺顺利利