about云开发

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1259|回复: 3

[技术题有答案] 2018年机器学习面试:包含流程及面试题

[复制链接]
发表于 2018-9-13 17:53:07 | 显示全部楼层 |阅读模式
问题导读
1.机器学习工程师面试的流程是什么?
2.本文典型的第一轮面试由哪三部分组成?
3.对于基本的常识问题你是否有更好的理解及答案?


关注最新经典文章,欢迎关注公众号


对于招聘机器学习工程师或数据科学家来说,典型的过程有多轮。

基本筛选轮次 - 目标是检查本轮中的最低适合度。
算法设计回合 - 一些公司有这一轮,但大多数没有。 这涉及检查面试者的编码/算法技能。
ML案例研究 - 在这一轮中,你会得到一个关于机器学习的案例研究问题。 你必须在一小时内解决它。
招聘经理 - 面试通常是团队中最资深的人或来自另一个团队的非常资深的人,他们将检查候选人是否符合公司范围内的技术能力。 这通常是最后一轮。

典型的第一轮面试由三部分组成。
首先,简要介绍一下你自己。

其次,简要介绍一下你的相关项目。

典型的面试官将首先询问你的个人资料中的相关工作。 根据你过去的机器学习项目经验,面试官可能会问你如何改进它。

比如说,你已经完成了推荐项目,面试官可能会问:

  • 你会如何改进推荐?
  • 你会怎么做排名?
  • 你有没有做过任何端到端的机器学习项目? 如果是,那么面临的挑战是什么? 你怎么解决冷启动的问题?
  • 你如何提高推荐速度?

之后(第三部分),面试官将按以下方式检查你对机器学习的基本知识。

1:什么是机器学习?
机器学习是一个研究领域,它使计算机能够在没有明确教授或编程的情况下从经验中学习和改进。

在传统程序中,规则被编码用于程序以做出决策,但是在机器学习中,程序基于数据来学习以做出决策。

2.为什么我们需要机器学习?
最直观和突出的例子是自动驾驶汽车,但让我们以更有条理的方式回答这个问题。 需要机器学习来解决分类如下的问题:

传统解决方案需要长而复杂的规则并且需要经常进行手动调整的问题。此类问题的示例是垃圾邮件过滤器。你注意到一些词语,如4U,促销,信用卡,免费,惊人的等等,并发现该电子邮件是垃圾邮件。此列表可能非常长,并且一旦垃圾邮件发送者注意到你开始忽略这些单词,就可以更改此列表。用传统的编程方法来解决这个问题变得很困难。机器学习算法学会很好地检测垃圾邮件并且工作得更好。

使用传统方法完全没有解决方案的复杂问题。语音识别是这类问题的一个例子。
机器学习算法可以找到解决这些问题的好方法。

波动的环境:机器学习系统可以适应新数据,并学会在这组新数据中做得很好。

深入了解复杂的大量数据。例如,你的企业从客户处收集大量数据。机器学习算法可以找到对这些数据的见解,否则不容易弄清楚。

3.有监督和无监督学习有什么区别? 举两个例子。
根据定义,监督和非监督学习算法基于训练时所需的监督进行分类。 监督学习算法对标记的数据起作用,即数据具有所需的解决方案或标签。

另一方面,无监督学习算法对未标记数据起作用,这意味着数据不包含算法学习所需的解决方案。

监督算法示例:

  • 线性回归
  • 神经网络/深度学习
  • 决策树
  • 支持向量机(SVM)
  • K-最近邻居

无监督算法示例:

  • 聚类算法 - K均值,层次聚类分析(HCA)
  • 可视化和降维 - 主成分降低(PCA)
  • 关联规则学习

4.推荐系统是监督还是无监督学习?
推荐算法很有意思,因为其中一些是受监督的,有些是无人监督的。 基于你的个人资料,之前的购买,网页浏览量的推荐属于有监督的学习。 但是有一些推荐基于热销产品,基于国家/地区的推荐,这些都是无监督学习。

5.解释PCA?
PCA代表主成分分析。 PCA是一种减少数据维数的过程,它由许多相互严重或轻微相关的变量组成,同时尽可能保持数据的变化。 应用PCA的数据必须是缩放数据,并且PCA的结果对数据的相对缩放敏感。
PCA_hyperplane2-768x390.png
例如,你在2D空间中拥有数据集,并且你需要选择超平面来投影数据集。 必须选择超平面,以使方差保持最大。 在图中,当从一个表示转换为另一个表示(从左到右)时,超级位置C1(实线)保留了数据集中的最大方差,而C2(虚线)保留了非常小的方差。

