面试数据挖掘&机器学习ML

机器学习求职

2016-12-25  本文已影响2620人  大海一滴写字的地方

http://m.blog.csdn.net/article/details?id=52814653

链接

【如何准备机器学习工程师的面试 ?】牛客网:最好的办法就是… https://www.zhihu.com/question/23259302/answer/219153454?utm_source=com.miui.notes&utm_medium=social (分享自知乎网)

当时被面机器学习内容的时候,基本是被不停追问为什么。。。举个例子,问L1范数的含义,然后问为什么L1可以防止过拟合,然后答了模型复杂度低,然后问为什么模型复杂度可以防止过拟合,答了奥卡姆剃刀原理,然后又问了L1为什么就可以使模型复杂度低,然后答了这其实是一个特征选择,用了更少特征。。。不过貌似面试官对于这个不是特别满意,然后类似的还问了卷及神经网原理什么的。。。反正就是一直问为什么,一直问到不知道为什么为止。。。好在最后还是过了。。。我经历的一次面试就是这样的。。。一点经验分享下吧

L1范数并不是直接减少了特征数吧~~虽说在实际计算时,会产生减少特征数的倾向,但本质上的原因还是降低了模型的表达能力,也就是VC维。相关概念参考可学习性理论。类似的问题还有,为什么(在某些情况下,比如特征数少之类的)SVM会比感知机效果更好。。。

过拟合实质上是模型的表示能力“太强”,也就是模型容量太大。通过加上正则来降低模型的容量或者表示能力,L1约束模型参数分布比较稀疏,L2约束参数分布均匀一点。

简单点说,l1限制了模型容量,所以可以减少过拟合

l2相当于认为参数服从高斯分布,l1是拉普拉斯分布

数据之路 - 机器学习(常见面试之机器学习算法思想简单梳理)(分享自知乎网)https://zhuanlan.zhihu.com/p/27626182?utm_source=com.miui.notes&utm_medium=social

一般我会让他们推导公式的,譬如LR或者SVM,损失函数怎么来的,怎样去优化。公式推导完成后,会问到实际应用场景,适合多少样本和什么样的特征,怎样做分布式,有哪些缺点和优点,LR和SVM的区别与联系……感觉就这些可以问很久了。

然后树模型相关的,可以从ID3、C4.5、CART到RandomForests、GBDT、Xgboost,这些模型之间关系,还有RF、GBDT、Xgboost的推导,他们的bias和variance解释等等。另外问了好多人树模型的损失函数竟然都不知道……

当然,讲神经网络到深度学习,那就更多了,主要是考察其是否看了论文吧,论文中的细节。

我感觉这些算法可以判断面试者的机器学习水平了,也是我面试常问的东西,个人浅见,勿喷。

为什么模型复杂度可以防止过拟合:高复杂度 -> 高VC dimension -> 高generalization error。再问的深就要上Hoeffding’s Inequality了。

机器学习大概问过lr,svm,pr曲线,朴素贝叶斯的assumption,ensemble方法,决策树节点用哪个特征进行划分,gbdt原理,random forest原理,pca和lda降维原理,写k means和gmm公式,特征选择的方法有哪些,cnn与rnn的区别,你所知道的距离度量方式,你所知道的loss function,蓄水池抽样。具体可以看看

最后就是基础的coding能力。背包问题,lcs,lis,编辑距离,最长回文子串等dp问题;链表反转,递归和非递归解法,判断是否有环等链表问题;树的前序,中序,后序遍历,判断镜像,判断是否是完全二叉树或者满二叉树,求树的深度,lca等树的问题;快排,堆排序,归并排序,最大k个数,时间复杂度等排序问题;实现atoi等等。具体可以看看这个总结

试过百度和阿里数据挖掘

算法有svm em算法 都要推导证明

1 决策树的模型很重要,不会问你ID3这些简单的,甚至CART都不会,不过会问GBDT,随机森林。

2 SVM不可能不问。

3 理解得很深才能给面试官讲明白。

