【19】机器学习算法面试八股

351为什么xgboost要二阶展开

  1. xgboost是以mse为基础推导出来的,在mse的情况下,xgboost的目标函数展开就是一阶项+二阶项的形式,而其他类似log loss这样的目标函数不能表示成这种形式。为了后续推导的统一,所以将目标函数进行二阶泰勒展开,就可以直接自定义损失函数了,只要二阶可导即可,增强了模型的扩展性。
  2. 二阶信息能够让梯度收敛的更快,类似牛顿法比SGD收敛更快。一阶信息描述梯度变化方向,二阶信息可以描述梯度变化方向是如何变化的。

352泰勒公式求e的近似值

1+1/1!+1/2!+⋯+1/n!+⋯

353XGBoost 如果损失函数没有二阶导,该怎么办

gbdt的目标函数与xgboost区别就是带不带正则项(算法内容上)。gbdt对损失函数的优化是直接使用了损失函数的负梯度,沿着梯度下降的方向来减小损失,其是也就是一阶泰勒展开。而xgboost在这里使用了二阶泰勒展开,因为包含了损失函数的二阶信息,其优化的速度大大加快。但如果loss没有二阶导数,就使用一阶导数优化

354GBDT的G梯度的向量长度为多少

样本数

355LSTM与Transformer的区别

  1. Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成,前后没有“时序”,可以实现并行计算,更高效;而LSTM是传统的RNN改进结构,有时序的概念,不能并行计算。
  2. LSTM引入三个控制门,拥有了长期记忆,更好的解决了RNN的梯度消失和梯度爆炸的问题;而Transformers依然存在顶层梯度消失的问题。
  3. LSTM的输入具备时序;而Transformers还需要利用positional encoding加入词序信息,但效果不好,而且无法捕获长距离的信息
  4. LSTM针对长序列依然计算有效;而Transformers针对长序列低效,计算量太大,self.attention的复杂度是n的2次方
  5. CNN和RNN结构的可解释性并不强,LSTM也一样;而Transformers的自注意力可以产生更具可解释性的模型。

356循环神经网络

循环神经网络(Recurrent Neural Network)用于处理序列信息,即前面的输入和后面的输入是有关系的。一个简单的循环神经网络如,它由输入层、一个隐藏层和一个输出层组成:循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重。

357LSTM的三个门怎么运作的,写一下三个门的公式LSTM的第一步就是决定细胞状态需要丢弃哪些信息。这部分操作是通过一个称为遗忘门的sigmoid单元来处理的。

下一步是决定给细胞状态添加哪些新的信息。更新完细胞状态后需要根据输入的ht−1h_{t-1}ht−1和xtx_{t}xt来判断输出细胞的哪些状态特征,这里需要将输入经过一个称为输出门的sigmoid层得到判断条件,然后将细胞状态经过tanh层得到一个-1~1之间值的向量,该向量与输出门得到的判断条件相乘就得到了最终该RNN单元的输出

358RNN为什么难以训练,LSTM又做了什么改进

简单RNN结构中单一tanh循环体,RNN在训练中很容易发生梯度爆炸和梯度消失,这导致训练时梯度不能在较长序列中一直传递下去,从而使RNN无法捕捉到长距离的影响。LSTM引入三个控制门,拥有了长期记忆,更好的解决了RNN的梯度消失和梯度爆炸的问题。

359LSTM为什么可以解决长期依赖,LSTM会梯度消失吗

因为LSTM中有两个通道在保持记忆:短期记忆h,保持非线性操作;长期记忆C,保持线性操作。因为线性操作是比较稳定的,所以C的变化相对稳定,保持了长期记忆。而对有用信息的长期记忆是通过训练获得的,也就是说在内部的几个权值矩阵中。LSTM总可以通过选择合适的参数,在不发生梯度爆炸的情况下,找到合理的梯度方向来更新参数,而且这个方向可以充分地考虑远距离的隐含层信息的传播影响。另外需要强调的是,LSTM除了在结构上天然地克服了梯度消失的问题,更重要的是具有更多的参数来控制模型;通过四倍于RNN的参数量,可以更加精细地预测时间序列变量。

360LSTM相较于RNN的优势

LSTM引入三个控制门,拥有了长期记忆,更好的解决了RNN的梯度消失和梯度爆炸的问题。与简单RNN结构中单一tanh循环体不同的是,LSTM使用三个“门”结构来控制不同时刻的状态和输出。所谓的“门”结构就是使用了sigmoid激活函数的全连接神经网络和一个按位做乘法的操作,sigmoid激活函数会输出一个0~1之间的数值,这个数值描述的是当前有多少信息能通过“门”,0表示任何信息都无法通过,1表示全部信息都可以通过。其中,“遗忘门”和“输入门”是LSTM单元结构的核心。

361GRU

