一. 前言
在前几篇博文中我们介绍了boosting系列的几个主要算法GBDT、AdaBoost和XGboost的基本原理与算法描述。本篇博文将介绍集成学习的另一大分支bagging方法的代表算法随机森林(Random Forest)算法。
bagging系列的算法原理相较于boosting系列的算法要简单不少。bagging方法各个子树并行的生成,而不像boosting系列算法,下一棵子树的形成是建立在上一棵的基础之上的。bagging方法使用强学习器作为基学习器的时候效果会更好,这也是防止过拟合的一种方式,而boosting方法使用弱学习器作为基学习器的时候效果会更好。
本文的主要内容:首先介绍随机森林的基本原理,然后再介绍随机森林家族中的其他一些方法,接着会讨论关于方差与偏差的问题以及方差和偏差是如何影响着我们的机器学习模型,最后总结随机森林的优缺点。
下面我们就开始介绍随机森林吧!
二. 随机森林算法基本原理介绍
2.1 随机森林简单介绍
随机森林是在bagging算法的基础之上加了一点小小的改动演化过来的。我们知道bagging算法是在原始的数据集上采用有放回的随机取样的方式来抽取m个子样本,从而利用这m个子样本训练m个基学习器,从而降低了模型的方差。而我们的随机森林的改动有两处,第一:不仅随机的从原始数据集中随机的抽取m个子样本,而且在训练每个基学习器的时候,不是从所有特征中选择最优特征来进行节点的切分,而是随机的选取k个特征,从这k个特征中选择最优特征来切分节点,从而更进一步的降低了模型的方差;第二:随机森林使用的基学习器是CART决策树。
随机森林随机选择的样本子集大小m越小模型的方差就会越小,但是偏差会越大,所以在实际应用中,我们一般会通过交叉验证的方式来调参,从而获取一个合适的样本子集的大小。所以随机森林除了基学习器使用CART决策树和特征的随机选择以外,其他方面与bagging方法没有什么不同。
2.2 随机森林的算法描述
输入:训练数据集,样本子集的个数T
输出:最终的强分类器
(1)对:
(a)从原始样本集中随机的抽取m个样本点,得到一个训练集