作为一名新晋菜鸟面试官,最近替部门面了3、40个人(大多来自国内top5学校,包括校招社招),小小总结下我的相人之术,希望能帮上大家

/* 先插个话,本题的答主中,有我非常膜拜的真大神,也有掉书袋的教条主义者,对后者,我有一言相劝

面试官的水平(而非面试者)决定了面试的上限,所以当面试者水平超过你时,承认被碾压、虚心接受就好,并适时向对方学习,而不是拿那些条条框框的应试题来恶心人

*/

----------------------

面试别人时,我主要遵循『两原则』和『三方面』

『两原则』指:

绝不网上现搜应试题(一不尊重面试者,二这种题大多考察不了真水平),确保所问问题是自己认真思考过的

在自己能力范围内,不停追问面试者所做的项目、所掌握的理论细节,看他掌握到什么程度,评判他简历内容的真实性

『三方面』包括:

理论功底

代码能力

项目能力

----------------------

把三方面展开:

【理论功底】主要考察对机器学习模型的理解,选择性提问(如果遇到面试者的研究方向自己不了解但感兴趣,会很欣喜,可以趁机学习一个哈哈)这块儿的问题会比较细碎,都是我自己深入思考过的(背书是没用的,这里任何一个点我都可以给你展开问下去),在此全部手敲

过拟合欠拟合(举几个例子让判断下,顺便问问交叉验证的目的、超参数搜索方法、EarlyStopping)、L1正则和L2正则的做法、正则化背后的思想(顺便问问BatchNorm、Covariance Shift)、L1正则产生稀疏解原理、逻辑回归为何线性模型(顺便问问LR如何解决低维不可分、从图模型角度看LR和朴素贝叶斯和无监督)、几种参数估计方法MLE/MAP/贝叶斯的联系和区别、简单说下SVM的支持向量(顺便问问KKT条件、为何对偶、核的通俗理解)、 GBDT随机森林能否并行(顺便问问bagging boosting)、 生成模型判别模型举个例子、聚类方法的掌握(顺便问问Kmeans的EM推导思路、谱聚类和Graph-cut的理解)、梯度下降类方法和牛顿类方法的区别(顺便问问Adam、L-BFGS的思路)、半监督的思想(顺便问问一些特定半监督算法是如何利用无标签数据的、从MAP角度看半监督)、常见的分类模型的评价指标(顺便问问交叉熵、ROC如何绘制、AUC的物理含义、类别不均衡样本)

CNN中卷积操作和卷积核作用、maxpooling作用、卷积层与全连接层的联系、梯度爆炸和消失的概念(顺便问问神经网络权值初始化的方法、为何能减缓梯度爆炸消失、CNN中有哪些解决办法、LSTM如何解决的、如何梯度裁剪、dropout如何用在RNN系列网络中、dropout防止过拟合)、为何卷积可以用在图像/语音/语句上(顺便问问channel在不同类型数据源中的含义)

如果面试者跟我一样做NLP、推荐系统,我会继续追问 CRF跟逻辑回归 最大熵模型的关系、CRF的优化方法、CRF和MRF的联系、HMM和CRF的关系(顺便问问 朴素贝叶斯和HMM的联系、LSTM+CRF 用于序列标注的原理、CRF的点函数和边函数、CRF的经验分布)、WordEmbedding的几种常用方法和原理(顺便问问language model、perplexity评价指标、word2vec跟Glove的异同)、topic model说一说、为何CNN能用在文本分类、syntactic和semantic问题举例、常见Sentence embedding方法、注意力机制(顺便问问注意力机制的几种不同情形、为何引入、seq2seq原理)、序列标注的评价指标、语义消歧的做法、常见的跟word有关的特征、factorization machine、常见矩阵分解模型、如何把分类模型用于商品推荐(包括数据集划分、模型验证等)、序列学习、wide&deep model(顺便问问为何wide和deep)

【代码能力】主要考察实现算法和优化代码的能力,我一般会先看面试者的github repo(如果简历给出来),看其代码风格、架构能力(遇到大神会认真学习一个哈哈),如果没有github,我会避免问典型的应试题,而是问一些 我本人从实际问题中抽象出的小算法题,比如:

给出节点的矩阵和边的矩阵,求路径和最大的路径(来源于 Viterbi 算法,本质就是个动态规划),至少给个思路和伪代码(顺便聊聊前向传播和反向传播)

给出一数组,数组元素是pair对儿,表示一个有向无环图的<父亲节点, 孩子节点>,用最优的方法,将其变成一个新的有序数组,数组元素是该有向无环图所有节点,数组的有序性体现在:父亲节点在孩子节点前面(来源于 贝叶斯网络实现时的小trick)

【项目能力】主要考察解决实际问题的思路、填坑能力,这部分最考验面试官功底,要能从面试者浮夸的描述中寻找有意义的点,并一步步深挖。另外很多dirty work(数据预处理、文本清洗、调参经验、算法复杂度优化、Bad case分析、修改损失函数等)也是在这步深挖

最后,我会问面试者:『有没有我刚没问到、但你特别想分享的项目经历』。此问题是给面试者一个展现自我的机会,同时也是挖掘出之前遗漏的问题。

作者:赵鹏

链接:https://www.zhihu.com/question/27292215/answer/133141387

来源:知乎

著作权归作者所有,转载请联系作者获得授权。

我是一个从传统行业转行到数据挖掘的应届生,我从我的角度回答一下这个问题吧,希望能对其他的同学有帮助,不过毕竟是个人经历,有一定的局限性,还请大家以批判的眼光看待这篇回答。

1. 前言

答主是2017应届毕业生,已签美团的数据挖掘岗,本次秋招一共投递了39份简历,做了19场笔试,面了12家公司,从一开始的完全不自信,到被折磨的要死但还是坚强的活下来,到最后的各种坦然,成长了许多。

答主本硕均是机械专业,在校学习成绩中等偏上,原本想从事嵌入式方向的工作,无奈学了两个月被导师叫停,说没有项目学完就忘,遂作罢。研二上在没有目标的情况下系统的学习了C++和数据结构,入门了Python。研二下开始学习机器学习相关知识,从四月下旬开始出差给导师做无聊的项目,白天出去搬砖,晚上回来学习,暑假没回家继续学习(暑假其实就两周),直到八月底开始找工作。

整个自学的过程一年左右,主要内容有计算机专业的基础知识,基础的机器学习知识,由于时间的原因,没有学hadoop和spark,这点确实是短板,各位如果有时间,最好能看看。

2. 基础知识自学

面试的时候一般先问基础知识:编程语言,数据结构和算法,操作系统和网络编程(数据库相对而言问的比较少),前两部分非常重要!如果前两部分非常熟悉,后两部分稍微会一点都能过面试,但是前两部分只会一点或者不会,九成九会跪在一面。答主就是前两部分比较熟悉,后两部分背了背常见的面试题,所有的面试都走到了终面。

2.1 编程语言

编程语言常问的是C/C++和Java,答主学的是C++。我首先把C语言圣经《C程序设计语言》详细的看了一遍,然后系统的看了《C++ Primer》(这本书已经出到第五版了),如果其他同学时间充裕的话,可以再把《Effective C++》看一下。

此处说明一下,看书不是简单地“看”,而是不看书能手敲出书上的例子,能独自做课后题。在这个过程中,常常会发现自己写的代码和书上代码,参考答案的代码有一些不一样,重点分析不一样的部分,会有很大的收获。我常常用笔抄一些关键代码,然后在纸上画出一个章节的简单思维导图,默记一会,把纸扔掉,最后把没有记住的知识点总结在为知笔记中,每过一段时间复习一下。

如果学的是C++,学完以后,要能回答下面的问题:内存怎么管理,const有什么用,引用和指针的区别,虚函数和纯虚函数,虚函数表,继承,重载和多态,模板函数,模板类,容器等相关知识。

2.2 数据结构和算法