链接GRU相对于LSTM少了一个门函数,因此在参数的数量上也是要少于LSTM的,所以整体上GRU的训练速度要快于LSTM的。不过对于两个网络的好坏还是得看具体的应用场景

362CRF原理

设X与Y是随机变量,P(Y|X)是给定X的条件下Y的条件概率分布,若随机变量Y构成一个由无向图G=(V,E)表示的马尔科夫随机场。则称条件概率分布P(Y|X)为条件随机场。因为是在X条件下的马尔科夫随机场,所以叫条件随机场。

363k-means的优缺点

优点:

  1. 原理简单,实现容易 缺点:
  2. 收敛较慢
  3. 算法时间复杂度比较高 O(nkt)
  4. 不能发现非凸形状的簇
  5. 需要事先确定超参数K
  6. 对噪声和离群点敏感
  7. 结果不一定是全局最优,只能保证局部最优

364k-means介绍一下

基本K-Means算法的思想很简单,事先确定常数K,常数K意味着最终的聚类类别数,

首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,

接着,重新计算每个类的质心(即为类中心),

重复这样的过程,直到质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心

。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。

365k-means的簇怎么选

手肘法图片像一个手肘

366k-means如何调优

  1. 数据归一化和离群点的处理 上面也说了k-means是根据欧式距离来度量数据的划分,均值和方差大的数据会对结果有致命的影响。同时,少量的噪声也会对均值产生较大的影响,导致中心偏移。所以在聚类前一定要对数据做处理。
  2. 选择合适的k值:k-means++方法,在一开始确定簇时,让所有簇中心坐标两两距离最远。

367知道哪些聚类模型

K-Means聚类基本K-Means算法的思想很简单,事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新计算每个类的质心(即为类中心),重复这样的过程,直到质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。均值漂移聚类Mean-Shift聚类是基于滑动窗口的算法,试图找到数据点的密集区域。这是一种基于质心的算法,意味着其目标是定位每个簇的中心点,通过将滑动窗口的均值点作为候选点来迭代更新中心点。在后处理阶段将消除近似重复的窗口,最终形成一组中心点及其相应的簇。与K-means聚类相比,Mean-Shift的最大优势就是可以自动发现簇的数量而不需要人工选择。簇的中心向最大密度点聚合的事实也是非常令人满意的,因为它可被非常直观地理解并很自然地契合数据驱动。具噪声基于密度的空间聚类算法DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,类似于Mean-Shift,但具有一些显著的优点。高斯混合模型的期望最大化聚类K-Means的主要缺点之一是其简单地使用了平均值作为簇的中心。 高斯混合模型(GMMs)相比于K-Means来说有更多的灵活性。 对于GMMs,我们假设数据点是服从高斯分布的(对于用均值进行聚类,这一假设是个相对较弱的限制)。 这样,我们有两个参数来描述簇的形状:均值和标准差! 以二维为例,这意味着簇可以采用任何类型的椭圆形(因为我们在x和y方向都有标准偏差)。 因此,每个簇都有一个高斯分布。凝聚层次聚类分层聚类算法实际上分为两类:自上而下或自下而上。自下而上算法首先将每个数据点视为单个簇,然后不断合并(或聚合)成对的簇,直到所有簇合并成一个包含所有数据点的簇。因此自下而上的层次聚类被称为分层凝聚聚类或HAC。该簇的层次结构被表示为树(或树状图)。树的根是包含所有样本的唯一的簇,叶是仅有一个样本的簇。层次聚类是以较低的效率为代价实现的,它具有O(n3)的时间复杂度。

368kmeans聚类如何选择初始点

  1. 初始点随机分布
  2. kmeans++方法:在一开始确定簇时,让所有簇中心坐标两两距离最远。 kmeans聚类,聚的是特征还是样本?特征的距离如何计算? 聚的是特征。 特征的距离计算方法一般是方差。

369Kmeans算法和EM算法的关系

K-means是一种迭代算法,每次迭代涉及到两个连续的步骤,分别对应rnk(距离)的最优化和μk(均值)的最优化,也对应着EM算法的E步(求期望)和M步(求极大)两步。EM算法是这样,假设我们想估计知道A和B两个参数,在开始状态下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。可以考虑首先赋予A某种初值,以此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。

370Kmeans代码

更多校园招聘常见面试问题(开发、算法、编程题目)参见CSDN博客:http://t.csdn.cn/V4qbH

欢迎关注、收藏、点赞后进行问题咨询及秋招建议

#如何判断面试是否凉了##23届找工作求助阵地##我的实习求职记录##实习,投递多份简历没人回复怎么办##我的求职思考#
机器学习算法面经 文章被收录于专栏

介绍秋招面试过程中对机器学习算法、数据挖掘、python语言、C++语言、数据结构的面试题目和基础总结

全部评论
马住!
点赞 回复 分享
发布于 2024-07-30 19:02 北京
爱了,爱了
点赞 回复 分享
发布于 2024-02-21 09:50 山东

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
4
36
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务