校招机器学习算法岗位面试题总结

昨晚刚面试了腾讯微信部门的机器学习算法岗,面试官小姐姐人不错,问题也不难,主要自己太水,所以感觉要季季。。。

总的来说,自己之前复习的思路有点歪,不该盲目地去扩大自己的知识面,搞得自己好像什么都懂一些,其实都只知道皮毛,稍微问一下就慌了神,不如在某些方面深入一些,在面试时引导着面试官向自己精通的地方去聊,这样才能有一个比较好的面试表现。

下面总结一下这次面试的问题:

1、讲一下你比较熟悉的机器学习方法,简述一下你最熟悉的一个。

答:感知机、K近邻法、朴素贝叶斯法、决策树、SVM、逻辑斯蒂回归和最大熵模型、提升方法、EM算法、隐马尔可夫模型、条件随机场。

2、比较一下逻辑斯蒂回归和支持向量机。

答:这个是常问的题

共同点,他们都是线性分类器,

1)LR采用log损失,SVM采用合页损失。
2)LR对异常值敏感,SVM对异常值不敏感。

3)LR模型找到的那个超平面,是尽量让所有点都远离他,而SVM寻找的那个超平面,是只让最靠近中间分割线的那些点尽量远离,即只用到那些支持向量的样本。LR求解过程中,每一个数据点对分类平面都是有影响的,它的影响力远离它到分类平面的距离指数递减。

4)对非线性问题的处理方式不同,LR主要靠特征构造,必须组合交叉特征,特征离散化。SVM也可以这样,还可以通过kernel。

5)SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!

6)对于小规模数据集,SVM的效果要好于LR,但是大数据中,SVM的计算复杂度受到限制,而LR因为训练简单,可以在线训练,所以经常会被大量采用


3、聊了一下做的项目,其中的K-means算法的基本思想,如何实现的,里面K值如何确定的。

答:1)随机生成K个聚类中心。

2)将数据划分到离自己距离最近聚类中心,

3)最后将属于同一聚类中心的数据取均值来作为新的聚类中心

4)重复上述过程直到达到迭代次数或者结果收敛。

K值由相关论文的经验值获得,根据项目情况设置了128,256,512,1024等几组实验,根据实验结果(聚类时间,检索准确性)取一个合适的值。

4、简述CNN网络的工作原理。



网络训练方法:BP(反向传播法),误差对参数求偏导数,然后乘学习率,用参数去减去这个乘积,更新权值。

5、过拟合的解决方案。

1)数据源方面:扩增训练数据集

2)特征方面:选取有用的特征

3)模型方面:使用简单的模型、dropout、bagging和boosting、限制权值 Weight-decay,也叫正则化、early stopping(限制训练时间)

6、有没有手推过逻辑斯蒂回归等算法的公式。

7、Bagging和Boosting 概念及区别。

Bagging (bootstrap aggregating)

A)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
B)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
C)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

Boosting

关于Boosting的两个核心问题:
1)在每一轮如何改变训练数据的权值或概率分布?
通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。
2)通过什么方式来组合弱分类器?
通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。

而提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。

Bagging,Boosting二者之间的区别
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

8、VGG-16的结构。

答:13个卷积层,3个全连接层,5个池化层。2C+2C+3C+3C+3C。

输入为224×224的RGB图像,整体都是3*3的卷积核。

校招机器学习算法岗位面试题总结


更新 2018-4-10

腾讯笔试题

9、哪种优化方法对超参数不敏感?

10、假设检验的基本步骤

11、机器学习中的偏差与方差

12、各种排序的时间复杂度


更新 2018-4-14

京东面试

尴尬,贼尴尬,简直人生阴影,正在撸堆排序算法,突然一个电话打过来开始面试了,好歹提前通知一声啊,结结巴巴地做了自我介绍,面试官问了代码量,我说估计有个1W行左右。然后就是一些问题。

1、简单介绍一下逻辑斯蒂回归,公式。

2、项目中用到了selective search算法,讲一下原理。


3、项目中用Hadoop是干嘛的?

4、RCNN、fast-RCNN、Faster-RCNN介绍一下。

5、**函数都有哪些?

sigmod函数、双曲正切函数(tanh)、修正线性单元(relu).


6、过拟合怎么解决?

7、最后问了个编程,数组去重。


更新 2018-4-15

京东二面

卧槽京东一面居然过了,贼特么惊喜。