网上大多人推荐的是《算法导论》或者《数据结构与算法分析(C语言描述)》,《算法导论》确实是一本很牛逼的书,但是真的太难啃了,不适合“快速学习”,这里我推荐《算法(第4版)》,这本书使用Java讲解常见的算法,但是完全木有关系,Java零基础的我看起来没有任何压力,因为该书几乎没有用到Java的任何特殊语法。

仅仅看《算法(第4版)》是不够的,还需要《剑指offer》《程序员代码面试指南》,《剑指offer》一定要多看几遍,里面的题目真的被考烂了,被问到原题的概率很大。《程序员代码面试指南》属于提升书籍,里面按照专题把题目归类了,强烈建议把动态规划专题看一遍。

如果只会算法而不能把代码写出来,也不行,锻炼这个能力只能靠OJ了。这里推荐去牛客网刷题,可以先刷《剑指offer》或者学习《直通BAT面试算法精讲课》,然后再刷leetcode专题,刷leetcode的时候可以按照网上推荐的顺序刷,非常舒服(第一次做的时候,可以先跳过hard,最后再做)。

数据结构和算法常考的是堆,栈,排序,链表,二叉树和动态规划等,相关的问题多练练,面试的时候才能写得比较快。有句话这么说,考试并不是让考生在考场上把不会的题做出来,而是检查考生会什么,不会什么,仅此而已。面试的时候,如果反应快一点,能给面试官留下很好的印象。

2.3 操作系统和网络编程

这里答主没怎么学,时间不够,看了几章《深入理解计算机系统》就看不下去,罪过。。。

后来就去搜索常见的面试题:进程和线程的区别有哪些?进程/线程间如何通信?如何防止线程死锁?TCP三次握手四次挥手是个什么步骤?我把这些问题的答案背下来,等面试官问我的时候我再背出来,然后坦白自己没有学过操作系统和网络编程,这些都是我在网上找答案背的,再深一点我也不会了。一般情况下,面试官的表情会比较诧异,不过也就不再讨论这个话题了。

这部分怎么学我不清楚,各位还是咨询计算机专业的同学或者看看别的答案吧。

2.4 个人学习历程

答主花了半年时间(研二上)点了编程语言,数据结构和算法的技能点,顺道点了一些别的小技能点。这段时间主要看了《C++ Primer》,《算法(第4版)》,《Learn Python The Hard Way》,《鸟哥的Linux私房菜》,按照廖雪峰的教程把git学了一下,开始用markdown写博客。

3. 机器学习自学

今年的机器学习很火,稍微大一点的公司都招这个方面的人才,我的感觉大多人都是自学的,貌似本科开这个专业的学校很少?

个人理解的机器学习主要有三个方向(按照岗位要求分):数据挖掘,自然语言处理和深度学习数据挖掘主要是搜索排序,反作弊,个性化推荐,信用评价等自然语言处理主要是分词,词性分析等深度学习主要是语音和图像识别

(此处经知友@吴文君提醒,数据挖掘是一个较为宽泛的概念,包含机器学习,自然语言处理和深度学习,我在这里把概念搞混了,大家不要被我误导哈)

我找的是数据挖掘方向,所以就说说这个方向的个人学习经验吧。

主要准备两个方面,一方面是掌握常见机器学习算法原理,另一方面是应用这些算法并解决问题。

3.1 常见机器学习算法

和大部分人一样,我是看吴恩达老师的《机器学习》视频入门的,看了两遍,说实话第一遍自己以为懂了,看第二遍的时候才发现第一遍的懂了是“假懂”,第一遍懂得就是皮毛。吴恩达的视频有两个版本,一个是网易公开课在教室讲课录制的版本,另一个是在自己办公室录制的版本,我看的是在办公室录制的版本,看了网易公开课版本的目录之后,个人感觉网易公开课的要难一点。

看完视频以后,需要自己动手实践加深理解,这里我主要看《机器学习实战》和《统计学习方法》,前者全是实践没有理论,后者全是理论没有实践,所以结合起来学习非常棒。我主要按照《机器学习实战》的目录学,涉及到什么机器学习模型,就去《统计学习方法》中看该模型的数学推导及证明,然后把《机器学习实战》上的代码敲一遍,验证一遍。

