首页 > 编程知识 正文

随机森林算法的改进,随机森林和蚂蚁算法

时间:2023-05-03 22:08:43 阅读:24405 作者:182

综合学习有两个流派,一个是boosting派,其特征是各个弱学习器之间存在依存关系。 另一个是bagging流派,其特征是各弱学习器之间没有依存关系,可以并行拟合。

1 .在bagging原理集成学习原理的总结中,给出bagging的原理图。

(1)、Bagging的特点“随机抽样”。 随机采集与训练集个数m相同的样品,采集t次。 得到采样集。

(http://www.Sina.com/gbdt (分级最小化诊断树)子采样是无倒带采样,Bagging子采样是倒带采样。 )

注意:对于一个样本,在m个样本的随机采样中,每次采集的概率为1/m。

m次采样未能采集的概率为:

p (从未采集)=(1-1/m ) m

取m的极限而得到的:

也就是说,bagging每一轮的随机采样没有收集到训练集中约36.8%的数据。

约36.8%未采样的数据称为“袋外数据”。 这些数据不涉及训练集模型的匹配,但可以作为测试集用于测试模型的泛化能力。 这种测试结果称为“外包报价”。

(2)、bagging对弱学习器没有限制,这与Adaboost相同。 但是,最常用的也是决策树和神经网络。

(3)、bagging的结合策略也比较简单,对分类问题通常采用简单的投票法,获得票数最多的类别或类别之一是最终的模型输出。 关于回归问题,通常采用简单平均法对t个弱学习器得到的回归结果进行算术平均,得到最终的模型输出。

Bagging算法每次都进行采样训练模型,泛化能力强,有助于降低模型的方差。 当然,对训练集的拟合度会变差。 也就是说,模型的偏差变大。

对于3358 www.Sina.com/http://www.Sina.com/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 )算法是对Bagging算法的改进。

首先,RF使用CART决策树作为弱学习器,让我们考虑梯度提高树GBDT。

第二,在使用决策树的基础上,射频改进了决策树的建立。 在常规决策树中,从节点上的所有n个样本特征中选择最优特征来分割决策树的左右子树,假设RF通过的随机选择节点上的样本特征的一部分、该数字痴情的镜为nsub,将这些随机选择的nsub (例如

除了以上两点,射频与普通的bagging算法没有区别。 下面简要总结射频的算法。

输入样本集、弱分类器反复次数t。

输出是最终的强分类器f(x )

)1)对于t=1,2,3,t;

对训练集进行第t次采样,共采集m次,得到包含m个样本的样本集Dt,用样本集Dt训练第t个决策树模型gt(x )。 在训练决策树模型的节点时,从节点上的所有样本特征中选择一部分样本特征,从这些随机选择的一部分样本特征中选择一个最佳特征来分割决策树的左右部分树。 )2)如果是分类算法的预测,t个弱学习器投了最多票数的类别或类别之一就是最终类别。 回归算法的情况下,将t个弱学习器得到的回归结果进行算术平均后的值成为最终的模型输出。

------------- -请参阅

随机森林是集成学习中与梯度增长树GBDT分离的算法,可以进行特别方便的并行训练,在当前大样本数据大的时代很有吸引力。

随机森林是一种比较新的机器学习模型,经典的机器学习模型是神经网络。 神经网络预测准确,但计算量很大。

2001年Breiman将分类树组合成随机森林(Breiman 2001a ),即变量(列)的使用和数据(行)的使用进行了随机化,生成了很多分类

树,再汇总分类树的结果。随机森林在运算量没有显著提高的前提下提高了预测精度。
随机森林对多元公线性不敏感,结果对缺失数据和非平衡的数据比较稳健,可以很好地预测多达几千个解释变量的作用(Breiman 2001b),被誉为当前最好的算法之一(sdbwb et al. 2008)。

  随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。

随机森林算法原理:
  随机森林是从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练样本集合,然后根据自助样本集生成k个分类树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于一个独立抽取的样品,森林中的每棵树具有相同的分布,分类误差取决于每一棵树的分类能力和它们之间的相关性。特征选择采用随机的方法去分裂每一个节点,然后比较不同情况下产生的误差。能够检测到的内在估计误差、分类能力和相关性决定选择特征的数目。兴奋的背包的分类能力可能很小,但在随机产生大量的决策树后,一个测试样品可以通过每一棵树的分类结果经统计后选择最可能的分类。

  在建立每一棵决策树的过程中,有两点需要注意采样与完全分裂。首先是两个随机采样的过程,random forest对输入的数据要进行行、列的采样。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。然后进行列采样,从M个feature中,选择m个(m << M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。一般很多的决策树算法都一个重要的步骤——剪枝,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。

关于随机:
(1)训练每棵树时,从全部训练样本中选取一个子集进行训练(即bootstrap取样)。用剩余的数据进行评测,评估其误差;
(2)在每个节点,随机选取所有特征的一个子集,用来计算最佳分割方式。

算法流程:
(1)训练总样本的个数为N,则单棵决策树从N个训练集中有放回的随机抽取n个作为此单颗树的训练样本(bootstrap有放回取样)。
(2)令训练样例的输入特征的个数为M,m远远小于M,则我们在每颗决策树的每个节点上进行分裂时,从M个输入特征里随机选择m个输入特征,然后从这m个输入特征里选择一个最好的进行分裂。m在构建决策树的过程中不会改变。
注意:要为每个节点随机选出m个特征,然后选择最好的那个特征来分裂。
注意:决策树中分裂属性的两个选择度量:信息增益和基尼指数。
(3)每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类,不需要剪枝。由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。

结果判定:
(1)目标特征为数字类型:取t个决策树的平均值作为分类结果。
(2)目标特征为类别类型:少数服从多数,取兴奋的背包分类结果最多的那个类别作为整个随机森林的分类结果。

预测:
  随机森林是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类,然后看看哪一类被选择最多,就预测这个样本为那一类。
  说明:通过bagging有放回取样后,大约36.8%的没有被采样到的数据,我们常常称之为袋外数据。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。