更详细参考PCA-主成分分析详解
链接: https://pan.baidu.com/s/12yN3poxkT6aoAENGI7wwfA 密码: rk7n

6.你知道哪种监督学习算法?
有许多监督学习算法,如回归,决策树,神经网络,SVM等。其中最受欢迎和简单的监督学习算法是线性回归。 让我快速解释一下。

假设我们需要根据一些历史数据预测一个县居民的收入。 线性回归可用于此问题。
线性回归模型是输入特征的线性函数,其中权重定义模型,偏差项如下所示。
1.png
在该等式中,y_hat是预测结果,x_i是输入,并且theta_i是模型参数或权重。 theta_0是偏差。
通过评估均方根误差(RMSE)来测量该模型的性能。 实际上,均方误差最小化以找到值,以便MSE最小.MSE如下:

1.png

7.你能比较决策树和线性回归吗? 决策树可以用于非线性分类吗?
决策树用于无监督和监督学习。 此外,它们还用于分类以及监督机器学习问题中的回归。 在决策树中,我们通过拆分节点来形成树。 最初,所有实例基于边界被分成两部分,使得任一侧的实例是边界,非常接近同一侧的其他实例。 左侧的实例应与左侧的其他实例非常相似,右侧的实例也是如此。

下图显示了最大深度2和最大深度3的决策树; 可以看到,随着决策树的最大深度增加,可以更好地覆盖可用数据。
decision_tree1-768x283.png
不同深度的决策树

值得强调的决策树的另一个方面是决策树的稳定性。 决策树对数据集轮换很敏感。 下图显示了数据旋转时决策树的不稳定性。
decision_tree2-768x283.png
数据轮换的决策树灵敏度

首先,决策树的决策边界都是正交直线(所有的切分都和某一个坐标轴垂直),这使得它们对数据集的旋转很敏感。例如,图显示了简单的线性可分数据集,在左侧,决策树很容易将其切分。但是在右侧,数据集旋转45°,决策树出现了不必要的绕弯弯。尽管二者都很好地拟合了训练集,很明显右侧的模型难以很好地一般化。一个解决方案是使用PCA,它可以使训练集旋转到最好的方向。


8.解释过度拟合和欠拟合? 过度拟合的原因是什么?
比如,张三和李四有两个孩子参加数学考试。张三只学习了补充的附加内容,李四从数学书中记住了问题和答案。现在,谁将在考试中取得成功?答案都不是。从机器学习术语来说,张三是欠拟合,李四过度拟合。

过度拟合是算法无法推广到不在训练集中的新示例,同时该算法对于训练集合数据非常有效,因为李四可以回答书中的问题,但除了它之外什么都没有。另一方面,欠拟合指的是当模型没有捕获数据的基本趋势(训练数据和测试数据)时。一般来说,补救措施是选择更好(更复杂)的机器学习算法。

因此,欠拟合的模型是在训练和测试数据中都表现不佳的模型。在开发机器学习算法时,过度拟合对于保持标签打开非常重要。这是因为,通过直觉,如果模型非常适合训练集,开发人员倾向于认为算法运行良好,有时无法解释过度拟合。当模型相对于训练数据的数量和噪声过于复杂时,会发生过度拟合。这也意味着该算法不能很好地用于测试数据,可能是因为测试数据不是来自与训练数据相同的分布。以下是避免过度拟合的一些方法:

  • 简化模型:正则化,由超参数控制
  • 收集更多训练数据
  • 减少训练数据中的噪音


以下是一些避免欠拟合的方法:

  • 选择更强大的模型
  • 为学习算法提供更好的特征
  • 减少对模型的约束(减少正则化超参数)



9.什么是交叉验证技术?
让我们了解验证集是什么,然后我们将进行交叉验证。 在构建模型时,需要训练集通过反向传播来调整权重。 并且选择这些权重使得训练误差最小。

现在需要数据来评估模型和超参数,这些数据不能与训练集数据相同。 因此,训练集数据的一部分被保留用于验证,并且被称为验证集。 当测试不同的模型以避免通过保持单独的验证集在模型的验证中浪费太多数据时,使用交叉验证技术。 在交叉验证技术中,训练数据被分成互补子集,并且不同的训练和验证集用于不同的模型。

