十年谷歌大佬:机器学习工程师的经典面试题

前言

相对性的选择了几道在面试当中给面试者的题,这也是我想对喜欢问的,如果感兴趣的可以找我助理了解后面的面试题宝典!!!

1、决策树树相关问题

(1)各种熵的计算 

熵、联合熵、条件熵、交叉熵、KL散度(相对熵)

  • 熵用于衡量不确定性,所以均分的时候熵最大
  • KL散度用于度量两个分布的不相似性,KL(p||q)等于交叉熵H(p,q)-熵H(p)。交叉熵可以看成是用q编码P所需的bit数,减去p本身需要的bit数,KL散度相当于用q编码p需要的额外bits。
  • 交互信息Mutual information :I(x,y) = H(x)-H(x|y) = H(y)-H(y|x) 表示观察到x后,y的熵会减少多少。

(2)常用的树搭建方法:ID3、C4.5、CART 

上述几种树分别利用信息增益、信息增益率、Gini指数作为数据分割标准。

  • 其中信息增益衡量按照某个特征分割前后熵的减少程度,其实就是上面说的交互信息。 
  • 用上述信息增益会出现优先选择具有较多属性的特征,毕竟分的越细的属性确定性越高。所以提出了信息增益率的概念,让含有较多属性的特征的作用降低。 

  • CART树在分类过程中使用的基尼指数Gini,只能用于切分二叉树,而且和ID3、C4.5树不同,Cart树不会在每一个步骤删除所用特征。 

(3)防止过拟合:剪枝 

剪枝分为前剪枝和后剪枝,前剪枝本质就是早停止,后剪枝通常是通过衡量剪枝后损失函数变化来决定是否剪枝。后剪枝有:错误率降低剪枝、悲观剪枝、代价复杂度剪枝

(4)前剪枝的停止条件

  • 节点中样本为同一类
  • 特征不足返回多类
  • 如果某个分支没有值则返回父节点中的多类
  • 样本个数小于阈值返回多类

2、逻辑回归相关问题

(1)公式推导一定要会

扫描二维码关注公众号,回复: 5972715 查看本文章

(2)逻辑回归的基本概念 

这个最好从广义线性模型的角度分析,逻辑回归是假设y服从Bernoulli分布。

(3)L1-norm和L2-norm 

其实稀疏的根本还是在于L0-norm也就是直接统计参数不为0的个数作为规则项,但实际上却不好执行于是引入了L1-norm;而L1norm本质上是假设参数先验是服从Laplace分布的,而L2-norm是假设参数先验为Gaussian分布,我们在网上看到的通常用图像来解答这个问题的原理就在这。 但是L1-norm的求解比较困难,可以用坐标轴下降法或是最小角回归法求解。

(4)LR和SVM对比 

  • 首先,LR和SVM最大的区别在于损失函数的选择,LR的损失函数为Log损失(或者说是逻辑损失都可以)、而SVM的损失函数为hinge loss。 

  • 其次,两者都是线性模型。 
  • 最后,SVM只考虑支持向量(也就是和分类相关的少数点) 

(5)LR和随机森林区别 

随机森林等树算法都是非线性的,而LR是线性的。LR更侧重全局优化,而树模型主要是局部的优化。

(6)常用的优化方法 

