美文网首页python机器学习爬虫
随机森林原理与Sklearn参数详解

随机森林原理与Sklearn参数详解

作者: 易码当先 | 来源:发表于2020-06-08 10:09 被阅读0次

    目录


    1、集成算法概述

    2Sklearn中RandomForestClassifier重要参数详解

    3、Sklearn中RandomForestRegressor重要参数详解

    4、附录

    5、总结


    1、集成算法概述:集成算法的目标是多个评估器建模的结果,汇总后得到一个综合结果,以此来获取比单个模型更好的回归或分类表现。多个模型集成成为的模型叫集成评估器,单个模型叫基评估器。通常说有三种集成算法:装袋法(Bagging)、提升法(Boosting)和stacking。装袋法的基本思想是构建多个相互独立的基评估器,然后通过预测平均或多数表决原则来决定集成评估器的结果。装袋法的典型代表就是随机森林(RandomForest)。


    2、RandomForestClassifier重要参数:

    n_estimators:integer, optional (default=100),森林中基评估器的数量,即树的数量。n_estimators越大模型效果越好,但达到一定程度时,精确性趋于稳定。n_estimators越大模型的计算量越大,需要的内存也越大。

    random_state:int, RandomState instance or None, optional (default=None),控制树的生成模式。在DecisionTreeClassifier中random_state生成随机的一棵树,这里的参数控制的是随机生成一片森林模式。用袋装法集成时,基分类器应当是相互独立的,是不同的。

    bootstrap:boolean, optional (default=True),要让基分类器尽量都不一样,一种方式是使用不同的训练数据集来训练不同的树。而装袋法采用的是有放回采样法,来确保每棵树的随机性。booststrap就是用来控制抽样技术的参数。

    oob_score:bool (default=False),是否启用袋外数据做测试。有放回采样策略中,自助数据集平均包含63%的原始数据被抽中(每个样本从原始数据抽中到自助集的概率为:1-(1-\frac{1}{n} )^n=63%左右),也就是说袋外数据(out of bag data  简称oob数据)大致占37%。在使用随机森林时,我们可以不划分测试和训练集,只要开启袋外数据支持,就可以用袋外数据测试我们的模型。然后这并不绝对,如果n足够大,则没有数据落入袋外,自然无法使用oob数据来测试模型了。如果需要用袋外数据做测试,则设置该参数为True,实例化并训练模型完成后,可以通过oob_score_来查看真是落入袋外的数据量。

    重要属性与接口:

    除了estimators_和oob_socre_这两个属性外,作为树模型也有feature_importances这个属性。

    常用的接口主要有:apply,fit,predict和score。除此之外,还需要注意随机森林的predict_proba接口,该接口返回预测数据的被分到每一类标签的概率。如果是二分类,则predict_proba返回的数值大于0.5时被划分为1,否则为0。(在sklearn的随机森林中predict_proba返回每棵树的概率,然后取平均概率,从而根据概率值是否大于0.5划分为1,否则为0,来决定样本分类的)

    Bagging要求基分类器相互独立,袋装法另一个必要条件是:基分类器的误差率要小于0.5,即准确率大于0.5,集成效果才好于基分类器。所以使用随机森林前,先要观察各基分类器是否都有至少50%的预测正确率。


    3、RandomForestRegressor重要参数:

    criterion:string, optional (default=”mse”)

    1、输入“mse”使用均方误差mean squared err(MSE),父节点和子节点之间的均方误差的差额将被用来作为特征选择的标准,这种方法通过使用叶子节点的均值来最小化L2损失。

    2、输入“friedman_mse”使用费尔德曼均方误差,这种指标使用费尔德曼针对潜在分枝中的问题改进后的均方误差。

    3、输入“mae”使用绝对平均误差MAE(mean absolute error),这种指标使用叶节点的中值来最小化L1损失。

    MSE=\frac{1}{N} \sum_{i=1}^N(f_{i}-y_{i}  ) ^2

    其中N是样本数量,i是每一个数据样本,fi是模型回归出的数值,yi是样本点i实际的数值标签。因此MSE的本质是回归值与真实值的差异。在回归树中,MSE不仅是最优的分枝指标,也是最常用的衡量回归树回归质量的指标。

    回归树接口:

    score:返回的是R平方,并不是MSE。R平方定义如下:

    R^2=1-\frac{u}{v}  u= \sum_{i=1}^N(f_{i}-y_{i}  ) ^2v =\sum_{i=1}^N(y_{i}-\hat{y}  )^2

    其中u是残差平方和(MSE*N),v是总平方和,N是样本数量,i是每个样本,fi是模型回归出的值,yi是样本点i的实际数值标签。y帽是真实数值标签的平均数。

    R2可以为正也可以为负,当残差平方和远远大于模型总平方和时,模型非常糟糕,R2为负;但MSE永远为正。但Sklearn当中使用均方误差作为评判标准时,却是计算“负均方误差”(neg_mean_squared_error)以负数表示。其实就是MSE前加了个负号。


    4、附录

    参数列表

    part_1 part_2 part_3

    属性列表

    properties

    接口列表

    interface

    5、总结:本文详细介绍了集成学习中Bagging的典型代表随机森林的工作原理,同时对sklearn中RandomForestClassifier和RandomForestRegressor核心参数、属性、接口进行了介绍。

    相关文章

      网友评论

        本文标题:随机森林原理与Sklearn参数详解

        本文链接:https://www.haomeiwen.com/subject/ewtbwhtx.html