后来市面上出了一本很好的机器学习教材:周志华老师的《机器学习》。我现在的建议是主要按照《机器学习》的结构走,《机器学习实战》和《统计学习方法》作为辅助,《机器学习实战》有对应模型的代码就敲一遍,没有就算了;《统计学习方法》的证明一般比《机器学习》更深一点,有对应的证明就看,没有就算了。

上面三本书吃透,基础就差不多了,但是面试的时候会发现,除了DT,LR,SVM问得比较多之外,随机森林和GBDT问的也非常多,以及参数如何调整,模型如何评价等等。这些东西只能求助于搜索引擎和论文了,暂时没有别的系统的学习方法。

补充一下,推荐算法问的也比较多,把项亮的《推荐系统实践》好好看就行了

学完这个部分应该会的问题,我放在了最后,以免影响排版。

3.2 应用这些算法并解决问题

在实际的工作中,硕士生其实大多是用算法而不是发明算法,所以还得学会怎么用算法解决实际问题。这里建议参加Kaggle的比赛,都是比较实际的问题,而且还有排名,面试的时候也有一定的说服力。

这里主要学一些Python的包就行了,如numpy,pandas,matplotlib和sklearn等,推荐一本五星级好书:《利用Python进行数据分析》

这一部分关于特征处理的问题问的比较多,比如怎么选相关特征,如何清洗数据,以及选取什么样的机器学习模型

3.3 个人学习历程

机器学习部分答主也花了半年的时间学习(研二下),看了《机器学习实战》和《统计学习方法》,《机器学习》只看了几章,《利用Python进行数据分析》看了一大半,《推荐系统实践》看了一半。机器学习相关的东西得经常复习,尤其是推导部分,SVM的推导我每隔几周复习一次,每次都有新的收获。

自己写了一个豆瓣爬虫,爬了豆瓣11W多网页共4W本书,利用PyQt写了一个界面,使用基于物品的协同过滤算法推荐书籍。

这段时间还走了点弯路,报了个课程,写了一个图片分享网站,学了一些前端和后台的东西,如HTML,CSS,JavaScript和Flask等等,本来是想学完这个,把书籍推荐的那个项目从单机版做成网页版,服务于他人,结果根本没时间,做不到那一步,面试也从来没问过这些东西,囧……

4. 其它

做数据挖掘不可避免的要接触大数据,目前常用的大数据框架就两个,Hadoop和Spark,如果会一个就很有优势,在美团实习的同学说这两个都用……所以建议看完C以后,不学C++,学Java,因为Hadoop的原生开发语言是Java,资料多;相应的Spark的原生开发语言是Scala,不过也有Python的API。

具体学Hadoop还是Spark,学Java还是Scala,大家还是在拉勾网上面看自己心仪岗位的要求。反正答主目前是在恶补Java和Hadoop,希望在入职前补上短板。

5. 校招

每年3、4月份各大厂会招很多实习生,尽量出去实习,面试的时候有实习经历很有优势,哪怕公司比较小,只要你实际上在认真的做项目就可以了,有人带怎么都比自学好。答主原本计划出去实习,但是导师根本不放,心好累。

面试主要有两点要说,一是一定要先去面一下不想去的公司,熟悉一下面试流程和套路,二是一定要多看面经。答主花了两天看了近200篇机器学习岗的面经,把问题和答案都整理了一下,收获很大,后面面试碰到了好多原题。

对于答主来说,最难的不是面试,而是笔试,笔试范围广,难度大,今年要是不能全AC,进面试很难。怎么办?想办法内推吧,避免参加笔试,内推从7月份就开始了,多找学长问问,没有学长,就去论坛上发帖求内推,要不然9月份笔一次挂一次,会严重怀疑人生。

6. 推荐书单

先说答主看过的,质量保证:

C/C++:《C程序设计语言》,《C++ Primer》

数据结构和算法:《算法(第4版)》,《剑指offer》,《程序员代码面试指南》

机器学习:《机器学习》(周志华),《机器学习实战》,《统计学习方法》,《推荐系统实践》

