随机森林(RandomForest)算法

随机森林是bagging方法的一种具体实现。它会训练多棵决策树,然后将这些结果融合在一起就是最终的结果。随机森林可以用于分裂,也可以用于回归。主要在于决策树类型的选取,根据具体的任务选择具体类别的决策树。

对于分类问题,一个测试样本会送到每一颗决策树中进行预测,然后投票,得票最多的类为最终的分类结果;

对与回归问题,随机森林的预测结果是所有决策树输出的均值。

随机森林的随机性主要体现在两个地方:

1、在训练的时候,采用bootstrap方法对样本是有放回的抽样,每次都使用一部分样本去训练;

2、在决策树内部结点分裂时候,每一个结点都在所有特征里面随机选择在一部分特征,然后在这些特征里面选择最优分裂点。

包外误差 

随机森林每次训练一棵决策树的时候,采用的都是部分的数据。所以,剩下没有使用的样本就可以用来做验证集。有一点像交叉验证的感觉。

对于分类问题,包外误差就是被错分的包外样本除以总的包外样本数

对于回归问题,就是所有包外样本的回归误差和除以包外样本数

特征重要性

随机森林还可以计算特征的重要性。经常也会用随机森林来做特征选择。这里用置换样本特征值(也可以添加噪声)以后的OOB(也就是包外的数据)误差的增加量来判断一个特征的重要性。因为,如果某个特征很重要的话,那么改变样本该特征的值对样本的预测结果就有很大的影响。如果特征不重要,改变特征对样本的预测结果也不会有很大的影响。下面为单棵决策树的误差增加量:

v=\frac{n_1-n_2}{\left |oob\right |}, n1为原特征值下分类/预测正确的包外样本数,n2为改边特征值以后分类/预测正确的包外样本数

最后取所有数的平均值就得到了特征的重要性

随机森林的优点

  1. 在数据集上表现良好,两个随机性的引入,使得随机森林不容易陷入过拟合,但是对于小数据集还是有可能过拟合,所以还是要注意;
  2. 两个随机性的引入,使得随机森林具有很好的抗噪能力;
  3. 它能够处理很高维的数据,并且不用做特征选择,对数据集的适应能力强。既能处理离散性数据,也能处理连续型数据,数据集无需规范化;
  4. 在创建随机森林的时候,对generalization error使用的是无偏估计;
  5. 训练速度快,可以得到变量重要性排序(两种:基于OOB误分率的增加量和基于分裂是的gini下降量);
  6. 在训练过程中,能够检测到feature间的互影响;
  7. 容易做成并行化方法;
  8. 实现比较简单

随机森林的缺点:

  1. 对于小数据集和低维的数据效果可能不是很好。
  2. 整个模型为黑盒,没有很强的解释性。
  3. 由于随机森林的两个随机性,导致运行结果不稳定。

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随机森林是一种集成学习算法,它由多个决策树组成。随机森林通过随机化特征选择和样本选择的方式,构建多个决策树模型,并将它们集成为一个强分类器。 在随机森林算法中,首先从原始数据集中有放回地进行有放回抽样,形成多个训练子集。对于每个训练子集,随机森林使用CART(分类与回归树)算法建立一个决策树。建立决策树的过程中,采用随机化特征选择,即在每次划分节点时,仅考虑子集的一部分特征。这种随机化特征选择可以让每个决策树都对数据集有所差异,增加随机性,避免模型过拟合。 当所有决策树建立完成后,随机森林的分类器通过投票或者求平均值的方式来进行集成预测。对于分类问题,多数投票法是常用的集成方式。对于回归问题,可以将各个决策树的预测结果求平均值来得到最终结果。 随机森林具有以下优点:首先,它能够处理高维度的数据集,并且对缺失数据和异常数据具有较好的鲁棒性;其次,它能够自动进行特征选择,通过不同决策树之间的差异性,可以评估各个特征的重要性;此外,随机森林还可以进行并行计算,提高了训练速度。 总之,随机森林算法通过构建多个决策树进行集成学习,利用随机化特征选择和样本选择的方式,能够处理高维度数据、高效地进行特征选择,并且对于分类和回归问题都有良好的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值