机器学习方面的面试主要分成三个部分: 1. 算法和理论基础 2. 工程实现能力与编码水平 3. 业务理解和思考深度
1. 理论方面,我推荐最经典的一本书《统计学习方法》,这书可能不是最全的,但是讲得最精髓,薄薄一本,适合面试前突击准备。 我认为一些要点是: 统计学习的核心步骤:模型、策略、算法,你应当对logistic、SVM、决策树、KNN及各种聚类方法有深刻的理解。能够随手写出这些算法的核心递归步的伪代码以及他们优化的函数表达式和对偶问题形式。 非统计学习我不太懂,做过复杂网络,但是这个比较深,面试可能很难考到。 数学知识方面,你应当深刻理解矩阵的各种变换,尤其是特征值相关的知识。 算法方面:你应当深刻理解常用的优化方法:梯度下降、牛顿法、各种随机搜索算法(基因、蚁群等等),深刻理解的意思是你要知道梯度下降是用平面来逼近局部,牛顿法是用曲面逼近局部等等。
2. 工程实现能力与编码水平 机器学习从工程实现一般来讲都是某种数据结构上的搜索问题。 你应当深刻理解在1中列出的各种算法对应应该采用的数据结构和对应的搜索方法。比如KNN对应的KD树、如何给图结构设计数据结构?如何将算法map-red化等等。 一般来说要么你会写C,而且会用MPI,要么你懂Hadoop,工程上基本都是在这两个平台实现。实在不济你也学个python吧。
3. 非常令人失望地告诉你尽管机器学习主要会考察1和2 但是实际工作中,算法的先进性对真正业务结果的影响,大概不到30%。当然算法必须要足够快,离线算法最好能在4小时内完成,实时算法我没搞过,要求大概更高。 机器学习大多数场景是搜索、广告、垃圾过滤、安全、推荐系统等等。对业务有深刻的理解对你做出来的系统的结果影响超过70%。这里你没做过实际的项目,是完全不可能有任何体会的,我做过一个推荐系统,没有什么算法上的高大上的改进,主要是业务逻辑的创新,直接就提高了很明显的一个CTR(具体数目不太方便透露,总之很明显就是了)。如果你做过实际的项目,一定要主动说出来,主动让面试官知道,这才是最大最大的加分项目。 最后举个例子,阿里内部机器学习挑战赛,无数碾压答主10000倍的大神参赛。最后冠军没有用任何高大上的算法而是基于对数据和业务的深刻理解和极其细致的特征调优利用非常基本的一个算法夺冠。所以啥都不如真正的实操撸几个生产项目啊。
1. 理论方面,我推荐最经典的一本书《统计学习方法》,这书可能不是最全的,但是讲得最精髓,薄薄一本,适合面试前突击准备。 我认为一些要点是: 统计学习的核心步骤:模型、策略、算法,你应当对logistic、SVM、决策树、KNN及各种聚类方法有深刻的理解。能够随手写出这些算法的核心递归步的伪代码以及他们优化的函数表达式和对偶问题形式。 非统计学习我不太懂,做过复杂网络,但是这个比较深,面试可能很难考到。 数学知识方面,你应当深刻理解矩阵的各种变换,尤其是特征值相关的知识。 算法方面:你应当深刻理解常用的优化方法:梯度下降、牛顿法、各种随机搜索算法(基因、蚁群等等),深刻理解的意思是你要知道梯度下降是用平面来逼近局部,牛顿法是用曲面逼近局部等等。
2. 工程实现能力与编码水平 机器学习从工程实现一般来讲都是某种数据结构上的搜索问题。 你应当深刻理解在1中列出的各种算法对应应该采用的数据结构和对应的搜索方法。比如KNN对应的KD树、如何给图结构设计数据结构?如何将算法map-red化等等。 一般来说要么你会写C,而且会用MPI,要么你懂Hadoop,工程上基本都是在这两个平台实现。实在不济你也学个python吧。
3. 非常令人失望地告诉你尽管机器学习主要会考察1和2 但是实际工作中,算法的先进性对真正业务结果的影响,大概不到30%。当然算法必须要足够快,离线算法最好能在4小时内完成,实时算法我没搞过,要求大概更高。 机器学习大多数场景是搜索、广告、垃圾过滤、安全、推荐系统等等。对业务有深刻的理解对你做出来的系统的结果影响超过70%。这里你没做过实际的项目,是完全不可能有任何体会的,我做过一个推荐系统,没有什么算法上的高大上的改进,主要是业务逻辑的创新,直接就提高了很明显的一个CTR(具体数目不太方便透露,总之很明显就是了)。如果你做过实际的项目,一定要主动说出来,主动让面试官知道,这才是最大最大的加分项目。 最后举个例子,阿里内部机器学习挑战赛,无数碾压答主10000倍的大神参赛。最后冠军没有用任何高大上的算法而是基于对数据和业务的深刻理解和极其细致的特征调优利用非常基本的一个算法夺冠。所以啥都不如真正的实操撸几个生产项目啊。
我面试过5-6家互联网公司的数据挖掘和分析、机器学习相关职位的工程师。被问到下面一些问题。
SVM的原理,SVM里面的核
K-means,如何用hadoop实现k-means
naive bayes和logistic regression的区别
LDA的原理和推导
做广告点击率预测,用哪些数据什么算法
推荐系统的算法中最近邻和矩阵分解各自适用场景
用户流失率预测怎么做(游戏公司的数据挖掘都喜欢问这个)
一个游戏的设计过程中该收集什么数据
如何从登陆日志中挖掘尽可能多的信息
这些问题我回答的情况,分几种。一种是在面试官的提示下,算是勉强完成了答案。一种是在面试官的提示下,答了一点但是答得不够好。一种是面试官不提示也没有反馈,我回答了但是我不知道回答得怎样。
我非常后悔的一点是我现在才想起来总结。有一个题是游戏玩家流失率预测,我被问过两次。但是每次我都说是个分类问题。最近我突然想起来去网上查了下,有两个点,数据不平衡问题和时间序列分析。我网上查到是一个大学教授和人人游戏合作的课题。我然后查了下这个老师的publication。没发现相关的论文。可能公司不让发表吧。
这些问题的特点是很基础很简单,因为实际中很少用复杂的算法,复杂的算法不好控制,而且理论要求高。另一个特点是注重考查实际工程能力,我经常被问到自己实现了哪些算法。还有的问题很契合实际。
我觉得如果现在再给我准备的机会。我会准备下面几点。
首先是计算机基础知识和算法,这些都是会正常考察的。有些公司考的少,有些公司正常考察。
针对机器学习这部分,需要理论扎实,还需要自己动手实现代码。另外hadoop,mpi,最近比较火的spark,应该都是加分项。另一个是接触下实际的数据分析系统。我在学校里面看的论文,都是讲算法的多,讲应用系统的少。这个可以靠之前的实习,也可以看些比较实用的论文。
PS 我是题主,自问自答下。
PS2 我面试的都是国内互联网公司和游戏公司。
SVM的原理,SVM里面的核
K-means,如何用hadoop实现k-means
naive bayes和logistic regression的区别
LDA的原理和推导
做广告点击率预测,用哪些数据什么算法
推荐系统的算法中最近邻和矩阵分解各自适用场景
用户流失率预测怎么做(游戏公司的数据挖掘都喜欢问这个)
一个游戏的设计过程中该收集什么数据
如何从登陆日志中挖掘尽可能多的信息
这些问题我回答的情况,分几种。一种是在面试官的提示下,算是勉强完成了答案。一种是在面试官的提示下,答了一点但是答得不够好。一种是面试官不提示也没有反馈,我回答了但是我不知道回答得怎样。
我非常后悔的一点是我现在才想起来总结。有一个题是游戏玩家流失率预测,我被问过两次。但是每次我都说是个分类问题。最近我突然想起来去网上查了下,有两个点,数据不平衡问题和时间序列分析。我网上查到是一个大学教授和人人游戏合作的课题。我然后查了下这个老师的publication。没发现相关的论文。可能公司不让发表吧。
这些问题的特点是很基础很简单,因为实际中很少用复杂的算法,复杂的算法不好控制,而且理论要求高。另一个特点是注重考查实际工程能力,我经常被问到自己实现了哪些算法。还有的问题很契合实际。
我觉得如果现在再给我准备的机会。我会准备下面几点。
首先是计算机基础知识和算法,这些都是会正常考察的。有些公司考的少,有些公司正常考察。
针对机器学习这部分,需要理论扎实,还需要自己动手实现代码。另外hadoop,mpi,最近比较火的spark,应该都是加分项。另一个是接触下实际的数据分析系统。我在学校里面看的论文,都是讲算法的多,讲应用系统的少。这个可以靠之前的实习,也可以看些比较实用的论文。
PS 我是题主,自问自答下。
PS2 我面试的都是国内互联网公司和游戏公司。
录制过一些解读的视频,分享一下。
完整版在这里: http://www.bittiger.io/blog/post/r7s58dHkzLjCm7agm
完整版在这里: http://www.bittiger.io/blog/post/r7s58dHkzLjCm7agm
-
数据科学(数据分析+机器学习)
-
入门
-
应用
-
广告搜索
-
深度学习
-
推荐系统
-
Airbnb大数据预测
-
图像问答
-
用户分析
-
-
抛砖引玉,在读硕士,半个月前去面了某公司机器学习intern铩羽而归了。机器学习部分一个面试官问了我一个小时,我估计如果真正能上的人光机器学习部分应该还会多来几轮。
首先介绍自己的研究经历。会随机问一些细节。
我面的推荐,问了各类协同过滤的好与坏。
然后我说我做过LDA,问我,Dirichlet Distribution的定义和性质,并问我,为什么它和multinomial distribution是共轭的,顺便问了我啥叫共轭分布。
问了一个很有意思的问题,现实应用中的Top-N推荐问题和学术研究中的评分预测问题之间有什么不同。
问我ItemCF的工程实现,面对大数据如何实现,又追问了有没有什么工程优化算法。这个问题我没答好,一开始我说了一个MapReduce模型,他问能不能更快一点,我就卡那了。。。最后面试官告诉我,不能只从算法角度分析,要从系统设计分析,利用内存来减小MapReduce的吞吐量。(当然也许从MapReduce那一刻开始我就输了也不一定)
最后考了我一个基本概念,什么叫判别模型什么叫生成模型。
回忆以前有一个去百度做广告业务的师兄分享的面试经历,记得没问什么高深算法,马尔科夫系列?
现在工业界的机器学习业务也不会太多,公司不是学术界在学术研究灌水上有多少追求,算法可实现,能可扩展高效分布式运行才是重点。
所以个人认为,机器学习工程师的核心还是在于工程师的能力,实际应用的问题分析能力和算法的实现能力很重要。机器学习的算法并不是重点。
PS1,各种研究院(微软雅虎IBM之类)的正式员工另当别论。
PS2,我只面过一个公司,和打听过一些情况,和听过一些算法工程师的技术分享去推断它们的工作状态和需求,一面之词,抛砖引玉。
PS3,国内
PS4,题主也请分享面试经历。
首先介绍自己的研究经历。会随机问一些细节。
我面的推荐,问了各类协同过滤的好与坏。
然后我说我做过LDA,问我,Dirichlet Distribution的定义和性质,并问我,为什么它和multinomial distribution是共轭的,顺便问了我啥叫共轭分布。
问了一个很有意思的问题,现实应用中的Top-N推荐问题和学术研究中的评分预测问题之间有什么不同。
问我ItemCF的工程实现,面对大数据如何实现,又追问了有没有什么工程优化算法。这个问题我没答好,一开始我说了一个MapReduce模型,他问能不能更快一点,我就卡那了。。。最后面试官告诉我,不能只从算法角度分析,要从系统设计分析,利用内存来减小MapReduce的吞吐量。(当然也许从MapReduce那一刻开始我就输了也不一定)
最后考了我一个基本概念,什么叫判别模型什么叫生成模型。
回忆以前有一个去百度做广告业务的师兄分享的面试经历,记得没问什么高深算法,马尔科夫系列?
现在工业界的机器学习业务也不会太多,公司不是学术界在学术研究灌水上有多少追求,算法可实现,能可扩展高效分布式运行才是重点。
所以个人认为,机器学习工程师的核心还是在于工程师的能力,实际应用的问题分析能力和算法的实现能力很重要。机器学习的算法并不是重点。
PS1,各种研究院(微软雅虎IBM之类)的正式员工另当别论。
PS2,我只面过一个公司,和打听过一些情况,和听过一些算法工程师的技术分享去推断它们的工作状态和需求,一面之词,抛砖引玉。
PS3,国内
PS4,题主也请分享面试经历。
看了一下各位回答,我要去面试妥妥跪了。。。借用一下
@Filestorm当年的一句话,原话记不得,大概意思是熟练工一天做完的,我们可能需要三天。但是我们一年做完的,熟练工永远做不完。以上各位答主都是在招熟练工吧。。。
常用模型和算法,至少有那么一两个能推导,能说出适用范围,能自己实现,有过应用。
另外,要有算法工程师的气质,那种对任何事物都愿意且能够深入思考的倾向。
据说,如果是应聘大公司初级工程师的话,刷题貌似有那么一丢丢用处,仅仅是一丢丢。
多扶老奶奶过马路多攒人品。
先总结几点,再谈个人经历。
1. 基本的Model要懂
Kmeans必须懂 KNN懂原理不用写 SVM、MR和Pagerank多看看,遇到问题多用这些方法讨论(不关乎信仰,面试官都懂)
2. 高层次的Model是关乎信仰的,不需要浪费时间在上面
比如LDA。以前信贝爷,觉得高大上。做过才知道坑有多深,出paper搞点黑数据可以,真正业界要用效果甚不稳定。HMM可以做语句分析优化,别的地方用也不显著。绝大多数时候搞个word net,做个tf idf就足够了,不行自己再加些hardcode,效果也比所谓的model好,性能也高。
另一说就是面试官不期望你懂这么高级的模型,就跟他们不能因为你不会拉小提琴而觉得你智商不够把你拒掉一样。
3. 人品、自信、反客为主的面试思路
以我的个人经历(Observation)(详见文末),不懂但人品好就拿到了Offer,懂但人品不好就拿不到Offer。(请随意Predict)
个人比较成功的面筋是看好面试官的cd间隔放大招:比如看简历沉没的时候主动说high light一下,有条件就把线上的project拿出来秀;代码写完主动说说能有什么改进思路,把面试官拐跑,就不会被他带到挖好的坑上来了。
4. 数据敏感性
比如预估数据规模和运行时间。
经历过以下几种case,不知是否match。
1. 10年,北京,刚毕业。申请国外phd跪了。魂友指明路去T大某ML实验室历练。提前两周看了下,感觉最懂的也只有贝叶斯公式了(其余只知道个缩写看着眼熟)约了时间也只能硬着头皮去了。
结果老板就看了看简历,只问我啥时候可以过去。=_=
2. 一年半后,在美读硕。经济压力山大,暑假前就开始找实习(真心困难,因为当时招ML或者Data Scientist的都只招Fulltime或者经老板介绍的PhD)简历投了也没人鸟,感觉还是懂iOS Android的吃香。好不容易遇到个start-up,面试时候我主动展示之前做的项目,挺满意,让我写个Page Rank,30分钟拍好Over。(允许看wiki看公式)老板不懂/不信LDA,反正SVM各种搞。
3. 有同学拿到EBay电面,抓我去帮忙递纸条,问的概率论基础,线性回归,码字符串处理,都是基本功。
4. 后来面了次Yelp,电面第二轮,代码拍太快了,导致他有时间问了第二个Follow up question,投票统计相关,我提了两种normalize方案,都不太完善,后来就不要我了。
5. FB一直没理我,估计是之前在Graph上面抓数据超了两次limit被封过ID(他们自己文档不写清楚)Google问的都是基本码农问题,跟ML关系不大。因为面的Test,码完让我自己出数据,我出多了,被鄙视,锯。
6. 去面Bing。Super Day面了6个人,前面问算法,后面吃着混沌面问的Query分析。最后没给Offer,因为收了N记2万5员工用完招人名额。(据说还给EVP打了报告,没批。算了)
最后忠告:
攒人品。
信自己的数学和逻辑直觉,不要信Model。
信不信贝爷和得不得永生是相对独立事件。
所以“信贝爷得永生”在贝爷的公理范围内至少是悖论。
先总结几点,再谈个人经历。
1. 基本的Model要懂
Kmeans必须懂 KNN懂原理不用写 SVM、MR和Pagerank多看看,遇到问题多用这些方法讨论(不关乎信仰,面试官都懂)
2. 高层次的Model是关乎信仰的,不需要浪费时间在上面
比如LDA。以前信贝爷,觉得高大上。做过才知道坑有多深,出paper搞点黑数据可以,真正业界要用效果甚不稳定。HMM可以做语句分析优化,别的地方用也不显著。绝大多数时候搞个word net,做个tf idf就足够了,不行自己再加些hardcode,效果也比所谓的model好,性能也高。
另一说就是面试官不期望你懂这么高级的模型,就跟他们不能因为你不会拉小提琴而觉得你智商不够把你拒掉一样。
3. 人品、自信、反客为主的面试思路
以我的个人经历(Observation)(详见文末),不懂但人品好就拿到了Offer,懂但人品不好就拿不到Offer。(请随意Predict)
个人比较成功的面筋是看好面试官的cd间隔放大招:比如看简历沉没的时候主动说high light一下,有条件就把线上的project拿出来秀;代码写完主动说说能有什么改进思路,把面试官拐跑,就不会被他带到挖好的坑上来了。
4. 数据敏感性
比如预估数据规模和运行时间。
经历过以下几种case,不知是否match。
1. 10年,北京,刚毕业。申请国外phd跪了。魂友指明路去T大某ML实验室历练。提前两周看了下,感觉最懂的也只有贝叶斯公式了(其余只知道个缩写看着眼熟)约了时间也只能硬着头皮去了。
结果老板就看了看简历,只问我啥时候可以过去。=_=
2. 一年半后,在美读硕。经济压力山大,暑假前就开始找实习(真心困难,因为当时招ML或者Data Scientist的都只招Fulltime或者经老板介绍的PhD)简历投了也没人鸟,感觉还是懂iOS Android的吃香。好不容易遇到个start-up,面试时候我主动展示之前做的项目,挺满意,让我写个Page Rank,30分钟拍好Over。(允许看wiki看公式)老板不懂/不信LDA,反正SVM各种搞。
3. 有同学拿到EBay电面,抓我去帮忙递纸条,问的概率论基础,线性回归,码字符串处理,都是基本功。
4. 后来面了次Yelp,电面第二轮,代码拍太快了,导致他有时间问了第二个Follow up question,投票统计相关,我提了两种normalize方案,都不太完善,后来就不要我了。
5. FB一直没理我,估计是之前在Graph上面抓数据超了两次limit被封过ID(他们自己文档不写清楚)Google问的都是基本码农问题,跟ML关系不大。因为面的Test,码完让我自己出数据,我出多了,被鄙视,锯。
6. 去面Bing。Super Day面了6个人,前面问算法,后面吃着混沌面问的Query分析。最后没给Offer,因为收了N记2万5员工用完招人名额。(据说还给EVP打了报告,没批。算了)
最后忠告:
攒人品。
信自己的数学和逻辑直觉,不要信Model。
信不信贝爷和得不得永生是相对独立事件。
所以“信贝爷得永生”在贝爷的公理范围内至少是悖论。
关于考察方面,上面已经讲得很详细了,直接给你贴几个面试数据挖掘实习生经验贴,都是15年崭新的血与泪啊。(网站是100块钱的国外虚拟空间,没有进行什么优化处理,所以网页打开会非常慢,请见谅。)
百度数据挖掘实习工程师一、二现场面试(深圳)
阿里巴巴电话面试2面总结(数据挖掘,天猫事业部)
百度NLP电话面试总结
如何准备面试呢?个人经验:
1. 代码算法:基本算法(如快排等,需要熟练掌握) + 剑指Offer(面试经常出相似的题) + LeetCode(剑指Offer的补充,增强动手能力)
2. 机器学习:李航《统计学习方法》(读3遍都不为过啊!) + Coursera Stanford《Machine Learning》(讲得很基础,但是没有告诉你所以然) + Coursera *大学《机器学习高级技法》(里面详解了SVM,Ensemble等模型的推导,优劣)
3. 请详细地回忆自己做过的项目,项目用了什么算法,为什么用它,有什么优缺点等。如果没项目经验可以参加天猫大数据比赛和Kaggle比赛。
4. 教你如何迅速秒杀掉:99%的海量数据处理面试题。(基本每次都有一道海量数据处理的面试题)
PS:终于拿到某互联网公司的数据挖掘实习工程师的Offer啦,好开心啊~~~
百度数据挖掘实习工程师一、二现场面试(深圳)
阿里巴巴电话面试2面总结(数据挖掘,天猫事业部)
百度NLP电话面试总结
如何准备面试呢?个人经验:
1. 代码算法:基本算法(如快排等,需要熟练掌握) + 剑指Offer(面试经常出相似的题) + LeetCode(剑指Offer的补充,增强动手能力)
2. 机器学习:李航《统计学习方法》(读3遍都不为过啊!) + Coursera Stanford《Machine Learning》(讲得很基础,但是没有告诉你所以然) + Coursera *大学《机器学习高级技法》(里面详解了SVM,Ensemble等模型的推导,优劣)
3. 请详细地回忆自己做过的项目,项目用了什么算法,为什么用它,有什么优缺点等。如果没项目经验可以参加天猫大数据比赛和Kaggle比赛。
4. 教你如何迅速秒杀掉:99%的海量数据处理面试题。(基本每次都有一道海量数据处理的面试题)
PS:终于拿到某互联网公司的数据挖掘实习工程师的Offer啦,好开心啊~~~
from: https://www.zhihu.com/question/23259302#answer-36117447