随机森林算法原理
集成学习有两个流派,一个是boosting,特点是各个弱学习器之间有依赖关系;一个是bagging,特点是各个弱学习器之间没依赖关系,可以并行拟合。
1. bagging的原理
在集成学习原理总结中,给出bagging的原理图。
(1)、Bagging的特点“随机采样”。随机采集跟训练集个数m相同的样本,采集T次。得到采样集。
(注意:GBDT(Gradient Boosted Decision Tree)的子采样是无放回采样,而Bagging的子采样是放回采样。)
(2)、对于一个样本,在m个样本的随机采样中,每次被采集到的概率是1/m。
在m次采样中没有采集到的概率是:
对m取极限得到:
也就是说bagging的每轮随机采样中,训练集大约有36.8%的数据没被采集。
对于大约36.8%没被采样的数据,称为“袋外数据”。这些数据没参与训练集模型的拟合,但可以作为测试集用于测试模型的泛化能力,这样的测试结果称为“外包估计”。
(3)、bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。
(4)、bagging的结合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。
由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。
2. bagging算法流程
相对于Boosting系列的Adaboost和GBDT,bagging算法简单的多。
输入样本集,弱学习器算法,迭代次数T。
输出为最终的强分类器 f(x)
(1)对于 t = 1,2,。。.,T:
对训练街进行第t次随机采样,共采集m次,得到包含m个样本的采样集Dt
用采样集Dt训练第 t 个弱学习器Gt(x)
(2)如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
3. 随机森林算法
RF(Random Forest)算法是对Bagging算法进行了改进。
首先,RF使用了CART决策树作为弱学习器,这让我们想到梯度提升树GBDT。
第二,在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过的随机选择节点上的一部分样本特征,这个数字小于n,假设为nsub,然后在这些随机选择的nsub(小于n)个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。
除了上面两点,RF和普通的bagging算法没什么不同,下面简单总结下RF的算法。
输入为样本集,弱分类器迭代次数T。
输出为最终的强分类器f(x)
(1)对于t = 1,2,3,。。.,T;
对训练集进行第t次采样,共采集m次,得到包含m个样本的采样集Dt
用采样集Dt训练第t个决策树模型Gt(x),在训练决策树模型的节点的时候,在节点上所有的样本特征中选择一部分样本特征,在这些随机选择的部分样本特征中选择一个最优的特征来做决策树的左右子树划分。
(2)如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
4. 随机森林的推广
RF不仅用于分类问题,还可以用于特征转换,异常点检测等。
4.1 extra trees
extra trees是RF的变种,原理几乎与RF一模一样,仅有的区别:
(1)对于每个决策树的训练,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用的原始训练集。
(2)在选定了划分特征后,RF的决策树会基于基尼系数,均方差之类的原则,选择一个最优的特征划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。
4.2 Totally Random Trees Embedding
Totally Random Trees Embedding(以下简称 TRTE)是一种非监督学习的数据转化方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运用核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法。
TRTE在数据转化的过程也使用了类似于RF的方法,建立T个决策树来拟合数据。当决策树建立完毕后,数据集里的每个数据在T个决策树中叶子节点的位置也定下来了。比如我们有3个决策树,每个决策树有5个叶子节点,某个数据特征x划分到第一个决策树的第2个叶子节点,第二个决策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1),有15维的高维特征。这里特征维度之间加上空格是为了强调三个决策树各自的子编码。
映射到高维特征后,可以继续使用监督学习的各种分类回归算法。
5. 随机森林小结
RF的算法原理也终于讲完了,作为一个可以高度并行化的算法,RF在大数据时候大有可为。
RF的主要优点有:
1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
3) 在训练后,可以给出各个特征对于输出的重要性
4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
6) 对部分特征缺失不敏感。
RF的主要缺点有:
1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
随机森林算法的优缺点
1、随机森林算法优点
由于采用了集成算法,本身精度比大多数单个算法要好,所以准确性高
在测试集上表现良好,由于两个随机性的引入,使得随机森林不容易陷入过拟合(样本随机,特征随机)
在工业上,由于两个随机性的引入,使得随机森林具有一定的抗噪声能力,对比其他算法具有-定优势
由于树的组合,使得随机森林可以处理非线性数据,本身属于非线性分类(拟合)模型
它能够处理很高维度(feature很多)的数据,并且不用做特征选择,对数据集的适应能力强:既能处理离散型数据,也能处理连续型数据,数据集无需规范化
训练速度快,可以运用在大规模数据集上
可以处理缺省值(单独作为一类) ,不用额外处理
由于有袋外数据(OOB) ,可以在模型生成过程中取得真实误差的无偏估计,且不损失训练数据量
在训练过程中,能够检测到feature间的互相影响,且可以得出feature的重要性,具有一定参考意义
由于每棵树可以独立、同时生成,容易做成并行化方法
由于实现简单、精度高、抗过拟合能力强,当面对非线性数据时,适于作为基准模型
2、随机森林算法缺点
当随机森林中的决策树个数很多时,训练时需要的空间和时间会比较大
随机森林中还有许多不好解释的地方,有点算是黑盒模型
在某些噪音比较大的样本集上,RF的模型容易陷入过拟合
责任编辑:YYX
评论
查看更多