机器学习加强-随机森林

一、 概述

1.1 集成算法概述

     集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通 过在数据上构建多个模型,集成所有模型的建模结果

目标:集成算法会考虑多个评估器的建模结果,汇总之后得到一个综合的结果,以此来获取比单个模型更好的回归或 分类表现。在现在的各种算法竞赛中,随机森林,梯度提升树(GBDT),Xgboost等集成 算法的身影也随处可见,可见其效果之好,应用之广。

多个模型集成成为的模型叫做集成评估器(ensemble estimator),组成集成评估器的每个模型都叫做基评估器 (base estimator)。通常来说,有三类集成算法:装袋法(Bagging),提升法(Boosting)和stacking

1.2 sklearn中的集成算法

集成算法模块:ensemble

 2 RandomForestClassifier(随机森林)

        随机森林是非常具有代表性的Bagging集成算法,它的所有基评估器都是决策树,分类树组成的森林就叫做随机森林分类器,回归树所集成的森林就叫做随机森林回归器

       class sklearn.ensemble.RandomForestClassifier (n_estimators=’10’, criterion=’gini’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None)

2.1 重要参数

2.1.1 控制基评估器的参数

 2.1.2  n_estimators

             n_estimators 是控制森林中树木的数量,即基评估器的数量。这个参数对随机森林模型的精确性影响是单调的,n_estimators越 大,模型的效果往往越好。但是相应的,任何模型都有决策边  n_estimators达到一定的程度之后,随机森林的 精确性往往不在上升或开始波动,并且,n_estimators越大,需要的计算量和内存也越大,训练的时间也会越来越 长。对于这个参数,我们是渴望在训练难度和模型效果之间取得平衡。

2.1.3 random_state

随机森林中的random_state控制的是生成森林的模式,而非让一个森林中只有一棵树。

     当random_state固定时,随机森林中生成是一组固定的树,但每棵树依然是不一致的,这是 用”随机挑选特征进行分枝“的方法得到的随机性。并且我们可以证明,当这种随机性越大的时候,袋装法的效果一 般会越来越好。用袋装法集成时,基分类器应当是相互独立的,是不相同的。

2.1.4 bootstrap & oob_score

bootstrap用来控制抽样技术的参数,要让基分类器尽量都不一样,一种很容易理解的方法是使用不同的训练集来进行训练,而袋装法正是通过有放回的 随机抽样技术来形成不同的训练数据。

 oob_score_ 来查看我们的在袋外数据上测试的结果:

Bonus:Bagging的另一个必要条件

    当基分类器的误差率小于0.5,即准确率大于0.5时,集成的效果是比基分类器要好的。相反, 当基分类器的误差率大于0.5,袋装的集成算法就失效了。所以在使用随机森林之前,一定要检查,用来组成随机森林的分类树们是否都有至少50%的预测正确率。

3 RandomForestRegressor(回归随机森林)

    class sklearn.ensemble.RandomForestRegressor (n_estimators=’warn’, criterion=’mse’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False)

3.2 实例:用随机森林回归填补缺失值

       在sklearn中,我们可以使用sklearn.impute.SimpleImputer来轻松地将均 值,中值,或者其他最常用的数值填补到数据中,在这个案例中,我们将使用均值,0,和随机森林回归来填补缺 失值,并验证四种状况下的拟合状况,找出对使用的数据集来说最佳的缺失值填补方法。

4 机器学习中调参的基本思想

4.1 正确的调参思路

第一步是要找准目标:我们要做什么?

    一般来说,这个目标是提升 某个模型评估指标,比如对于随机森林来说,我们想要提升的是模型在未知数据上的准确率(由score或 oob_score_来衡量)

第二步思考:模型在未知数据上的准确率受什么因素影响?

         在机器学习中,我们用来衡量模型在未知数据上的准确率的指标,叫做泛化误差(Genelization error)

泛化误差

        当模型在未知数据(测试集或者袋外数据)上表现糟糕时,我们说模型的泛化程度不够,泛化误差大,模型的效果 不好。泛化误差受到模型的结构(复杂度)影响。看下面这张图,它准确地描绘了泛化误差与模型复杂度的关系, 当模型太复杂,模型就会过拟合,泛化能力就不够,所以泛化误差大。当模型太简单,模型就会欠拟合,拟合能力 就不够,所以误差也会大。只有当模型的复杂度刚刚好的才能够达到泛化误差最小的目标。

1)模型太复杂或者太简单,都会让泛化误差高,我们追求的是位于中间的平衡点

2)模型太复杂就会过拟合,模型太简单就会欠拟合

3)对树模型和树的集成模型来说,树的深度越深,枝叶越多,模型越复杂

4)树模型和树的集成模型的目标,都是减少模型复杂度,把模型往图像的左边移动

随机森林回归的参数重要性和调参顺序:

 

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
梯度增强随机森林是一种结合了梯度提升树和随机森林算法。它的原理是通过迭代的方式,将多个弱学习器(回归树)组合成一个强学习器。在每一轮迭代中,梯度提升树会根据上一轮的残差来训练新的回归树,然后将新的回归树加入到模型中。这样,每一轮迭代都会逐步减小模型的残差,从而提高模型的预测能力。 与传统的梯度提升树不同的是,梯度增强随机森林在每一轮迭代中,不仅仅使用全部的训练数据,还会随机选择一部分的特征进行训练。这样做的目的是为了减小回归树之间的相关性,提高整个模型的泛化能力。同时,梯度增强随机森林也会限制回归树的层数,以防止过拟合的发生。 总结起来,梯度增强随机森林通过迭代的方式,将多个回归树组合成一个强学习器。它通过梯度提升树的思想来逐步减小模型的残差,同时通过随机选择特征和限制回归树的层数来提高模型的泛化能力和防止过拟合。 #### 引用[.reference_title] - *1* *3* [随机森林 + 梯度提升树 算法小结](https://blog.csdn.net/lixia0417mul2/article/details/124722957)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [机器学习算法原理系列篇14:集成算法随机森林和梯度增强机](https://blog.csdn.net/robot_learner/article/details/105377439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值