Python:《Python核心编程(第二版)》,《利用Python进行数据分析》

其中《Python核心编程(第二版)》有点厚,像字典,不适合遍历,网上都推荐《Python基础教程》,应该也不错。

没看过的,但是评价也不错的:《Effective C++》,《STL源码剖析》;《编程之美》,《编程珠玑》;《数据挖掘导论》,《集体智慧编程》,《模式识别和机器学习》,《凸优化》;《深入理解计算机系统》,《操作系统》,《计算机程序的构造和解释》,《代码大全》,《Head First 设计模式》,《代码整洁之道》,《程序员的自我修养》。

这些书足够看3-5年了,233~

7. 小结

一定要耐得住寂寞,守得住孤独,没有人和你讨论问题,就去网上求助

一定要动手实践并且随时做笔记,要不然忘得很快

OJ尽早开始刷,最晚7月开始,9月前至少做完200~300道题

能实习就实习,不能实习一定要参加Kaggle比赛

常见的机器学习模型都能推导,会调参,能说优缺点,能和别的模型比较

彩蛋——常见机器学习问题

什么是bias和variance

k折交叉验证中k取值多少有什么关系

分类模型和回归模型的区别是什么

为什么会产生过拟合

如何解决过拟合

写出信息增益,信息增益比和基尼系数的公式

写出LR的目标函数和损失函数

LR和SVM的异同

推导SVM

SVM在哪个地方引入核函数

常用的核函数有哪些,说说它们的特点及调参方式

随机森林的学习过程

随机森林的优缺点

GBDT和随机森林的区别

如何判断决策树过拟合

线性分类器与非线性分类器的区别及优劣

特征比数据量还大时,选择什么样的分类器

L1和L2正则的区别,如何选择L1和L2正则

多分类怎么处理

如何进行特征选择

吐槽一个推荐算法,并提出修改意见

面试经验分享之机器学习、大数据问题

机器学习、大数据相关岗位的职责

自己参与面试的提供算法岗位的公司有 BAT、小米、360、飞维美地、宜信、猿题库 等,根据业务的不同,岗位职责大概分为:

平台搭建类

数据计算平台搭建,基础算法实现,当然,要求支持大样本量、高维度数据,所以可能还需要底层开发、并行计算、分布式计算等方面的知识;

算法研究类

文本挖掘,如领域知识图谱构建、垃圾短信过滤等;

推荐,广告推荐、APP 推荐、题目推荐、新闻推荐等;

排序,搜索结果排序、广告排序等;

广告投放效果分析;

互联网信用评价;

图像识别、理解。

数据挖掘类

商业智能,如统计报表;

用户体验分析,预测流失用户。

以上是根据本人求职季有限的接触所做的总结。有的应用方向比较成熟,业界有足够的技术积累,比如搜索、推荐,也有的方向还有很多开放性问题等待探索,比如互联网金融、互联网教育。在面试的过程中,一方面要尽力向企业展现自己的能力,另一方面也是在增进对行业发展现状与未来趋势的理解,特别是可以从一些刚起步的企业和团队那里,了解到一些有价值的一手问题

以下首先介绍面试中遇到的一些真实问题,然后谈一谈答题和面试准备上的建议。

面试问题

你在研究/项目/实习经历中主要用过哪些机器学习/数据挖掘的算法?

你熟悉的机器学习/数据挖掘算法主要有哪些?

你用过哪些机器学习/数据挖掘工具或框架?

基础知识

无监督和有监督算法的区别?

SVM 的推导,特性?多分类怎么处理?

LR 的推导,特性?

决策树的特性?

SVM、LR、决策树的对比?

GBDT 和 决策森林 的区别?

如何判断函数凸或非凸?

解释对偶的概念。

如何进行特征选择?

为什么会产生过拟合,有哪些方法可以预防或克服过拟合?

介绍卷积神经网络,和 DBN 有什么区别?

采用 EM 算法求解的模型有哪些,为什么不用牛顿法或梯度下降法?

用 EM 算法推导解释 Kmeans。

