机器学习(ML)是我们世界的未来。在未来的几年中,几乎每种产品都将包含ML组件。ML预计将从2020年的$ 7.3B增长到2024年的$ 30.6B。对ML技能的需求遍及整个行业。
机器学习面试是一个严格的过程,在此过程中,应聘者会评估其基本概念知识以及对ML系统,实际应用和特定产品需求的理解。
如果您正在寻找机器学习的职业,那么了解面试的期望至关重要。因此,为帮助您准备,我收集了40个机器学习面试问题。我们将以一些基础知识开始,然后转到高级问题。
今天我们将回顾:
- 机器学习面试概述
- 公司特定流程
- 初学者问题(10)
- 中级问题(15)
- 进阶问题(10)
- 产品特定问题(5)
机器学习面试概述
机器学习面试问题是成为数据科学家,机器学习工程师或数据工程师不可或缺的一部分。根据公司的不同,机器学习工程师的职位描述标题可能会有所不同。您期望看到诸如机器学习工程师,数据科学家,AI工程师等标题。
雇用机器学习职位的公司进行面试,以评估各个领域的个人能力。ML面试问题往往属于这四个类别之一。
- 算法和机器学习理论:算法如何比较,如何准确测量
- 编程技巧:通常是Python或特定领域的语言
- 对机器学习的兴趣:行业趋势和您对未来ML组件的愿景
- 行业或产品特定问题:如何掌握通用机器学习知识并将其应用于特定产品
ML面试问题现在主要集中在系统设计上。在ML系统设计面试部分,开放式ML问题,有望建立端到端的机器学习系统。常见的示例是推荐系统,视觉理解系统和搜索排名系统。
公司特定流程
在进入前40个机器学习面试问题之前,让我们首先看一下顶级公司在面试重点上的不同之处。
Google ML面试
Google ML面试通常称为机器学习工程师面试,着重强调算法,机器学习和Python的技能。
一些常见的问题包括梯度下降,正则化/归一化方法和嵌入。
面试过程将是通用的,而不是专注于一个特定的团队或项目。通过面试后,他们会给你分配到适合的技能的团队。
Amazon ML访谈
称为机器学习工程师面试的亚马逊机器学习采访主要集中于电子商务机器学习工具,云计算和AI推荐系统。
预计Amazon ML工程师将构建ML系统并使用深度学习模型。数据科学家弥合了技术和业务方面之间由数据驱动的差距。研究科学家接受了更高水平的教育,并致力于改善ASR,NLU和TTS功能。
ML访谈的技术部分侧重于ML模型,偏差方差折衷和过度拟合。
Facebook ML面试
Facebook ML面试包括通用算法问题,ML设计和系统设计。你需要使用新闻提要排名算法和本地搜索排名。Facebook寻找寻求了解端到端ML系统组件(包括部署)的工程师。
你可能会遇到的一些常见的采访标题是研究科学家,数据科学采访或机器学习工程师。与亚马逊一样,他们对通才知识的关注点和需求也略有不同。
Twitter ML访谈
Twitter的数据科学家角色包括分别针对不同团队量身定制的数据和研究科学家角色。
面试的技术部分测试您对ML理论(包括SQL和Python)的应用和直觉。Twitter寻找统计信息,实验模型,产品直觉和系统设计方面的知识。
初学者问题(10)
现在,让我们深入了解ML面试的前40个问题。这些问题分为初学者,中级,高级和产品特定问题。
1.偏差和方差之间的权衡是什么?
偏差(模型拟合数据的程度)是指由于ML算法中的假设不正确或过于简单而导致的误差,这会导致过度拟合。
方差(模型基于输入的变化量)指的是由于ML算法的复杂性而导致的错误,从而对训练数据的高水平变化和过度拟合产生了敏感性。
换句话说,简单的模型是稳定的(低方差)但有很大的偏差。复杂的模型容易过拟合,但表达了模型的真实性(低偏差)。误差的最佳减少需要权衡偏差和方差,以避免高方差和高偏差。
2.解释有监督和无监督机器学习之间的区别。
监督学习需要训练标记的数据。换句话说,监督学习使用了基本事实,这意味着我们对输出和样本已有知识。这里的目标是学习一个近似输入和输出之间关系的函数。
另一方面,无监督学习不使用标记的输出。此处的目标是推断数据集中的自然结构。
3.监督学习和非监督学习最常用的算法是什么?
4.解释KNN和k-means聚类之间的区别。
主要区别在于,KNN需要标记点(分类算法,监督学习),而k-means则不需要(聚类算法,无监督学习)。
若要使用K最近邻居,请使用要分类为未标记点的标记数据。K均值聚类采用未标记的点,并学习如何使用点之间距离的平均值对它们进行分组。
5.什么是贝叶斯定理?我们为什么用它?
贝叶斯定理是我们在知道其他概率时如何找到概率的方法。换句话说,它提供了先验知识事件的后验概率。该定理是计算条件概率的原则方法。
在ML中,贝叶斯定理用于将模型拟合到训练数据集的概率框架中,并用于建立分类预测建模问题(即,朴素贝叶斯,贝叶斯最优分类器)。
6.什么是朴素贝叶斯分类器?我们为什么要使用它们?
朴素贝叶斯分类器是
分类算法的集合。这些分类器是具有共同原理的一系列算法。朴素贝叶斯分类器假设某个功能的存在或不影响其他功能的存在或不存在。
换句话说,我们称其为“天真”,因为它假定所有数据集特征都同等重要且独立。
朴素贝叶斯分类器用于分类。当独立性的假设成立时,与其他复杂的预测变量相比,它们更易于实现并产生更好的结果。它们用于垃圾邮件过滤,文本分析和推荐系统。
7.解释类型I和类型II错误之间的区别。
类型I错误为假阳性(声称没有发生某事),类型II错误为假阴性(声称实际上没有发生任何事)。
8.判别模型和生成模型之间有什么区别?
判别模型学习不同类别的数据之间的区别。生成模型学习数据类别。 区分模型通常在分类任务上表现更好。
9.什么是参数模型?提供一个例子。
参数模型具有有限数量的参数。您只需要知道模型的参数即可进行数据预测。常见示例如下:线性SVM,线性回归和逻辑回归。
非参数模型具有无限数量的参数以提供灵活性。对于数据预测,您需要模型的参数和观测数据的状态。常见示例如下:k最近邻,决策树和主题模型。
10.解释数组和链表之间的区别。
数组是对象的有序集合。由于整个数组都存储在连续的内存块中,因此假定每个元素的大小都相同。数组的大小在声明时指定,以后不能更改。
数组的搜索选项是线性搜索和二进制搜索(如果已排序)。
链表是一系列带有指针的对象。不同的元素存储在不同的存储位置,并且可以在需要时添加或删除数据项。
链接列表的唯一搜索选项是线性。
其他初学者问题可能包括:
哪个更重要:模型性能或准确性?为什么?F1分数是多少?如何使用?什么是维度诅咒?什么时候应该使用分类而不是回归?解释深度学习。它与其他技术有何不同?解释可能性和概率之间的差异。
中级问题(15)
这些中间问题从上面吸收了ML的基本理论,并以更为严格的方式加以应用。
1.您将为时间序列数据集选择哪种交叉验证技术?
时间序列不是随机分布的,而是按时间顺序排列的。您想使用正向链接之类的方法,以便可以在查看将来的数据之前基于过去的数据进行建模。例如:
- 折叠1:训练[1],测试[2]
- 折叠2:训练[1 2],测试[3]
- 折叠3:训练[1 2 3],测试[4]
- 第四折:训练[1 2 3 4],测试[5]
- 第五折:训练[1 2 3 4 5],测试[6]
2.如何根据训练集大小选择分类器?
对于小的训练集,具有高偏差和低方差模型的模型更好,因为它不太可能过拟合。一个例子是朴素贝叶斯。
对于大型训练集,具有低偏差和高方差模型的模型更好,因为它表示更复杂的关系。一个例子是逻辑回归。
3.解释ROC曲线和AUC。
ROC曲线是在所有阈值下分类模型的性能的图形表示。它有两个阈值:真阳性率和假阳性率。
简单来说,AUC(ROC曲线下方的面积)就是ROC曲线下方的面积。AUC测量ROC曲线下从(0,0)到(1,1)的二维区域。它用作评估二进制分类模型的性能指标。
4.解释LDA的无监督学习。
潜在狄利克雷分配(LDA)是主题建模的常用方法。它是一个生成模型,用于将文档表示为主题的组合,每个主题都有自己的概率分布。
LDA旨在将高维空间的特征投影到低维空间。这有助于避免维数的诅咒。
5.如何确保您不会过度拟合模型?
我们可以使用三种方法来防止过度拟合:
- 使用交叉验证技术(例如k折交叉验证)
- 保持模型简单(即减少变量)以减少方差
- 使用正则化技术(例如LASSO)来惩罚可能导致过度拟合的模型参数
6.在SQL中,主键和外键有何关系?
SQL是ML中使用的最流行的数据格式之一,因此您需要证明自己具有处理SQL数据库的能力。
外键允许您在相应表的主键上匹配和联接表。
如果您遇到此问题,请回答基本概念,并说明如何设置SQL表并对其进行查询。
7.您将使用哪些评估方法来评估ML模型的有效性?
首先,您将数据集分为训练集和测试集。您也可以使用交叉验证技术来分割数据集。然后,您将选择并实施性能指标。例如,您可以使用混淆矩阵,F1得分和准确性。
您将要解释如何基于不同的参数来度量模型的细微差别。脱颖而出的受访者将进一步提出类似这样的问题。
8.说明如何处理数据集中的丢失或损坏的数据。
您需要标识查找数据并删除行/列,或将其替换为其他值。
熊猫提供了执行此操作的有用方法:isnull()和dropna()。这些使您可以识别并删除损坏的数据。该fillna()方法可用于使用占位符填充无效值。
9.解释如何开发数据管道。
数据管道使我们能够采用数据科学模型并对其进行自动化或扩展。常见的数据管道工具是Apache Airflow,并且使用Google Cloud,Azure和AWS托管它们。
对于这样的问题,您想解释所需的步骤并讨论您在构建数据管道方面的实际经验。
对于Google Cloud主机,基本步骤如下:
- 登录到Google Cloud Platform
- 创建一个计算实例
- 从GitHub中提取教程内容
- 使用AirFlow概述管道
- 使用Docker设置虚拟主机
- 开发一个Docker容器
- 打开Airflow UI并运行ML管道
- 运行已部署的Web应用
10.如何解决模型中的高方差?
如果模型具有低方差和高偏差,我们使用装袋算法,该算法使用随机抽样将数据集划分为子集。我们使用这些样本通过单个学习算法生成一组模型。
此外,我们可以使用正则化技术,其中较高的模型系数会受到惩罚,以降低总体复杂度。
11.什么是超参数?它们与模型参数有何不同?
模型参数是模型内部的变量。参数值是根据训练数据估算的。
超参数是模型外部的变量。该值无法从数据中估算出来,通常用于估算模型参数。
12.你正在处理数据集。如何选择重要变量?
- 在选择重要变量之前,请先删除相关变量
- 使用随机森林和绘图变量重要性图表
- 使用套索回归
- 使用线性回归以基于p值选择变量
- 使用前向选择,逐步选择和向后选择
13.如何选择用于数据集的算法?
选择ML算法取决于所讨论的数据类型。选择算法和构建模型也需要业务需求,因此,在回答此问题时,请解释您需要更多信息。
例如,如果数据以线性方式组织,则线性回归将是一个很好的算法。或者,如果数据由非线性交互组成,则最好采用装袋或增强算法。或者,如果您正在处理图像,那么神经网络将是最佳选择。
在5分钟内阅读有关数据科学的前10大ML算法的更多信息
14.使用神经网络的优点和缺点是什么?
15.拆分决策树的默认方法是什么?
默认方法是基尼系数,它是特定节点的杂质的量度。从本质上讲,它计算被错误分类的特定功能的概率。当元素通过单个类链接时,我们称其为“纯”。
您也可以使用随机森林,但首选基尼系数,因为它不占用大量计算,并且不涉及对数函数。
其他中间问题可能包括:
什么是Box-Cox转换?水龙头问题解释决策树的优缺点。使用反向传播技术时爆炸梯度问题是什么?什么是混淆矩阵?你为什么需要它?
进阶问题(10)
这些高级问题将您的知识应用于特定的ML组件,并在基础上扩展以考虑实际应用。这些技能通常需要编码,而不仅仅是理论。
1.您将获得一个数据集,该数据集的缺失值沿与中位数1个标准差的范围扩展。百分之几的数据将不受影响?
数据分布在中位数上,因此我们可以假设我们正在使用正态分布。这意味着大约68%的数据与平均值存在1个标准差。因此,大约32%的数据不受影响。
2.有人告诉你,你的回归模型正在遭受多重共线性。如何验证这是正确的并建立更好的模型?
您应该创建一个相关矩阵,以识别和删除相关度高于75%的变量。请记住,此处的阈值是主观的。
您还可以计算VIF(方差膨胀因子)以检查是否存在多重共线性。VIF值大于或等于4表示没有多重共线性。小于或等于10的值表明存在严重的多重共线性问题。
您不能只删除变量,所以应该使用惩罚回归模型或在相关变量中添加随机噪声,但是这种方法不太理想。
通过高层次的思维来获得机器学习面试机会。
该交互式课程可帮助您建立ML系统设计技能,并介绍大型高科技公司中一些最常见的面试问题。到最后,您将能够精通机器学习面试,并深刻理解系统的能力。
摸索机器学习面试
3.为什么XGBoost的性能优于SVM?
XGBoos是使用许多树的集成方法。这意味着它会随着自身的重复而提高。
SVM是线性分隔符。因此,如果我们的数据不是线性可分离的,那么SVM需要一个内核来使数据达到可以分离的状态。这可能会限制我们,因为每个给定的数据集都没有完美的内核。
4.建立具有10,000棵树的随机森林模型。训练错误为0.00,但验证错误为34.23。解释出了什么问题。
您的模型可能过拟合。训练误差为0.00意味着分类器模仿了训练数据模式。这意味着它们不适用于我们看不见的数据,从而返回更高的错误。
当使用随机森林时,如果我们使用大量树木,则会发生这种情况。
5.解释构建ML模型的阶段。
这在很大程度上取决于手头的模型,因此您可以提出澄清的问题。但通常,过程如下:
- 了解业务模型和最终目标
- 收集数据采集
- 进行数据清理
- 基本探索性数据分析
- 使用机器学习算法开发模型
- 使用未知数据集检查准确性
6.以下混淆矩阵的召回率,特异性和精确度是多少?
- TP /真正肯定:案例是肯定的,并且被预测为肯定
- TN /真阴性:案件为阴性,预计为阴性
- FN /假阴性:案件为阳性,但预计为阴性
- FP /误报:案例为否定,但预计为肯定
- 召回率= 20%
- 特异性= 30%
- 精度= 22%
说明:
召回率= TP /(TP + FN)= 10/50 = 0.2 = 20%
特异性= TN /(TN + FP)= 15/50 = 0.3 = 30%
精度= TP /(TP + FP)= 10/45 = 0.2 = 22%
7.对于NLP,使用编码器-解码器模型的主要目的是什么?
我们使用编码器-解码器模型基于输入序列生成输出序列。
使编码器-解码器模型如此强大的原因在于,解码器将编码器的最终状态用作其初始状态。这使解码器可以访问编码器从输入序列中提取的信息。
8.对于使用TensorFlow进行深度学习,需要哪个值作为评估的输入EstimatorSpec?
损耗指标是必需的。在使用TensorFlow执行模型时,我们使用EstimatorSpec对象来组织训练,评估和预测。
EstimatorSpec使用一个必需的参数(称为mode)初始化该对象。该模式可以采用以下三个值之一:
- tf.estimator.ModeKeys.TRAIN
- tf.estimator.ModeKeys.EVAL
- tf.estimator.ModeKeys.PREDICT
EstimatorSpec根据模式的不同,初始化所需的关键字参数也会有所不同。
9.使用scikit-learn时,是否确实需要在特征值变化很大时调整特征值?
是。大多数机器学习算法都使用欧几里得距离作为度量标准来测量两个数据点之间的距离。如果值的范围相差很大,则不同功能部件中相同更改的结果将非常不同。
10.你的数据集有50个变量,但是8个变量的缺失值高于30%。如何解决这个问题?
您可以采用三种一般方法:
- 只是删除它们(不理想)
- 为缺失值分配唯一的类别,以查看是否有趋势生成此问题
- 检查目标变量的分布。如果找到了模式,请保留缺少的值,将其分配给新类别,然后删除其他类别。
其他高级问题可能包括:
您必须基于R²,调整后的R²和公差评估回归模型。您的标准是什么?对于k均值或kNN,为什么我们使用欧几里得距离而不是曼哈顿距离?解释正常软裕度SVM和带有线性核的SVM之间的区别。
产品特定问题(5)
公司希望看到您可以将ML概念应用于他们的实际产品和团队。您可能会想到有关公司基于ML的产品的问题,甚至可能需要自行设计它们。
1.如何为我们的用户实施推荐系统?
像这样的许多ML面试问题都涉及为组织的特定问题实施模型。为了很好地回答这个问题,您需要提前研究公司。了解有关收入驱动因素和用户群的信息。
重要:使用类似这样的问题来演示您的系统设计技能!您需要草拟具有需求,指标,培训数据生成和排名的解决方案。
使用Netflix的推荐系统,对机器学习面试进行Grokking详细讨论了这个问题。
建立推荐系统的一般步骤如下:
- 通过提问来设置问题
- 了解规模和延迟要求
- 定义在线和离线测试的指标
- 讨论系统架构(数据如何流动)
- 讨论训练数据的产生
- 轮廓特征工程(涉及哪些参与者)
- 讨论模型训练和算法
- 建议部署后如何扩展和改进(即您可以预测的问题)
2.您认为我们业务中最有价值的数据是什么?
这将测试您对商业/行业的了解。它还测试您如何将数据与业务成果相关联并将其应用于特定公司的需求。您需要研究组织的业务模型。请务必先提出问题,然后再进一步澄清问题。
一些一般的答案可能是:
- 机器学习团队理解的质量数据对于扩展和做出正确的预测很有用
- 告诉我们客户需求的数据对于所有业务决策至关重要
- 更好的数据管理可以增加他们的年收入
- 对公司最有价值的数据类型是客户数据,IT数据和内部财务数据
3.如何构建广告预测系统的广告选择过程?
广告选择组件的主要目标是缩小与给定查询相关的广告集。在基于搜索的系统中,广告选择组件负责根据用户和查询上下文从广告数据库中检索最相关的广告。
在基于Feed的系统中,广告选择组件将更多地根据用户兴趣而不是搜索字词来选择排名前k位的相关广告。
这是此问题的一般解决方案。假设我们使用基于渠道的方法进行建模。在以下三个阶段中合理安排广告选择过程:
- 阶段1:根据选择标准针对给定的查询和用户上下文快速选择广告
- 第2阶段:根据简单快速的算法对这些选定的广告进行排名,以对广告进行修剪。
- 第3阶段:将机器学习模型应用于经过裁剪的广告,以选择排名靠前的广告。
4.基于提要的系统有哪些体系结构组件?
同样,这个问题在很大程度上取决于所讨论的组织。首先,您需要询问有关系统的澄清问题,以确保满足所有需求。您可以用假说说话,以留出误差的余地。
我将使用Twitter的feed系统对其进行解释,以使您了解如何解决此类问题。它将包括:
- 推文选择:将用户的推文池转发给排名组件
- 训练数据生成:正面和负面的训练示例
- 排名:用于预测参与的可能性
5.如何看待GPT-3?认为我们如何使用它?
这个问题可以衡量您在该行业的投资,并确定如何应用新技术。GPT-3是一种新的语言生成模型,可以生成类似于人类的文本。
有关GPT-3的观点很多,因此请阅读有关如何将其用于展示下一代批判性思维的文章。查看OpenAI对CPT-3的前20种用法。
一些一般的答案可能是:
- 改善聊天机器人和客户服务自动化
- 使用NLP改善搜索引擎
- 工作培训和持续学习演示
- 改善JSX代码
- 简化UI / UX设计
其他问题可能包括:
为我们公司设计一个广告预测系统。搜索排名的指标是什么?您如何看待我们当前的数据流程?描述您在机器学习中的研究经验。用SQL编写查询,以衡量瞬间与新闻提要之间被查看的广告数量。您认为量子计算将如何影响该组织的ML?我们当前的哪些产品可以从ML组件中受益?