随机森林

本文介绍了随机森林,它是多个决策树的集合,能解决分类问题,可避免单棵决策树过拟合。阐述了其与决策树的联系,指出其随机性体现在数据集和特征选择上。还介绍了Bagging和Boosting方法,以及由决策树构成的随机森林、提升树、GBDT等算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随机森林能做什么?

随机森林能解决分类问题

随机森林是什么?

随机森林是多个决策树的集合,每一个决策树的结构都不一样。决策树不是也可以进行分类么,那为什么还需要这么多个决策树呢。主要的原因是:在决策树中即使做了预剪枝,它也经常会过拟合,泛化性能很差。因此,在大多数应用中,往往使用决策树集成的方法来替代单棵决策树(总结一下:对于一个结论,每个人的思路都会不一样,人多了,汇总在一起,结论会更加的客观和准确,不会某一个人的结论占据主导,这就是解决过拟合的问题)。

随机森林与决策树的联系?

森林是有树组成的,这在现实中也是存在的哈。

1、随机森林由n棵决策树组成

2、每棵树判断原理和单颗决策树决策并无区别

3、每棵树的决策结构不一样,这个是由构建每一棵树的数据集不一样(这里应用了Bagging(套袋法))。

4、每棵树的预测可能都相对较好,但可能对部分数据过拟合。如果构造很多树,并且每棵树的预测都很好,但都以不同的方式过拟合,那么我们可以对这些树的结果取平均值来降低过拟合。既能减少过拟合又能保持树的预测能力,这可以在数学上严格证明。 下面介绍随机森林的简单使用(理解成把过拟合随机分摊到每棵树,但是又不是平均的分配,而是减少过拟合)。

随机森林的随机在哪里?

1、构建每一颗决策树的数据集是随机的。解释一下:n_samples个数据点中有放回地(即同一样本可以被多次抽取)重复随机抽取一个样本共抽取n_samples次这样会创建一个与原数据集大小相同的数据集,但有些数据点会缺失(大约三分之一),有些会重复。举个栗子:比如我们想要创建列表[‘1', ‘2', ‘3', ‘4']的自助采样。一种可能的自主采是[‘2', ‘3', ‘1', ‘1'],另一种可能的采样为[‘4', ‘1', ‘2', ‘1’]。

2、每个样本集随机抽n_samples个样本,总共抽取N次,这样就能构建N个不同的决策树。

3、构建单颗决策树的原理并不完全相同,在每个结点处,随机选择特征的一个子集,并对其中一个特征寻找最佳测试,而不是对每个结点都寻找最佳测试。选择的特征个数由max_features参数来控制。而且每个结点中特征子集的选择相互独立,这样树的每个结点可以使用特征的不同子集来做出决策。由于使用了自助采样,随机森林中构造每棵决策树的数据集都是略有不同的。由于每个结点的特征选择,每棵树中的每次划分都是基于特征的不同子集。这两种方法共同保证随机森林中所有树都不相同。试想一下,如果我们将max_features参数值调整的较大,这意味着我们的每个树将会非常类似,容易造成过拟合。但是max_features参数值如果过小,那么随机森林中的树将会差异很大,为了很好地拟合数据,每棵树的深度就要很大。

Bagging(套袋法)

从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
对于分类问题:由投票表决产生分类结果;对于回归问题:由k个模型预测结果的均值作为最后预测结果。(所有模型的重要性相同)

Boosting(提升法)

对于训练集中的每个样本建立权值wi,表示对每个样本的关注度。当某个样本被误分类的概率很高时,需要加大对该样本的权值。进行迭代的过程中,每一步迭代都是一个弱分类器。我们需要用某种策略将其组合,作为最终模型。(例如AdaBoost给每个弱分类器一个权值,将其线性组合最为最终分类器。误差越小的弱分类器,权值越大)

决策树构成的算法

1)Bagging + 决策树 = 随机森林

2)AdaBoost + 决策树 = 提升树

3)Gradient Boosting + 决策树 = GBDT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值