用过哪些聚类算法,解释密度聚类算法。

聚类算法中的距离度量有哪些?

如何进行实体识别?

解释贝叶斯公式和朴素贝叶斯分类。

写一个 Hadoop 版本的 wordcount。

……

开放问题

给你公司内部群组的聊天记录,怎样区分出主管和员工?

如何评估网站内容的真实性(针对代刷、作弊类)?

深度学习在推荐系统上可能有怎样的发挥?

路段平均车速反映了路况,在道路上布控采集车辆速度,如何对路况做出合理估计?采集数据中的异常值如何处理?

如何根据语料计算两个词词义的相似度?

在百度贴吧里发布 APP 广告,问推荐策略?

如何判断自己实现的 LR、Kmeans 算法是否正确?

100亿数字,怎么统计前100大的?

……

答题思路

用过什么算法?

最好是在项目/实习的大数据场景里用过,比如推荐里用过 CF、LR,分类里用过 SVM、GBDT;

一般用法是什么,是不是自己实现的,有什么比较知名的实现,使用过程中踩过哪些坑

优缺点分析。

熟悉的算法有哪些?

基础算法要多说,其它算法要挑熟悉程度高的说,不光列举算法,也适当说说应用场合;

面试官和你的研究方向可能不匹配,不过在基础算法上你们还是有很多共同语言的,你说得太高大上可能效果并不好,一方面面试官还是要问基础的,另一方面一旦面试官突发奇想让你给他讲解高大上的内容,而你只是泛泛的了解,那就傻叉了。

用过哪些框架/算法包?

主流的分布式框架如 Hadoop,Spark,Graphlab,Parameter Server 等择一或多使用了解;

通用算法包,如 mahout,scikit,weka 等;

专用算法包,如 opencv,theano,torch7,ICTCLAS 等。

基础知识

个人感觉高频话题是 SVM、LR、决策树(决策森林)和聚类算法,要重点准备;

算法要从以下几个方面来掌握

产生背景,适用场合(数据规模,特征维度,是否有 Online 算法,离散/连续特征处理等角度);

原理推导(最大间隔,软间隔,对偶);

求解方法(随机梯度下降、拟牛顿法等优化算法);

优缺点,相关改进;

和其他基本方法的对比;

不能停留在能看懂的程度,还要

对知识进行结构化整理,比如撰写自己的 cheet sheet,我觉得面试是在有限时间内向面试官输出自己知识的过程,如果仅仅是在面试现场才开始调动知识、组织表达,总还是不如系统的梳理准备;

从面试官的角度多问自己一些问题,通过查找资料总结出全面的解答,比如如何预防或克服过拟合。

开放问题

由于问题具有综合性和开放性,所以不仅仅考察对算法的了解,还需要足够的实战经验作基础;

先不要考虑完善性或可实现性,调动你的一切知识储备和经验储备去设计,有多少说多少,想到什么说什么,方案都是在你和面试官讨论的过程里逐步完善的,不过面试官有两种风格:引导你思考考虑不周之处 or 指责你没有考虑到某些情况,遇到后者的话还请注意灵活调整答题策略;

和同学朋友开展讨论,可以从上一节列出的问题开始。

准备建议

基础算法复习两条线

材料阅读包括经典教材(比如 PRML,模式分类)、网上系列博客(比如 研究者July),系统梳理基础算法知识;

面试反馈面试过程中会让你发现自己的薄弱环节和知识盲区,把这些问题记录下来,在下一次面试前搞懂搞透

除算法知识,还应适当掌握一些系统架构方面的知识,可以从网上分享的阿里、京东、新浪微博等的架构介绍 PPT 入手,也可以从 Hadoop、Spark 等的设计实现切入。

如果真的是以就业为导向就要在平时注意实战经验的积累,在科研项目、实习、比赛(Kaggle,Netflix,天猫大数据竞赛等)中摸清算法特性、熟悉相关工具与模块的使用。

总结

如今,好多机器学习、数据挖掘的知识都逐渐成为常识,要想在竞争中脱颖而出,就必须做到