逻辑回归本身是可以用公式求解的,但是因为需要求逆的复杂度太高,所以才引入了梯度下降算法。 

  • 一阶方法:梯度下降、随机梯度下降、mini 随机梯度下降降法。随机梯度下降不但速度上比原始梯度下降要快,局部最优化问题时可以一定程度上抑制局部最优解的发生。 
  • 二阶方法:牛顿法、拟牛顿法。这里详细说一下牛顿法的基本原理和牛顿法的应用方式。
  • 牛顿法其实就是通过切线与x轴的交点不断更新切线的位置,直到达到曲线与x轴的交点得到方程解。在实际应用中我们因为常常要求解凸优化问题,也就是要求解函数一阶导数为0的位置,而牛顿法恰好可以给这种问题提供解决方法。实际应用中牛顿法首先选择一个点作为起始点,并进行一次二阶泰勒展开得到导数为0的点进行一个更新,直到达到要求,这时牛顿法也就成了二阶求解问题,比一阶方法更快。我们常常看到的x通常为一个多维向量,这也就引出了Hessian矩阵的概念(就是x的二阶导数矩阵
  • 缺点:牛顿法是定长迭代,没有步长因子,所以不能保证函数值稳定的下降,严重时甚至会失败。还有就是牛顿法要求函数一定是二阶可导的。而且计算Hessian矩阵的逆复杂度很大。 
  • 拟牛顿法: 不用二阶偏导而是构造出Hessian矩阵的近似正定对称矩阵的方法称为拟牛顿法。拟牛顿法的思路就是用一个特别的表达形式来模拟Hessian矩阵或者是他的逆使得表达式满足拟牛顿条件。主要有DFP法(逼近Hession的逆)、BFGS(直接逼近Hession矩阵)、 L-BFGS(可以减少BFGS所需的存储空间)。

3、SVM相关问题

(1)带核的SVM为什么能分类非线性问题? 

核函数的本质是两个函数的內积,而这个函数在SVM中可以表示成对于输入值的高维映射。注意核并不是直接对应映射,核只不过是一个內积

(2)RBF核一定是线性可分的吗 

不一定,RBF核比较难调参而且容易出现维度灾难,要知道无穷维的概念是从泰勒展开得出的。  

(3)常用核函数及核函数的条件: 

核函数选择的时候应该从线性核开始,而且在特征很多的情况下没有必要选择高斯核,应该从简单到难的选择模型。我们通常说的核函数指的是正定和函数,其充要条件是对于任意的x属于X,要求K对应的Gram矩阵要是半正定矩阵。

  • RBF核径向基,这类函数取值依赖于特定点间的距离,所以拉普拉斯核其实也是径向基核。
  • 线性核:主要用于线性可分的情况
  • 多项式核

(4)SVM的基本思想

间隔最大化来得到最优分离超平面。方法是将这个问题形式化为一个凸二次规划问题,还可以等价位一个正则化的合页损失最小化问题。SVM又有硬间隔最大化和软间隔SVM两种。这时首先要考虑的是如何定义间隔,这就引出了函数间隔和几何间隔的概念(这里只说思路),我们选择了几何间隔作为距离评定标准(为什么要这样,怎么求出来的要知道),我们希望能够最大化与超平面之间的几何间隔x,同时要求所有点都大于这个值,通过一些变化就得到了我们常见的SVM表达式。接着我们发现定义出的x只是由个别几个支持向量决定的。对于原始问题(primal problem)而言,可以利用凸函数的函数包来进行求解,但是发现如果用对偶问题(dual )求解会变得更简单,而且可以引入核函数。而原始问题转为对偶问题需要满足KKT条件(这个条件应该细细思考一下)到这里还都是比较好求解的。因为我们前面说过可以变成软间隔问题,引入了惩罚系数,这样还可以引出hinge损失的等价形式(这样可以用梯度下降的思想求解SVM了)。我个人认为难的地方在于求解参数的SMO算法。

(5)是否所有的优化问题都可以转化为对偶问题

这个问题我感觉非常好,有了强对偶和弱对偶的概念。可参考 https://www.zhihu.com/question/43830699

(6)处理数据偏斜

可以对数量多的类使得惩罚系数C越小表示越不重视,相反另数量少的类惩罚系数变大。

4、Boosting和Bagging

(1)随机森林 

随机森林改变了决策树容易过拟合的问题,这主要是由两个操作所优化的:1、Boostrap从袋内有放回的抽取样本值2、每次随机抽取一定数量的特征(通常为sqr(n))。 

  • 分类问题:采用Bagging投票的方式选择类别频次最高的 
  • 回归问题:直接取每颗树结果的平均值。

(2)Boosting之AdaBoost 

Boosting的本质实际上是一个加法模型,通过改变训练样本权重学习多个分类器并进行一些线性组合。而Adaboost就是加法模型+指数损失函数+前项分布算法。Adaboost就是从弱分类器出发反复训练,在其中不断调整数据权重或者是概率分布,同时提高前一轮被弱分类器误分的样本的权值。最后用分类器进行投票表决(但是分类器的重要性不同)。  

(3)Boosting之GBDT 

将基分类器变成二叉树,回归用二叉回归树,分类用二叉分类树。和上面的Adaboost相比,回归树的损失函数为平方损失,同样可以用指数损失函数定义分类问题。但是对于一般损失函数怎么计算呢?GBDT(梯度提升决策树)是为了解决一般损失函数的优化问题,方法是用损失函数的负梯度在当前模型的值来模拟回归问题中残差的近似值。 (注:由于GBDT很容易出现过拟合的问题,所以推荐的GBDT深度不要超过6,而随机森林可以在15以上。)

(4)GBDT和Random Forest区别 

这个就和上面说的差不多。

(5)Xgboost 

这个工具主要有以下几个特点:

  • 支持线性分类器
  • 可以自定义损失函数,并且可以用二阶偏导
  • 加入了正则化项:叶节点数、每个叶节点输出score的L2-norm
  • 支持特征抽样
  • 在一定情况下支持并行,只有在建树的阶段才会用到,每个节点可以并行的寻找分裂特征。

5、KNN和Kmean

(1)KNN 和Kmean缺点 

都属于惰性学习机制,需要大量的计算距离过程,速度慢的可以(但是都有相应的优化方法)。 

(2)KNN 

KNN不需要进行训练,只要对于一个陌生的点利用离其最近的K个点的标签判断其结果。KNN相当于多数表决,也就等价于经验最小化。而KNN的优化方式就是用Kd树来实现。 

(3)Kmean 

要求自定义K个聚类中心,然后人为的初始化聚类中心,通过不断增加新点变换中心位置得到最终结果。Kmean的缺点可以用Kmean++方法进行一些解决(思想是使得初始聚类中心之间的距离最大化)

6、EM算法、HMM、CRF

这三个放在一起不是很恰当,但是有互相有关联,所以就放在这里一起说了。注意重点关注算法的思想。 

(1)EM算法 

EM算法是用于含有隐变量模型的极大似然估计或者极大后验估计,有两步组成:E步,求期望(expectation);M步,求极大(maxmization)。本质上EM算法还是一个迭代算法,通过不断用上一代参数对隐变量的估计来对当前变量进行计算,直到收敛。 (注意:EM算法是对初值敏感的,而且EM是不断求解下界的极大化逼近求解对数似然函数的极大化的算法,也就是说EM算法不能保证找到全局最优值。对于EM的导出方法也应该掌握。 )

(2)HMM算法 

隐马尔可夫模型是用于标注问题的生成模型。有几个参数(ππ,A,B):初始状态概率向量π,状态转移矩阵A,观测概率矩阵B。称为马尔科夫模型的三要素。 

马尔科夫三个基本问题:

  • 概率计算问题:给定模型和观测序列,计算模型下观测序列输出的概率。–》前向后向算法
  • 学习问题:已知观测序列,估计模型参数,即用极大似然估计来估计参数。–》Baum-Welch(也就是EM算法)和极大似然估计。
  • 预测问题:已知模型和观测序列,求解对应的状态序列。–》近似算法(贪心算法)和维比特算法(动态规划求最优路径)

(3)条件随机场CRF 

给定一组输入随机变量的条件下另一组输出随机变量的条件概率分布密度。条件随机场假设输出变量构成马尔科夫随机场,而我们平时看到的大多是线性链条随机场,也就是由输入对输出进行预测的判别模型。求解方法为极大似然估计或正则化的极大似然估计。 

之所以总把HMM和CRF进行比较,主要是因为CRF和HMM都利用了图的知识,但是CRF利用的是马尔科夫随机场(无向图),而HMM的基础是贝叶斯网络(有向图)。而且CRF也有:概率计算问题、学习问题和预测问题。大致计算方法和HMM类似,只不过不需要EM算法进行学习问题。

(4)HMM和CRF对比 

其根本还是在于基本的理念不同,一个是生成模型,一个是判别模型,这也就导致了求解方式的不同。

7、常见基础问题

(1)数据归一化(或者标准化,注意归一化和标准化不同)的原因 

  • 要强调:能不归一化最好不归一化,之所以进行数据归一化是因为各维度的量纲不相同。而且需要看情况进行归一化。
  • 有些模型在各维度进行了不均匀的伸缩后,最优解与原来不等价(如SVM)需要归一化。
  • 有些模型伸缩有与原来等价,如:LR则不用归一化,但是实际中往往通过迭代求解模型参数,如果目标函数太扁(想象一下很扁的高斯模型)迭代算法会发生不收敛的情况,所以最坏进行数据归一化。
  • 补充:其实本质是由于loss函数不同造成的,SVM用了欧拉距离,如果一个特征很大就会把其他的维度dominated。而LR可以通过权重调整使得损失函数不变。

(2)衡量分类器的好坏: 

这里首先要知道TP、FN(真的判成假的)、FP(假的判成真)、TN四种(可以画一个表格)。 

几种常用的指标:

  • 精度precision = TP/(TP+FP) = TP/~P (~p为预测为真的数量)
  • 召回率 recall = TP/(TP+FN) = TP/ P
  • F1值: 2/F1 = 1/recall + 1/precision
  • ROC曲线:ROC空间是一个以伪阳性率(FPR,false positive rate)为X轴,真阳性率(TPR, true positive rate)为Y轴的二维坐标系所代表的平面。其中真阳率TPR = TP / P = recall, 伪阳率FPR = FP / N

(3)SVD和PCA 

PCA的理念是使得数据投影后的方差最大,找到这样一个投影向量,满足方差最大的条件即可。而经过了去除均值的操作之后,就可以用SVD分解来求解这样一个投影向量,选择特征值最大的方向。

(4)防止过拟合的方法 

过拟合的原因是算法的学习能力过强;一些假设条件(如样本独立同分布)可能是不成立的;训练样本过少不能对整个空间进行分布估计。 

处理方法:

  • 早停止:如在训练中多次迭代后发现模型性能没有显著提高就停止训练
  • 数据集扩增:原有数据增加、原有数据加随机噪声、重采样
  • 正则化
  • 交叉验证
  • 特征选择/特征降维

(5)数据不平衡问题 

这主要是由于数据分布不平衡造成的。解决方法如下:

  • 采样,对小样本加噪声采样,对大样本进行下采样
  • 进行特殊的加权,如在Adaboost中或者SVM中
  • 采用对不平衡数据集不敏感的算法
  • 改变评价标准:用AUC/ROC来进行评价
  • 采用Bagging/Boosting/ensemble等方法
  • 考虑数据的先验分布

面试题全集

对宝典感兴趣的可以加下方二维码,回复“面试宝典”掌握机器学习面试题

猜你喜欢

转载自www.cnblogs.com/t198520/p/10750163.html