BAT面试问题--算法工程师(机器学习)
向AI转型的程序员都关注了这个号????????????
人工智能大数据与深度学习 公众号: datayx
1.请简要介绍下SVM。
SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。
扩展:
支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
支持向量机通俗导论(理解SVM的三层境界)
https://link.jianshu.com/?t=https://www.cnblogs.com/v-July-v/archive/2012/06/01/2539022.html
机器学习之深入理解SVM
https://link.jianshu.com/?t=http://blog.csdn.net/sinat_35512245/article/details/54984251
2.请简要介绍下Tensorflow的计算图。
@寒小阳:Tensorflow是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图,可以把计算图看做是一种有向图,Tensorflow中的每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。
3.请问GBDT和XGBoost的区别是什么?
@Xijun LI:XGBoost类似于GBDT的优化版,不论是精度还是效率上都有了提升。与GBDT相比,具体的优点有:
知识点链接:集成学习总结
https://link.jianshu.com/?t=https://xijunlee.github.io/2017/06/03/%E9%9B%86%E6%88%90%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/
4.在k-means或kNN,我们是用欧氏距离来计算最近的邻居之间的距离。为什么不用曼哈顿距离?
曼哈顿距离只计算水平或垂直距离,有维度的限制。另一方面,欧氏距离可用于任何空间的距离计算问题。因为,数据点可以存在于任何空间,欧氏距离是更可行的选择。例如:想象一下国际象棋棋盘,象或车所做的移动是由曼哈顿距离计算的,因为它们是在各自的水平和垂直方向做的运动。
5.百度2015校招机器学习笔试题。
知识点链接:百度2015校招机器学习笔试题
https://link.jianshu.com/?t=http://www.itmian4.com/thread-7042-1-1.html
6.简单说说特征工程。
7.关于LR。
@rickjin:把LR从头到脚都给讲一遍。建模,现场数学推导,每种解法的原理,正则化,LR和maxent模型啥关系,LR为啥比线性回归好。有不少会背答案的人,问逻辑细节就糊涂了。原理都会? 那就问工程,并行化怎么做,有几种并行化方式,读过哪些开源的实现。还会,那就准备收了吧,顺便逼问LR模型发展历史。
知识点链接:机器学习之Logistic回归(逻辑蒂斯回归)
https://link.jianshu.com/?t=http://blog.csdn.net/sinat_35512245/article/details/54881672
8.overfitting怎么解决?
dropout、regularization、batch normalizatin
9.LR和SVM的联系与区别?
@朝阳在望,联系:
答案来源:机器学习常见面试问题(一)
https://link.jianshu.com/?t=http://blog.csdn.net/timcompp/article/details/62237986
10.LR与线性回归的区别与联系?
@nishizhen
11.为什么XGBoost要用泰勒展开,优势在哪里?
@AntZ:XGBoost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准. 使用泰勒展开取得二阶倒数形式, 可以在不选定损失函数具体形式的情况下用于算法优化分析.本质上也就把损失函数的选取和模型算法优化/参数选择分开了. 这种去耦合增加了XGBoost的适用性。
12.XGBoost如何寻找最优特征?是又放回还是无放回的呢?
@AntZ:XGBoost在训练的过程中给出各个特征的评分,从而表明每个特征对模型训练的重要性.。XGBoost利用梯度优化模型算法, 样本是不放回的(想象一个样本连续重复抽出,梯度来回踏步会不会高兴)。但XGBoost支持子采样, 也就是每轮计算可以不使用全部样本。
13.谈谈判别式模型和生成式模型?
判别方法:由数据直接学习决策函数 Y = f(X),或者由条件分布概率 P(Y|X)作为预测模型,即判别模型。
生成方法:由数据学习联合概率密度分布函数 P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型。
由生成模型可以得到判别模型,但由判别模型得不到生成模型。
常见的判别模型有:K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场
常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机
14.L1和L2的区别。
L1范数(L1 norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。
Lp范数: 为x向量各个元素绝对值p次方和的1/p次方.
15.L1和L2正则先验分别服从什么分布 ?
@齐同学:面试中遇到的,L1和L2正则先验分别服从什么分布,L1是拉普拉斯分布,L2是高斯分布。
16.CNN最成功的应用是在CV,那为什么NLP和Speech的很多问题也可以用CNN解出来?为什么AlphaGo里也用了CNN?这几个不相关的问题的相似性在哪里?CNN通过什么手段抓住了这个共性?
@许韩
知识点链接(答案解析):深度学习岗位面试问题整理笔记
https://link.jianshu.com/?t=https://zhuanlan.zhihu.com/p/25005808
17.说一下Adaboost,权值更新公式。当弱分类器是Gm时,每个样本的的权重是w1,w2...,请写出最终的决策公式。
答案解析
https://link.jianshu.com/?t=http://www.360doc.com/content/14/1109/12/20290918_423780183.shtml
18.LSTM结构推导,为什么比RNN好?
推导forget gate,input gate,cell state, hidden information等的变化;因为LSTM有进有出且当前的cell informaton是通过input gate控制之后叠加的,RNN是叠乘,因此LSTM可以防止梯度消失或者爆炸。
19.经常在网上搜索东西的朋友知道,当你不小心输入一个不存在的单词时,搜索引擎会提示你是不是要输入某一个正确的单词,比如当你在Google中输入“Julw”时,系统会猜测你的意图:是不是要搜索“July”,如下图所示:
这叫做拼写检查。根据谷歌一员工写的文章How to Write a Spelling Corrector显示,Google的拼写检查基于贝叶斯方法。请说说的你的理解,具体Google是怎么利用贝叶斯方法,实现"拼写检查"的功能。
用户输入一个单词时,可能拼写正确,也可能拼写错误。如果把拼写正确的情况记做c(代表correct),拼写错误的情况记做w(代表wrong),那么"拼写检查"要做的事情就是:在发生w的情况下,试图推断出c。换言之:已知w,然后在若干个备选方案中,找出可能性最大的那个c,也就是求$P(c|w)$的最大值。而根据贝叶斯定理,有:
P(c)表示某个正确的词的出现"概率",它可以用"频率"代替。如果我们有一个足够大的文本库,那么这个文本库中每个单词的出现频率,就相当于它的发生概率。某个词的出现频率越高,P(c)就越大。比如在你输入一个错误的词“Julw”时,系统更倾向于去猜测你可能想输入的词是“July”,而不是“Jult”,因为“July”更常见。
P(w|c)表示在试图拼写c的情况下,出现拼写错误w的概率。为了简化问题,假定两个单词在字形上越接近,就有越可能拼错,P(w|c)就越大。举例来说,相差一个字母的拼法,就比相差两个字母的拼法,发生概率更高。你想拼写单词July,那么错误拼成Julw(相差一个字母)的可能性,就比拼成Jullw高(相差两个字母)。值得一提的是,一般把这种问题称为“编辑距离”,参见程序员编程艺术第二十八~二十九章:最大连续乘积子串、字符串编辑距离。
所以,我们比较所有拼写相近的词在文本库中的出现频率,再从中挑出出现频率最高的一个,即是用户最想输入的那个词。具体的计算过程及此方法的缺陷请参见How to Write a Spelling Corrector。
20.为什么朴素贝叶斯如此“朴素”?
因为它假定所有的特征在数据集中的作用是同样重要和独立的。正如我们所知,这个假设在现实世界中是很不真实的,因此,说朴素贝叶斯真的很“朴素”。
21.机器学习中,为何要经常对数据做归一化?
@zhanlijun
本题解析来源:为什么一些机器学习模型需要对数据进行归一化?
22.谈谈深度学习中的归一化问题。
详情参见此视频:深度学习中的归一化
23.请简要说说一个完整机器学习项目的流程。
1 抽象成数学问题
24.new 和 malloc的区别?
知识点链接:new 和 malloc的区别
25.hash 冲突及解决办法?
@Sommer_Xia
关键字值不同的元素可能会映象到哈希表的同一地址上就会发生哈希冲突。解决办法:
26.如何解决梯度消失和梯度膨胀?
(1)梯度消失:
可以通过**函数来解决。
27.下列哪个不属于CRF模型对于HMM和MEMM模型的优势( )
A. 特征灵活
答案为B。
28.简单说下有监督学习和无监督学习的区别?
有监督学习:对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。(LR,SVM,BP,RF,GBDT)
29.了解正则化么?
正则化是针对过拟合而提出的,以为在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。
30.协方差和相关性有什么区别?
相关性是协方差的标准化格式。协方差本身很难做比较。例如:如果我们计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以我们会得到不能做比较的不同的协方差。为了解决这个问题,我们计算相关性来得到一个介于-1和1之间的值,就可以忽略它们各自不同的度量。
31.线性分类器与非线性分类器的区别以及优劣。
如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是。
32.数据的逻辑存储结构(如数组,队列,树等)对于软件开发具有十分重要的影响,试对你所了解的各种存储结构从运行速度、存储效率和适用场合等方面进行简要地分析。
33.什么是分布式数据库?
分布式数据库系统是在集中式数据库系统成熟技术的基础上发展起来的,但不是简单地把集中式数据库分散地实现,它具有自己的性质和特征。集中式数据库系统的许多概念和技术,如数据独立性、数据共享和减少冗余度、并发控制、完整性、安全性和恢复等在分布式数据库系统中都有了不同的、更加丰富的内容。
34.简单说说贝叶斯定理。
在引出贝叶斯定理之前,先学习几个定义:
边缘概率(又称先验概率)是某个事件发生的概率。边缘概率是这样得到的:在联合概率中,把最终结果中那些不需要的事件通过合并成它们的全概率,而消去它们(对离散随机变量用求和得全概率,对连续随机变量用积分得全概率),这称为边缘化(marginalization),比如A的边缘概率表示为P(A),B的边缘概率表示为P(B)。
贝叶斯定理的公式表达式:
35.#include <filename.h> 和#include“filename.h”有什么区别?
知识点链接:#include<filename.h> 和 #include"filename.h"有什么区别
36.某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A)
37.将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C)
38.下面哪种不属于数据预处理的方法? (D)
39.什么是KDD? (A)
40.当不知道数据所带标签时,可以使用哪种技术促使带同类标签的数据与带其他标签的数据相分离?(B)
41.建立一个模型,通过这个模型根据已知的变量值来预测其他某个变量值属于数据挖掘的哪一类任务?(C)
42.以下哪种方法不属于特征选择的标准方法?(D)
43.请用python编写函数find_string,从文本中搜索并打印内容,要求支持通配符星号和问号。
find_string('hello\nworld\n','wor')
['wor']
find_string('hello\nworld\n','l*d')
['ld']
find_string('hello\nworld\n','o.')
['or']
答案def find_string(str,pat):import rereturn re.findall(pat,str,re.I)
44.说下红黑树的五个性质。
教你初步了解红黑树
45.简单说下sigmoid**函数。
常用的非线性**函数有sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层。这里先简要介绍下最基础的sigmoid函数(btw,在本博客中SVM那篇文章开头有提过)。
Sigmoid的函数表达式如下:
也就是说,Sigmoid函数的功能是相当于把一个实数压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0。
压缩至0到1有何用处呢?用处是这样一来便可以把**函数看作一种“分类的概率”,比如**函数的输出为0.9的话便可以解释为90%的概率为正样本。
举个例子,如下图(图引自Stanford机器学习公开课):
46.什么是卷积?
对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。
OK,举个具体的例子。比如下图中,图中左边部分是原始输入数据,图中中间部分是滤波器filter,图中右边是输出的新的二维数据。
分解下上图
47.什么是CNN的池化pool层?
池化,简言之,即取区域平均或最大,如下图所示(图引自cs231n):
上图所展示的是取区域最大,即上图左边部分中 左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4。很简单不是?
48.简述下什么是生成对抗网络。
GAN之所以是对抗的,是因为GAN的内部是竞争关系,一方叫generator,它的主要工作是生成图片,并且尽量使得其看上去是来自于训练样本的。另一方是discriminator,其目标是判断输入图片是否属于真实训练样本。
如下图中的左右两个场景:
更多请参见此课程:生成对抗网络
49.学梵高作画的原理是啥?
这里有篇如何做梵高风格画的实验教程 教你从头到尾利用DL学梵高作画:GTX 1070 cuda 8.0 tensorflow gpu版,至于其原理请看这个视频:NeuralStyle艺术化图片(学梵高作画背后的原理)。
50.现在有 a 到 z 26 个元素, 编写程序打印 a 到 z 中任取 3 个元素的组合(比如 打印 a b c ,d y z等)。
一道百度机器学习工程师职位的面试题
51.哪些机器学习算法不需要做归一化处理?
概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、GBDT、XGBoost、SVM、LR、KNN、KMeans之类的最优化问题就需要归一化。
52.说说梯度下降法。
@LeftNotEasy
机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)
53.梯度下降法找到的一定是下降最快的方向么?
梯度下降法并不是下降最快的方向,它只是目标函数在当前的点的切平面(当然高维问题不能叫平面)上下降最快的方向。在Practical Implementation中,牛顿方向(考虑海森矩阵)才一般被认为是下降最快的方向,可以达到Superlinear的收敛速度。梯度下降类的算法的收敛速度一般是Linear甚至Sublinear的(在某些带复杂约束的问题)。
知识点链接:一文清晰讲解机器学习中梯度下降算法(包括其变式算法)
54.牛顿法和梯度下降法有什么不同?
@wtq1993
知识点链接:机器学习中常见的最优化算法
55.什么是拟牛顿法(Quasi-Newton Methods)?
@wtq1993
机器学习中常见的最优化算法
56.请说说随机梯度下降法的问题和挑战?
<center>
57.说说共轭梯度法?
@wtq1993
机器学习中常见的最优化算法
58.对所有优化问题来说, 有没有可能找到比現在已知算法更好的算法?
答案链接
59、什么最小二乘法?
我们口头中经常说:一般来说,平均来说。如平均来说,不吸烟的健康优于吸烟者,之所以要加“平均”二字,是因为凡事皆有例外,总存在某个特别的人他吸烟但由于经常锻炼所以他的健康状况可能会优于他身边不吸烟的朋友。而最小二乘法的一个最简单的例子便是算术平均。
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。用函数表示为:
由于算术平均是一个历经考验的方法,而以上的推理说明,算术平均是最小二乘的一个特例,所以从另一个角度说明了最小二乘方法的优良性,使我们对最小二乘法更加有信心。
最小二乘法发表之后很快得到了大家的认可接受,并迅速的在数据分析实践中被广泛使用。不过历史上又有人把最小二乘法的发明归功于高斯,这又是怎么一回事呢。高斯在1809年也发表了最小二乘法,并且声称自己已经使用这个方法多年。高斯发明了小行星定位的数学方法,并在数据分析中使用最小二乘方法进行计算,准确的预测了谷神星的位置。
对了,最小二乘法跟SVM有什么联系呢?请参见支持向量机通俗导论(理解SVM的三层境界)。
搜索公众号添加: datayx
人工智能大数据与深度学习
长按图片,识别二维码,点关注
上一篇: 方差分析python实践
下一篇: 猫哥网络编程系列:详解 BAT 面试题