热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据挖掘和机器学习的面试问题

原文链接:https:to

原文链接:https://towardsdatascience.com/data-science-and-machine-learning-interview-questions-3f6207cf040b

译者:Ray

在过去的几个月里,我面试了许多公司涉及数据科学和机器学习的实习岗位。介绍一下我的背景,我研究生期间的方向是机器学习,计算机视觉,并且以前大部分时间都是在研究学术,但在早期有8个月的创业经历(与ML无关)。我面试的岗位包括数据科学、传统机器学习、自然语言处理或者是计算机视觉,并且面试的都是像亚马逊、特斯拉、三星、Uber、华为这些大公司,也有许多创业公司。

今天,我将会分享所有我面试时遇到的问题,并分享如何去回答这些问题。这些问题中有些是比较正常的并且有一定的理论背景,但有一些问题则很有创新性。对于一些普通的面试题,我就简单的列一下,因为这些题在网上都很容易找到。主要深入讲解一下比较少见的面试。我希望阅读这篇文章后,能够帮助你在机器学习面试中表现的更好,并且找到你梦寐以求的工作。

让我们开始吧:

1. 如何权衡偏差和方差?

2. 什么是梯度下降?

3. 解释一下过拟合和欠拟合,如何解决这两种问题?

4. 如何处理维度灾难?

5. 什么是正则化项。为什么要使用正则化,说出一些常用的正则化方法?

6. 讲解一下PCA原理

7. 为什么在神经网络中Relu激活函数会比Sigmoid激活函数用的更多?

8. 什么是数据标准化,为什么要进行数据标准化?

我认为这个问题需要重视。数据标准化是预处理步骤,将数据标准化到一个特定的范围能够在反向传播中保证更好的收敛。一般来说,是将该值将去平均值后再除以标准差。如果不进行数据标准化,有些特征(值很大)将会对损失函数影响更大(就算这个特别大的特征只是改变了1%,但是他对损失函数的影响还是很大,并会使得其他值比较小的特征变得不重要了)。因此数据标准化可以使得每个特征的重要性更加均衡。

9. 解释什么是降维,在哪里会用到降维,它的好处是什么?

降维是指通过保留一些比较重要的特征,去除一些冗余的特征,减少数据特征的维度。而特征的重要性取决于该特征能够表达多少数据集的信息,也取决于使用什么方法进行降维。而使用哪种降维方法则是通过反复的试验和每种方法在该数据集上的效果。一般情况会先使用线性的降维方法再使用非线性的降维方法,通过结果去判断哪种方法比较合适。而降维的好处是:

(1)节省存储空间;

(2)加速计算速度(比如在机器学习算法中),维度越少,计算量越少,并且能够使用那些不适合于高维度的算法;

(3)去除一些冗余的特征,比如降维后使得数据不会既保存平方米和平方英里的表示地形大小的特征;

(4)将数据维度降到2维或者3维使之能可视化,便于观察和挖掘信息。

(5)特征太多或者太复杂会使得模型过拟合。

10. 如何处理缺失值数据?

数据中可能会有缺失值,处理的方法有两种,一种是删除整行或者整列的数据,另一种则是使用其他值去填充这些缺失值。在Pandas库,有两种很有用的函数用于处理缺失值:isnull()和dropna()函数能帮助我们找到数据中的缺失值并且删除它们。如果你想用其他值去填充这些缺失值,则可以是用fillna()函数。

11. 解释聚类算法

