一文总结机器学习类面试问题与思路

机器学习、大数据相关岗位根据业务的不同,岗位职责大概分为:

一、平台搭建类

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

二、算法研究类

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

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

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

  4. 广告投放效果分析;

  5. 互联网信用评价;

  6. 图像识别、理解。

三、数据挖掘

  1. 商业智能,如统计报表;

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

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

四、面试问题

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

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

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

  4. 基础知识

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

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

  • LR 的推导,特性?

  • 决策树的特性?

  • SVM、LR、决策树的对比?

  • GBDT和决策森林的区别?

  • 如何判断函数凸或非凸?

  • 解释对偶的概念。

  • 如何进行特征选择

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

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

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

  • 用 EM 算法推导解释 Kmeans。

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

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

  • 如何进行实体识别?

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

  • 写一个 Hadoop 版本的 wordcount。

    ……

五、开放问题

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

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

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

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

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

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

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

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

答题思路

一、用过什么算法?

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

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

  3. 优缺点分析。

二、熟悉的算法有哪些?

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

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

三、用过哪些框架/算法包?

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

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

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

四、基础知识

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

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

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

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

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

  4. 优缺点,相关改进;

  5. 和其他基本方法的对比;

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

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

五、开放问题

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

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

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

准备建议

一、基础算法复习两条线

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

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

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

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

总结

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

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

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

  • 在实战中历练总结;

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

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

THU数据派
THU数据派

THU数据派"基于清华,放眼世界",以扎实的理工功底闯荡“数据江湖”。发布全球大数据资讯,定期组织线下活动,分享前沿产业动态。了解清华大数据,敬请关注姐妹号“数据派THU”。

入门机器学习
2
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

知识图谱技术

知识图谱本质上是语义网络,是一种基于图的数据结构,由节点(Point)和边(Edge)组成。在知识图谱里,每个节点表示现实世界中存在的“实体”,每条边为实体与实体之间的“关系”。知识图谱是关系的最有效的表示方式。通俗地讲,知识图谱就是把所有不同种类的信息(Heterogeneous Information)连接在一起而得到的一个关系网络。知识图谱提供了从“关系”的角度去分析问题的能力。 知识图谱这个概念最早由Google提出,主要是用来优化现有的搜索引擎。不同于基于关键词搜索的传统搜索引擎,知识图谱可用来更好地查询复杂的关联信息,从语义层面理解用户意图,改进搜索质量。比如在Google的搜索框里输入Bill Gates的时候,搜索结果页面的右侧还会出现Bill Gates相关的信息比如出生年月,家庭情况等等。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

数据挖掘技术

数据挖掘(英语:data mining)是一个跨学科的计算机科学分支 它是用人工智能、机器学习、统计学和数据库的交叉方法在相對較大型的数据集中发现模式的计算过程。 数据挖掘过程的总体目标是从一个数据集中提取信息,并将其转换成可理解的结构,以进一步使用。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

朴素贝叶斯技术

朴素贝叶斯是一种构建分类器的简单方法。该分类器模型会给问题实例分配用特征值表示的类标签,类标签取自有限集合。它不是训练这种分类器的单一算法,而是一系列基于相同原理的算法:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关。举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的。

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

特征选择技术

在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择、属性选择或变量子集选择。 它是指:为了构建模型而选择相关特征(即属性、指标)子集的过程。

拟牛顿法技术

拟牛顿法是一种以牛顿法为基础设计的,求解非线性方程组或连续的最优化问题函数的零点或极大、极小值的算法。当牛顿法中所要求计算的雅可比矩阵或Hessian矩阵难以甚至无法计算时,拟牛顿法便可派上用场。

分布式计算技术技术

在计算机科学中,分布式计算,又译为分散式運算。这个研究领域,主要研究分布式系统如何进行计算。分布式系统是一组电脑,通过网络相互链接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。

文本挖掘技术

文本挖掘有时也被称为文字探勘、文本数据挖掘等,大致相当于文字分析,一般指文本处理过程中产生高质量的信息。高质量的信息通常通过分类和预测来产生,如模式识别。文本挖掘通常涉及输入文本的处理过程,产生结构化数据,并最终评价和解释输出。'高品质'的文本挖掘通常是指某种组合的相关性,新颖性和趣味性。

推荐文章
暂无评论
暂无评论~