day8 AI面试刷题
1. 随机森林和GBDT的区别?
参考答案:
- 随机森林采用的是Bagging思想,而GBDT采用的是Boosting思想。
- 组成随机森林的树可以并行生成,而GBDT只能串行生成决策树。
- 随机森林对异常值不敏感,GBDT对异常值非常敏感。
- 随机森林对训练集一视同仁,GBDT对训练集中预测错误的样本给予了更多关注。
- 随机森林是通过减少模型方差提高性能,GBDT是通过减少模型偏差提高性能
- 对于最终的输出结果而言,随机森林采用多数投票等方法,而GBDT则是将所有结果累加起来,或者加权累加起来。
- 组成随机森林的树可以是分类树,也可以是回归树,而GBDT只能由回归树组成。
2. 在训练每颗子树时,该如何决定最优的随机特征个数?
参考答案:
对于随机特征个数这个超参数,没有理论上的最优解,最好的办法是通过超参数搜索与交叉验证的方式来找到最优解。在调节超参数的过程中,需要注意以下几点:
- 较少的特征数量可以减少方差,但是会增大单颗数的偏差。
- 同理增大特征数量,会减少单个模型的偏差,但是会导致方差变大。
- 最优的特征数量同时还取决于特征所蕴含的信息量以及特征数据的质量。如果特征数据是干净且高质量的,那么最优的随机特征个数可以相对较少,而如果特征数据里面包括的噪声比较多,那么就需要增加随机特征的数量以提高学习到高质量特征的概率。
- 增加特征随机特征的数量同样意味着会降低模型的训练速度。
注:这个超参数是训练随机森林模型师需要调节的最重要的参数。
3. 随机森林算法跟深度学习算法相比有哪些优势?
参考答案:
- 跟神经网络相比,训练随机森林模型所需要的计算资源较少。
- 相较于随机森林,神经网络需要更多的数据来实现模型的收敛。
- 神经网络模型的可解释性差,而随机森林基于决策树算法,在决策树模型中,每一个输出的计算过程,都是可被理解,甚至是可以被可视化出来的。
- 神经网络模型对噪声和异常值更加敏感。
4. 如果让你在GDBT算法和随机森林算法中选择一个来解决实际问题,你通常会做哪些考量?
参考答案:
可以从几个方面对GBDT算法和随机森林算法进行比较,来决定哪个算法解决遇到的实际问题。
模型调优:
- 随机森林算法只有一个重要的超参数,那就是训练子树时随机选取特征的个数。
- GBDT算法有多个主要的超参数需要调节,包括子树的个数,树的深度,以及叶子节点中样本的最大数量等等。
过拟合:
相较于GBDT,随机森林算法不容易过拟合。因为在随机森林算法中,基模型相对独立,而在GBDT算法中,模型之前互相依赖程度高,因此方差较大,较容易过拟合。
模型复杂程度:
- 随机森林算法通常训练几个较深的树模型就可以使得算法性能达到最优。较深的单棵树模型是为了减少模型的偏差,同时根据Bagging的理论得出当基模型之间相互独立的情况下,少数几个基模型的集成就可以使得总体方差迅速降低。
- 对于GBDT算法来讲,为了实现性能最优,通常需要训练很多深度较浅的决策树。相对较浅的决策树是为了保证方差较小,而为了降低偏差则需要大量的决策树组合,从而逐步接近最优解。
预测性能:
在多数情况下,经过充分调优的GBDT性能表现要好于随机森林。
综上所述,在时间和计算资源较充裕的情况下,经过充分调优的GBDT算法往往可以带来比随机森林更好的预测性能表现。而随机森林因为其模型较简单,调优过程容易等特点,在很多场景下,也是不错的备选方案。
5. 简述AdaBoost 算法的工作原理
AdaBoost(Adaptive Boosting)是集成提升算法的一种,它将多个弱分类器组合起来,从而得到一个预测准确率更好的强分类器。
算法的具体步骤如下:
- 初始化,给予每个训练样本相同的权重。
- 通过带有权重的训练集来训练基础分类器。
- 计算当前基础分类器的误差率,并根据当前分类器的误差率来计算当前分类器在最终分类器中所占的权重大小。误差率越低,所占的权重越大。
- 根据当前分类器的权重,以及每个样本被分类错误与否的情况,对样本的权重重新进行更新。被分类错误的样本将会得到更高的权重。
- 循环执行步骤2-4,直到弱分类器的错误率小于某个阈值,或者达到了最大的迭代次数。
- 最终学习得到的模型是所有基础分类器的带权累加和。