保持学习热情,关心热点;

深入学习,会用,也要理解;

在实战中历练总结;

积极参加学术界、业界的讲座分享,向牛人学习,与他人讨论。

最后,希望自己的求职季经验总结能给大家带来有益的启发。

继机器学习、大数据问题,接下来的博文还会陆续分享智力题、编程语言题和数据结构与算法题,敬请期待。

访问入口:

机器学习、大数据问题

智力题

数据结构与算法题

编程语言题

作者:周开拓

链接:https://www.zhihu.com/question/23259302/answer/24857674

来源:知乎

著作权归作者所有,转载请联系作者获得授权。

机器学习方面的面试主要分成三个部分: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倍的大神参赛。最后冠军没有用任何高大上的算法而是基于对数据和业务的深刻理解和极其细致的特征调优利用非常基本的一个算法夺冠。所以啥都不如真正的实操撸几个生产项目啊。

作者:刘志权

链接:https://www.zhihu.com/question/23259302/answer/24300412

来源:知乎

著作权归作者所有,转载请联系作者获得授权。

SVM的原理,SVM里面的核

K-means,如何用hadoop实现k-means

naive bayes和logistic regression的区别

LDA的原理和推导

做广告点击率预测,用哪些数据什么算法

推荐系统的算法中最近邻和矩阵分解各自适用场景

用户流失率预测怎么做(游戏公司的数据挖掘都喜欢问这个)

一个游戏的设计过程中该收集什么数据

如何从登陆日志中挖掘尽可能多的信息

我非常后悔的一点是我现在才想起来总结。有一个题是游戏玩家流失率预测,我被问过两次。但是每次我都说是个分类问题。最近我突然想起来去网上查了下,有两个点,数据不平衡问题和时间序列分析。我网上查到是一个大学教授和人人游戏合作的课题。我然后查了下这个老师的publication。没发现相关的论文。可能公司不让发表吧。

游戏流失率措施:

http://www.36dsj.com/archives/2623

最后考了我一个基本概念,什么叫判别模型什么叫生成模型。

回忆以前有一个去百度做广告业务的师兄分享的面试经历,记得没问什么高深算法,马尔科夫系列

现在工业界的机器学习业务也不会太多,公司不是学术界在学术研究灌水上有多少追求,算法可实现,能可扩展高效分布式运行才是重点。

http://blog.csdn.net/dulingtingzi/article/details/53080094


1 决策树的模型很重要,不会问你ID3这些简单的,甚至CART都不会,不过会问GBDT,随机森林。

2 SVM不可能不问。

3 理解得很深才能给面试官讲明白。

去面了下深圳的大公司,连续两个面试官问我朴素贝叶斯的推倒,忘记了,还有kmeans的,还有一些基本代码,没有一个写的自己满意的,估计给挂了

作者:查老四

链接:https://www.zhihu.com/question/20874105/answer/22686899

来源:知乎

著作权归作者所有,转载请联系作者获得授权。

我在的就是题主问题中的公司和岗位。我简单总结一下:

1. 数学。题主是数学专业,这个应该没有问题。概率和数值计算是关键。我当时笔试有个大题就是关于最大似然公式的推导和证明;

2. 编程。C++和数据结构肯定要过关。虽然做数据分析工程任务少,但是基本的编程能力一定是要的。笔试面试都有算法题(这个算法是指的类似排序,数据结构方面的)。题主不是计算机专业的话,这个可能是会被质疑的,所以最好多下点功夫;

3. 机器学习。常用的机器学习算法最好到能够推导的地步。按照面试和实际工作上来看,SVM,LR,贝叶斯,K-means,Boosting思想是最常用的。如果是BAT的话,大多数的数据挖掘都是基于文本的,所以可能文本检索分类方面的东西可以恶补下;

4. 数据处理的思想。这个比较抽象,但是要知道做数据的时候的整体思路,比如特征怎么筛选,怎么评估,用什么模型...有一年面试问过:如果预测明年北京高考分数线,要怎么做....

上一篇下一篇

猜你喜欢

热点阅读