首页 > 编程知识 正文

随机森林算法通俗易懂,随机森林算法流程图

时间:2023-05-05 22:28:43 阅读:24406 作者:534

迄今为止讨论了几种决策树算法、集成学习方法,今天将讨论基于bagging集成的决策树算法——随机森林(Random Forest )。 随机森林很简单,但它是最强大的机器学习算法之一,是实用上非常常用的算法之一,是我们必须学习的算法。

首先让我们简单回顾一下决策树算法。 因为那是随机森林的基础。

1 )决策树的最大特点是直观、便于说明。 在大家的生活中,就像我们之前列举的债务板栗一样,在某个时刻也在无意识地或有意地使用它。

决策树算法根据特征选择的方式分为ID3算法、C4.5算法和CART算法。 CART算法将Gini指数用于特征选择,选择Gini指数最小的特征及其对应的分割点作为最佳特征和最佳分割点,重复循环直到满足停止条件。

决策树对训练数据很少假设,所以只要不加任务约束,树结构就会根据训练数据的特性自由生长,达到100%的正确率。 为了提高决策树的泛化能力,决策树使用了剪枝的方法。 但是,剪枝在减少模型方差的同时,减小模型的偏差(精度)。 那么,在降低模型方差的同时,没有显著降低模型偏差,还有其他方法吗? 巧的是,上一篇文章提到的bagging集成方法正好具有这个特性。

用bagging综合多个决策树(CART树)称为随机森林。

2 )在随机森林前篇中,在探讨bagging集成学习方法时,bagging集成方法有效的前提条件是基础模型之间的相关性必须保持较低,低相关性才能保证基础模型之间的差异性,有差异性的基础模型才能结合起来

为了使CART树具有较大差异,随机森林除了随机过采样样本,提高训练集的随机性外,还在树的生成时引入了额外的随机,即特征随机。 树生成时,选择随机采样特征中最优的特征作为分裂节点,使每个树有更大的差异。

让我们总结一下随机森林的算法过程。

输入:数据量为m m m的训练集D D D,tt棵CART树

输出:最终随机森林f(x ) f(x ) f(x ) x ) ) ) ) ) ) ) ) ) 65

1 )对训练集D D D随机过采样mm次,得到样本量m m m的样本集D s a m p l e D_{sample} Dsample;

2 )从所有属性特征中随机选择k k k个属性特征,选择最优分割属性特征作为节点构建CART树t(x ) t(x ) t ) x )

3 )重复以上2个步骤tt次,则t成立

T T颗决策树;
4)这 T T T颗决策树组成随机森林。如果是分类算法预测,则通过投票表决数据最终属于哪一个类别;如果是回归预测,则 通过平均作为最终模型的输出。
       

4)Out of Bag评价

        对于Bagging,采用有放回的采样,那么一些样本可能被多次重复采样,有一些可能不会被采样。对于一个大小为 m m m的训练集进行随机采样,样本每一次被采样的概率为 1 m frac{1}{m} m1​,没有被采样到的概率为 1 − 1 m 1-frac{1}{m} 1−m1​, m m m次都没有被采样到的样本的概率为 ( 1 − 1 m ) m {(1-frac{1}{m})}^m (1−m1​)m,当 m → ∞ mrightarrow infty m→∞时,
                                                                        lim ⁡ m → + ∞ = 1 e ≈ 0.368 {lim_{m to +infty}}=frac{1}{e}approx0.368 limm→+∞​=e1​≈0.368
        也就是说,对于大小为 m m m的训练集,平均只有63.2%的样本被每个分类器采样,剩余的36.8%没有被采样到,没有被采样的样本被称为Out of Bag。
        注意,每个分类器的36.8%的样本是不一样的。由于分类器在训练的时候没有使用到Out of Bag的样本数据,因此这部分可以用来评估分类器,进而不需要另外划分验证集或者做交叉验证了。在sklearn随机森林库类中,你可以通过oob_score=True来自动评估,评估结果通过oob_score_查看,具体我们下篇再探讨。
       

3)随机森林的其他应用

        随机森林除了做正常的分类与回归预测,还可以使用到其他的一些场景。

计算特征重要性
        使用随机森林计算特征的重要性应该是我们使用的最多的一个场景了。计算特征重要性的指标有很多,可以使用经过特征节点的样本比例、特征节点的纯度减少、特征在随机森林所有的树中的平均深度、或者随机更换一些特征,重新建立决策树,计算新模型的正确率的变化。scikit-learn中随机森林库类通过将特征贡献的样本比例与纯度减少相结合得到特征的重要性。

异常值检测——Isolation Forest
       使用随机森林也可以做异常值检测。原理为,计算所有树中每一个样本从根到叶子的距离总和 D ( x ) D(x) D(x),如果样本为异常值,它应该在大多数树中很快就能从根到达叶子,即D(x)较小。

计算样本的相似度
       使用随机森林还可以计算样本的相似度。原理为,如果两个样本同时出现在相同的叶节点的次数越多,则二者越相似。
       

4)总结

        下面我们对随机森林算法的优缺点做一个总结。

        随机森林的主要优点:

支持并行处理;不需要对特征进行标准化处理;不需要对特征缺失值进行处理;模型较稳定,泛化能力强;模型可以输出特征重要性;使用Out of Bag,不需要单独划分测试集;

随机森林的主要缺点:

由于有多个基模型组合而成,模型不易解释;树较多时,训练时间比较久;

       
        随机森林是非常强大的算法,可以作为我们做分类任务首要尝试的算法。

(欢迎大家在评论区探讨交流,也欢迎大家转载,转载请注明出处!)
       
上篇:集成学习方法之Bagging,Boosting,Stacking
下篇:Scikit-learn随机森林算法库总结与调参实践

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