然后最后用测试数据测试最佳模型。


10.如何检测过度拟合和欠拟合?
这是实际机器学习中最重要的问题之一。 为了回答这个问题,让我们理解偏差和方差的概念。

为了得出算法是否过度拟合或欠拟合的结论,需要找出训练集错误(E_train)和交叉验证集错误(E_cv)。 如果你的E_train很高并且E_cv也与E_train在同一范围内,即E_train和E_cv都很高。 这是高偏差的情况,该算法欠拟合。 在另一种情况下,例如,训练集错误很低,但交叉验证设置错误很高:E_train很低,E_cv很高。 这是高方差的情况,算法过度拟合。

11.偏差和方差之间的权衡是什么?
bias_variance-300x112.png

简单来说,你可以理解一个非常简单的算法(不能捕捉到数据的基本细节),并且具有高偏差和非常复杂的算法过度拟合并且具有高方差。 两者之间必须保持平衡。 上图描述了它们在它们之间的权衡方面的相关性。
更多相关内容,参考机器学习中偏差---方差之间的权衡吗?
http://www.aboutyun.com/home.php?mod=space&uid=61&do=blog&id=3608

12.有一位同事声称他已经建立了分类器99.99%的准确率? 你会相信他吗? 如果不是,你主要怀疑可能的原因是什么? 你会如何解决它?
一般而言,99.99%的准确度非常高,应该被怀疑。 至少要仔细分析数据集以及对其周围解决方案进行建模的任何流程。 我的主要怀疑是数据集和问题陈述。 例如:在一组手写字符中,其中有0到9的数字,如果建立一个模型来检测数字是否为5,一个总是将数字识别为8的错误模型也会给出90%的准确率。

13.解释ROC曲线如何工作?

ROC.png

ROC代表接收器工作特性。 ROC曲线用于测量不同算法的性能。 这是绘制真阳性率和假阳性率时曲线下面积的测量值。 更多的区域更好的模型。

14.解释集成(ensemble)算法?基本原理什么
假设你向成千上万的人提问,然后汇总答案,很多时候这个答案比专家的答案要好。 集成算法基本上结合了不同学习算法的预测,例如分类,回归等,以实现更高的准确性。 该聚合预测优于最佳个体预测器。 这组预测称为ensemble(集成),该技术称为集成学习。

15.比如,你有一个以城市id为特征的数据集,你会怎么做?
收集机器学习项目的数据时,需要从收集的数据中仔细选择特征。 城市ID只是一个序列号,除非另有说明,否则不代表城市的任何属性,所以我只是从功能列表中删除城市ID。

16.在数据集中,有一个特征hour_of_the_day,从0到23.你认为它是否有问题?
此特征无法原样使用,因为hour_of_the_day可能意味着使用机器学习技术解决你的问题的某个约束,但是存在使用该特征的缺陷。 考虑0和23,这两个数字具有较大的数值差异,但事实上,它们在当天的实际发生时很接近,因此算法可能不会产生期望的结果。 有两种方法可以解决这个问题。 首先是应用周期为24(一天中的小时)的正弦函数,这将导致来自不连续数据的连续。

第二种方法是根据对问题领域的了解,将当天的小时数分为上午,下午,傍晚,夜晚等,或者分为高峰时段和非高峰时段。

17.如果你有一个较小的数据集,将如何处理?
有多种方法可以解决这个问题,比如:
  • 数据增加
  • 预训练模型
  • 更好的算法
  • 开始生成数据
  • 从互联网下载

后续有时间会更新,大家敬请期待
转载注明本文链接:
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25226

1

主题

2

听众

2

收听

高级会员

Rank: 4

积分
2310
发表于 2018-9-14 11:33:42 | 显示全部楼层
2018年机器学习面试~~~

20

主题

13

听众

14

收听

高级会员

Rank: 4

积分
1263
发表于 2018-9-14 16:26:26 | 显示全部楼层
感谢楼主分享经验总结,学习一下机器学习的入门知识和要求,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|about云开发-学问论坛|社区 ( 京ICP备12023829号

GMT+8, 2018-9-22 07:48 , Processed in 0.355853 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2 Licensed

快速回复 返回顶部 返回列表