1. 简述一下随机森林算法的原理

随机森林是一种有监督学习算法。 就像你所看到的它的名字一样,它创建了一个森林,并使它拥有某种方式随机性。 所构建的“森林”是决策树的集成,大部分时候都是用“bagging”方法训练的。 bagging方法,即bootstrap aggregating,采用的是随机有放回的选择训练数据然后构造分类器,最后组合学习到的模型来增加整体的效果。

 

随机森林 随机森林的优点有_随机森林

2. 随机森林的随机性体现在哪里?

随机森林 随机森林的优点有_算法_02

3. 随机森林算法的优缺点

优点:

1、在当前的很多数据集上,相对其他算法有着很大的优势,表现良好

2、它能够处理很高维度(feature很多)的数据,并且不用做特征选择(因为特征子集是随机选择的)

3、在训练完后,它能够给出哪些feature比较重要


4、在创建随机森林的时候,对generlization error使用的是无偏估计,模型泛化能力强

5、训练速度快,容易做成并行化方法(训练时树与树之间是相互独立的)

6、 在训练过程中,能够检测到feature间的互相影响

7、 实现比较简单

8、 对于不平衡的数据集来说,它可以平衡误差。

9、如果有很大一部分的特征遗失,仍可以维持准确度。

缺点:

1、随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟

2、对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

 

4. 随机森林为什么不能用全样本去训练m棵决策树?

随机森林 随机森林的优点有_数据_03

 

5. 随机森林和GBDT的区别?

  1. 随机森林采用的bagging思想,而GBDT采用的boosting思想。这两种方法都是Bootstrap思想的应用,Bootstrap是一种有放回的抽样方法思想。虽然都是有放回的抽样,但二者的区别在于:Bagging采用有放回的均匀取样,而Boosting根据错误率来取样(Boosting初始化时对每一个训练样例赋相等的权重1/n,然后用该算法对训练集训练t轮,每次训练后,对训练失败的样例赋以较大的权重),因此Boosting的分类精度要优于Bagging。Bagging的训练集的选择是随机的,各训练集之间相互独立,弱分类器可并行,而Boosting的训练集的选择与前一轮的学习结果有关,是串行的。
  2. 组成随机森林的树可以是分类树,也可以是回归树;而GBDT只能由回归树组成。
  3. 组成随机森林的树可以并行生成;而GBDT只能是串行生成。
  4. 对于最终的输出结果而言,随机森林采用多数投票等;而GBDT则是将所有结果累加起来,或者加权累加起来。
  5. 随机森林对异常值不敏感;GBDT对异常值非常敏感。
  6. 随机森林对训练集一视同仁;GBDT是基于权值的弱分类器的集成。
  7. 随机森林是通过减少模型方差提高性能;GBDT是通过减少模型偏差提高性能。

附加题

1. 常见的模型加速方法

主要涉及以下几种技术方案:模型结构优化、模型剪枝、模型量化、知识蒸馏。

 

 

2. Self-attention对比RNN和CNN在处理NLP任务时分别有哪些优势


 

3. DNN与DeepFM之间的区别