请参考(https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68–详细讲解各种聚类算法

12. 你会如何进行探索性数据分析(EDA)?

EDA的目的是去挖掘数据的一些重要信息。一般情况下会从粗到细的方式进行EDA探索。一开始我们可以去探索一些全局性的信息。观察一些不平衡的数据,计算一下各个类的方差和均值。看一下前几行数据的信息,包含什么特征等信息。使用Pandas中的df.info()去了解哪些特征是连续的,离散的,它们的类型(int、float、string)。接下来,删除一些不需要的列,这些列就是那些在分析和预测的过程中没有什么用的。

比如:某些列的值很多都是相同的,或者这些列有很多缺失值。当然你也可以去用一些中位数等去填充这些缺失值。然后我们可以去做一些可视化。对于一些类别特征或者值比较少的可以使用条形图。类标和样本数的条形图。找到一些最一般的特征。对一些特征和类别的关系进行可视化去获得一些基本的信息。然后还可以可视化两个特征或三个特征之间的关系,探索特征之间的联系。

你也可以使用PCA去了解哪些特征更加重要。组合特征去探索他们的关系,比如当A=0,B=0的类别是什么,A=1,B=0呢?比较特征的不同值,比如性别特征有男女两个取值,我们可以看下男和女两种取值的样本类标会不会不一样。

另外,除了条形图、散点图等基本的画图方式外,也可以使用PDF\CDF或者覆盖图等。观察一些统计数据比如数据分布、p值等。这些分析后,最后就可以开始建模了。

一开始可以使用一些比较简单的模型比如贝叶斯模型和逻辑斯谛回归模型。如果你发现你的数据是高度非线性的,你可以使用多项式回归、决策树或者SVM等。特征选择则可以基于这些特征在EDA过程中分析的重要性。如果你的数据量很大的话也可以使用神经网络。然后观察ROC曲线、查全率和查准率。

13. 你是怎么考虑使用哪些模型的?

其实这个是有很多套路的。我写了一篇关于如何选择合适的回归模型,链接在这(https://towardsdatascience.com/selecting-the-best-machine-learning-algorithm-for-your-regression-problem-20c330bad4ef)

14. 在图像处理中为什么要使用卷积神经网络而不是全连接网络?

这个问题是我在面试一些视觉公司的时候遇到的。答案可以分为两个方面:首先,卷积过程是考虑到图像的局部特征,能够更加准确的抽取空间特征。如果使用全连接的话,我们可能会考虑到很多不相关的信息。其次,CNN有平移不变性,因为权值共享,图像平移了,卷积核还是可以识别出来,但是全连接则做不到。

15. 是什么使得CNN具有平移不变性?

正如上面解释,每个卷积核都是一个特征探测器。所以就像我们在侦查一样东西的时候,不管物体在图像的哪个位置都能识别该物体。因为在卷积过程,我们使用卷积核在整张图片上进行滑动卷积,所以CNN具有平移不变性。

16. 为什么实现分类的CNN中需要进行Max-pooling?

Max-pooling可以将特征维度变小,使得减小计算时间,同时,不会损失太多重要的信息,因为我们是保存最大值,这个最大值可以理解为该窗口下的最重要信息。同时,Max-pooling也对CNN具有平移不变性提供了很多理论支撑,详细可以看吴恩达的benefits of MaxPooling(https://www.coursera.org/learn/convolutional-neural-networks/lecture/hELHk/pooling-layers)

17. 为什么应用于图像切割的CNN一般都具有Encoder-Decoder架构?

Encoder CNN一般被认为是进行特征提取,而decoder部分则使用提取的特征信息并且通过decoder这些特征和将图像缩放到原始图像大小的方式去进行图像切割。

18. 什么是batch normalization,原理是什么?

Batch Normalization就是在训练过程,每一层输入加一个标准化处理。

深度神经网络之所以复杂有一个原因就是由于在训练的过程中上一层参数的更新使得每一层的输入一直在改变。所以有个办法就是去标准化每一层的输入。具体归一化的方式如下图,如果只将归一化的结果进行下一层的输入,这样可能会影响到本层学习的特征,因为可能该层学习到的特征分布可能并不是正态分布的,这样强制变成正态分布会有一定影响,所以还需要乘上γ和β,这两个参数是在训练过程学习的,这样可以保留学习到的特征。

来自网络

神经网络其实就是一系列层组合成的,并且上一层的输出作为下层的输入,这意味着我们可以将神经网络的每一层都看成是以该层作为第一层的小型序列网络。这样我们在使用激活函数之前归一化该层的输出,然后将其作为下一层的输入,这样就可以解决输入一直改变的问题。

19. 为什么卷积核一般都是3*3而不是更大?

这个问题在VGGNet模型中很好的解释了。主要有这2点原因:第一,相对于用较大的卷积核,使用多个较小的卷积核可以获得相同的感受野和能获得更多的特征信息,同时使用小的卷积核参数更少,计算量更小。第二:你可以使用更多的激活函数,有更多的非线性,使得在你的CNN模型中的判决函数有更有判决性。

20. 你有一些跟机器学习相关的项目吗?

对于这个问题,你可以从你做过的研究与他们公司的业务之间的联系上作答。 你所学到的技能是否有一些可能与他们公司的业务或你申请的职位有关? 不需要是100%相吻合的,只要以某种方式相关就可以。这样有助于让他们认为你可以在这个职位上所产生的更大价值。

21. 解释一下你现在研究生期间的研究?平时都在做什么工作?未来的方向是什么?

这些问题的答案都跟20题的回答思路是一致的。

 

总结:

所有在我面试数据科学和机器学习岗位的时候遇到的面试题都在这里了。希望你能喜欢这篇文章并能从中学到一些新的有用的知识!

 

【文中所含链接】:

[1] The 5 Clustering Algorithms Data Scientists Need to Know:https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68

[2] select the proper regression model:

https://towardsdatascience.com/selecting-the-best-machine-learning-algorithm-for-your-regression-problem-20c330bad4ef

[3] benefits of max-pooling.:

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


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
author-avatar
mobiledu2502882453
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有