
向AI转型的程序员都关注了这个号👇👇👇
机器学习AI算法工程 公众号:datayx
机器学习方向很多,有些更偏重于传统的统计模型或者数据挖掘,而有些更倾向于深度学习。同理,相对应的岗位有些偏重理论也有些偏重实践。这些因素叠加造成了机器学习相关的岗位分布广,如数据分析师、算法工程师、机器学习科学家和数据科学家等,很难一概而论。
大概从实习生的时候就开始跟着老板招聘面试机器学习方向的候选人,参与了40个左右求职者的技术面试。其中有在读的研究生(实习生岗位),也有已经工作了多年或者学术背景深厚的名校博士(相对高级的“科学家"岗位)。
不谈具体岗位的前提下,我想回答以下几个问题:
1.为什么要避免学科性的偏见
2.如何测试面试者的知识广度
3.怎样测试面试者的知识深度
4.为何需要确认基本的编程和数据分析能力
5.怎么提高机器学习面试成功率
1.避免学科间的偏见与歧视
机器学习作为一个交叉广度大,各学科融合深的学科,各种背景的面试者都有。我建议一定不要预设立场,无论是数学、统计、物理、计算机,或是其他学科的面试者都有独特的知识储备。比如机器学习其实和统计学习有很大部分是重叠的,甚至和优化(如运筹学)、数学(线代等)也有很多相关的地方。而不同领域的人对于同一件事情的描述可能是相似但不相同的,甚至连叫法都不同。举个简单的例子,统计学将变量叫做 predictors而机器学习倾向于将其叫做 Feature(特征)。我听说过很多面试官就因为对方不能完全的使用他能听懂的术语就拒掉了候选人,我觉得这个是愚蠢的。
以我们团队为例,我的老板是统计学博士和教授(偏计量),而我是纯粹的计算机科学出身。他喜欢用R来建模而我只擅长 Python和C++。但正是这种差异性让我们可以更好的合作,他在无监督学习中很喜欢用各种密度分析( density estimation)或者对分布直接进行拟合,而我可以给他介绍很多机器学习方向比较流行的算法,比如 Isolation forests。同理, Python和R都有各自擅长的领域,比如Python做时序分析的难度就远远大于R,因为R有非常成熟的package。
因此,我们不要因为领域不同,叫法不同,编程语言不同,或者模型的解释思路不同就轻易的否定一个面试者。长此以往,我们的思路会越来越窄,而一定程度的包容能拓展思路。
2.通过广度测试划定面试者的知识面
机器学习的项目一般都牵扯数据处理,建模,评估,可视化,和部署上线等一系列流程,我们希望面试者对于每个步骤都有最基本的了解。因为其范围很广,我们希望首先在短时间内了解一个面试者的知识范围。有很多基本但经典的问题可以用于了解面试者的素质,给出一些例子:
数据处理∶如何处理缺失数据( missing value)?各种处理方法有什么利弊?
数据处理:如何将描述变量( categorical variables)转为连续变量( continuous variables)?
如何处理有序变量?
如何处理无序变量?
数据处理:如何进行选择特征选择?如何进行数据压缩?
特征选择:包裹式,过滤式,嵌入式
数据压缩:主成分分析,自编码等
模型解释:试解释什么是欠拟合与过拟合?如何应对这两种情况?
模型解释:什么是偏差与方差分解( Bias variance Decomposition)?与欠拟合和过拟合有什么联系?
评估模型一般有什么手段?
分类模型评估方法?
回归问题评估方法?
数据不均衡的评估方法?
深度学习是否比其他学习模型都好?为什么?
以如何处理缺失数据为例,可能的回答有:
1.分析缺失比例决定是否移除
2.用均值,众数,回归代替
3.用0代替等。
比如深度学习是否比别的模型好,我们就期待面试者能说“分情况讨论〃,若是能
提到没有免费的午餐定理”更是加分。在这个阶段,我们不会深入追问,仅想对面试人的知识范围有一个了解。
这类问题的共性就是无论你是在校学生还是资深科学家都应该有一个基本的水准在,不过没有必要百分之百的回答正确,因为本身很多答案都没有标准答案。大部分时候,这个环节我们对于是否录用这个人就已经有了答案。如果面试者答错或者不知道其中百分之八十的概念,录取的概率就很低.
3.根据岗位和求职者背景进行深入挖掘
在经过上一阶段以后,我们已经对求职者的素养有了大概的判断,下一步就需要进行深入了解,一般根据两点进行追问面试者的背景:如果有与岗位特别相关的工作经历,会深入询问。如果有高引用了的文章,也会让他讲一下他的研究。
所面试的岗位:如果没有与岗位特别相关的经历,会根据岗位需求进行询问。
进入这个环节其实就已经没有模板了。假设我们现在要为保险公司招聘一个机器学习工程师来自动化"骗保检测",我们的求职者是一位计算机系刚毕业的硕士生。那我们可能深入询问的话题包括:
在只有少量的有标签数据的情况下,如何构建一个反保险欺诈系统?
如果面试者回答先用监督学习来做,那么我们可能问:
这种情况下数据是不均衡的,你是采用过采样还是欠采样?如何调整代价函数和阔值?
如果面试者提到了集成学习,那么也会追问一下问什么集成学习适合数据不平衡。
如果面试者回答用无监督学习,那我们可能会问
比如使用One- class svm?那么我们可能会追问一下SWM相关的问题,比如什么是最大间隔分
类器啊什么是 Kerne,如何选择 Kernel等。
为什么 K-Means不适合异常值检测? K-Means和GMM是什么关系?是否可以用FMM来直接拟合异常值。
如何可以得到无监督学习中的分类规则?
这一类问题的特点是随机应变,一般都是在一个方向上深入。比如其他答案提到的L1和L2正则化,我们可能希望面试者在白板上画图介绍为什么L可以得到稀疏解,以及和嵌入式特征选择有什么联系。这一类问题我们不期待求职者完全答对或者讲得清楚无误,我们同时也想观察其在压力和追问下的心理素质。因为整个过程中肯定会有一些知识盲点,我们会尽量避免尴尬的气氛,所以作为求职者不必过分紧张。同时,通过和面试者一起了解他/她曾做过的项目,可以看出其对于这个专业的
兴趣--兴趣是很难演出来的。
在这个环节,如果一个面试者可以有能力进入深入交谈,甚至提到一些我们从来没想过的思路,都是加分的表现。
4.基本的编程能力和数据挖掘能力
机器学习岗位,不管你是统计岀身还是计算机岀身,都避不开建模的过程,因此基本的编程能力是必须的。一般对于数学或者统计学出身的面试者,我们会额外给出一个简单的小程序测试。这种小程序可能简单如将读取数据后并保存为矩阵。这倒不是因为我们喜欢没事找事,而是因为机器学习太容易成为纸上谈兵,而从业者缺乏最基本的编程能力。
相似的,我们也希望面试者谈谈从模型中可以得到什么结论。我们曾把 Haggle上泰坦尼克的那个数据集处理过以后,让面试者谈谈幸存率到底和什么有关,如何分析。同样的,我们不追求完美答案,只是希望看到求职者可以解释一些简单的模型结果,从中攫取商业价值。
简单谈一下机器学习工程师的面试,说白了就一句话,
把你做过的机器学习项目的细节讲清楚,对经典的以及前沿的机器学习知识有所了解。
机器学习面试要考察三方面的内容,1、理论基础,2、工程能力,3、业务理解。但资深一点的面试官只要问你一个项目,这三方面的能力也就都考察到了。我记得我的一位面试同学介绍自己实习时候用过XGBoost预测股票涨跌,那面试官会由浅入深依次考察:
GBDT的原理 (理论基础)
决策树节点分裂时如何选择特征,写出Gini index和Information Gain的公式并举例说明(理论基础)
分类树和回归树的区别是什么?(理论基础)
与Random Forest作比较,并以此介绍什么是模型的Bias和Variance(理论基础)
XGBoost的参数调优有哪些经验(工程能力)
XGBoost的正则化是如何实现的(工程能力)
XGBoost的并行化部分是如何实现的(工程能力)
为什么预测股票涨跌一般都会出现严重的过拟合现象(业务理解)针对这个问题有同学觉得没什么太多好讲的,我在评论里给了我的理解,我不是做这块的,可能比较浅显,大家理解一下面试官的意图就好。
如果选用一种其他的模型替代XGBoost,你会选用什么?(业务理解和知识面)
除了上面的问题,我会再检查一下面试者对NN,RNN,个别聚类算法,模型评估等知识的理解程度以及对GAN,LSTM,online learning是否有基本理解,这是考察面试者对经典以及前沿的机器学习知识的了解程度。再稍微检查一下面试者对工具的了解程度,写一段简单的spark或者map reduce的程序,如果无误的话,那么可以说这位面试者的机器学习部分是完全合格的。
当然,如果你介绍的项目是用CNN实现的,这条考察线路当然是不一样的,大概会是
LR推导->梯度消失->激活函数->tensorflow调参经验这条路,大家体会意思就好。除此之外,还有其他工程方向的面试官会着重考察coding和一些算法题目,那是另外一个话题了。
根据我去年的面试经验,即使清华北大的同学也往往无法回答完整这些提问。一项答不出来的话无伤大雅,但两项答不出来我基本会给fail或maybe。
所以真的希望大家严肃对待写在简历上的东西,面试官会刨根问题的问到骨子里。但就我个人而言我不会深究面试者简历之外的东西,比如故意问一问GAN的细节让你一定要答出来,我认为这样毫无意义,有故意刁难之嫌。
相关文章
如果你是面试官,如何判断一个面试者的深度学习水平?
参考原文
https://www.zhihu.com/question/62482926
https://www.zhihu.com/question/23259302/answer/527513387
阅读过本文的人还看了以下文章:
【全套视频课】最全的目标检测算法系列讲解,通俗易懂!
《美团机器学习实践》_美团算法团队.pdf
《深度学习入门:基于Python的理论与实现》高清中文PDF+源码
python就业班学习视频,从入门到实战项目
2019最新《PyTorch自然语言处理》英、中文版PDF+源码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
《深度学习之pytorch》pdf+附书源码
PyTorch深度学习快速实战入门《pytorch-handbook》
【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》
《Python数据分析与挖掘实战》PDF+完整源码
汽车行业完整知识图谱项目实战视频(全23课)
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!
《神经网络与深度学习》最新2018版中英PDF+源码
将机器学习模型部署为REST API
FashionAI服装属性标签图像识别Top1-5方案分享
重要开源!CNN-RNN-CTC 实现手写汉字识别
yolo3 检测出图像中的不规则汉字
同样是机器学习算法工程师,你的面试为什么过不了?
前海征信大数据算法:风险概率预测
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
VGG16迁移学习,实现医学图像识别分类工程项目
特征工程(一)
特征工程(二) :文本数据的展开、过滤和分块
特征工程(三):特征缩放,从词袋到 TF-IDF
特征工程(四): 类别特征
特征工程(五): PCA 降维
特征工程(六): 非线性特征提取和模型堆叠
特征工程(七):图像特征提取和深度学习
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
蚂蚁金服2018秋招-算法工程师(共四面)通过
全球AI挑战-场景分类的比赛源码(多模型融合)
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在线识别手写中文网站
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx

长按图片,识别二维码,点关注
机器学习算法资源社群
不断上传电子版PDF资料
技术问题求解
QQ群号: 333972581

长按图片,识别二维码
海淘美妆
