美文网首页
(一):随机森林算法梳理

(一):随机森林算法梳理

作者: 两个橘子 | 来源:发表于2019-04-03 21:32 被阅读0次

    1. 集成学习概念

    集成学习的是先通过一定的规则生成多个学习器,再采用某种集成策略进行组合,最后综合判断输出最终结果。一般而言,通常所说的集成学习中的多个学习器都是同质的"弱学习器"。基于该弱学习器,通过样本集扰动、输入特征扰动、输出表示扰动、算法参数扰动等方式生成多个学习器,进行集成后获得一个精度较好的"强学习器"。

    2.个体学习器概念

    个体学习器通常由一个现有的学习算法从训练数据产生,是为了集成学习而产生的个体,通常有以下几种:

    • 只包含同种类型的个体学习器,这样的集成是“同质”的(homogeneous)。同质集成中的个体学习器亦称为”基学习器“(base learning)。
    • 集成也可包含不同类型的个体学习器,这样集成是”异质“的(heterogeneous)。相应的个体学习器,常称为”组件学习器“(component learning)或直接称为个体学习器。

    3.Boosting & Bagging

    根据个体学习器的生成方式,目前集成学习的方法大致可分为两大类:

    • 个体学习器间存在强依赖关系、必须串行生成的序列化方法,代表是Boosting;
    • 个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表是Baggig和“随机森林”(Random Forest);

    3.1 Boosting

    什么是 Boosting 算法呢?
        Boosting 算法是集成算法中的一种,同时也是一类算法的总称。这类算法先从初始训练集训练出一个弱学习器,然后根据弱学习器的表现对训练样本分布进行调整,不断训练出多个弱学习器,最后将它们进行加权组合成一个强分类器,为什么要这么做呢?因为弱学习器好训练,强学习器不好得。因此要打造一个好的强学习器,最好的方式就是训练多个弱学习器,然后让这些弱学习器组合起来,这样往往可以得到很好的效果。这就是 Boosting 算法的原理。
        Boosting 最著名的算法是 AdaBoost算法。

    3.2 Bagging

    Bagging是并行式集成学习方法的代表,是一种基于自助采样法(bootstrap sampling)发展而来的算法。
        假定有m个训练集,我们采用自助采样法,每次随机抽取一个放入采样集中,然后再把样本放回训练集,一共抽取m次,获得一个用于训练的采样集(里面有m个样本)。根据需要我们一共抽取T个采样集,学习出T个基学习器。
    在进行预测时,对于分类任务采用简单投票法,回归任务采用简单平均法。

    总结:
        Boosting 的含义是提升,它的作用是每一次训练的时候都对上一次的训练进行改进提升,在训练的过程中这 K 个“专家”之间是有依赖性的,当引入第 K 个“专家”(第 K 个分类器)的时候,实际上是对前 K-1 个专家的优化。而 Bagging 在做投票选举的时候可以并行计算,也就是 K 个“专家”在做判断的时候是相互独立的,不存在依赖性。

    4结合策略(平均法,投票法,学习法)

    平均法:简单平均、加权平均
    适用范围:

    • 规模大的集成,学习的权重较多,加权平均法易导致过拟合
    • 个体学习器性能相差较大时宜使用加权平均法,相近用简单平均法。

    投票法:

    • 绝对多数投票法:某标记超过半数,也就是我们常说的要票过半数,否则就当会拒绝预测;
    • 相对多数投票法:预测为得票最多的标记,若同时有多个标记的票最高,则从中随机选取一个,也就是所谓的“少数服从多数”。
    • 加权投票法:提供了预测结果,与加权平均法类似。

    学习法:
        对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。
        在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。

    5随机森林思想

    随机森林的英文是 Random Forest,英文简写是 RF。它实际上是一个包含多个决策树的分类器,每一个子分类器都是一棵 CART 分类回归树。所以随机森林既可以做分类,又可以做回归。当它做分类的时候,输出结果是每个子分类器的分类结果中最多的那个。你可以理解是每个分类器都做投票,取投票最多的那个结果。当它做回归的时候,输出结果是每棵 CART 树的回归结果的平均值。

    6随机森林的推广

    6.1extra trees

    extra trees是RF的一个变种, 原理几乎和RF一模一样,仅有区别有:

    1) 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。

    2) 在选定了划分特征后,RF的决策树会基于信息增益,基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。
        从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是bias相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好

    6.2 Totally Random Trees Embedding

    Totally Random Trees Embedding(以下简称 TRTE)是一种非监督学习的数据转化方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运用了核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法。
        TRTE在数据转化的过程也使用了类似于RF的方法,建立T个决策树来拟合数据。当决策树建立完毕以后,数据集里的每个数据在T个决策树中叶子节点的位置也定下来了。比如我们有3颗决策树,每个决策树有5个叶子节点,某个数据特征划分到第一个决策树的第2个叶子节点,第二个决策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0, 0,0,1,0,0, 0,0,0,0,1), 有15维的高维特征。这里特征维度之间加上空格是为了强调三颗决策树各自的子编码。
        映射到高维特征后,可以继续使用监督学习的各种分类回归算法了。

    6.3 Isolation Forest

    Isolation Forest(以下简称IForest)是一种异常点检测的方法。它也使用了类似于RF的方法来检测异常点。
        对于在T个决策树的样本集,IForest也会对训练集进行随机采样,但是采样个数不需要和RF一样,对于RF,需要采样到采样集样本个数等于训练集个数。但是IForest不需要采样这么多,一般来说,采样个数要远远小于训练集个数?为什么呢?因为我们的目的是异常点检测,只需要部分的样本我们一般就可以将异常点区别出来了。
        对于每一个决策树的建立, IForest采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。这点也和RF不同。
        另外,IForest一般会选择一个比较小的最大决策树深度max_depth,原因同样本采集,用少量的异常点检测一般不需要这么大规模的决策树。

    对于异常点的判断,则是将测试样本点x拟合到T颗决策树。计算在每颗决策树上该样本的叶子节点的深度ht(x)。,从而可以计算出平均高度h(x)。此时我们用下面的公式计算样本点x的异常概率:
    s(x,m)=2−h(x)c(m)
        其中,m为样本个数。c(m)的表达式为:
    c(m)=2ln(m−1)+ξ−2m−1m,ξ为欧拉常数
        s(x,m)的取值范围是[0,1],取值越接近于1,则是异常点的概率也越大。

    7.优缺点

    随机森林的优缺点

    优点:

    1)随机森林算法能解决分类与回归两种类型的问题,表现良好,由于是集成学习,采用了随机采样,训练出的模型的方差和偏差都比较小,泛化性能优越;
    2)随机森林对于高维数据集的处理能力很好,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。此外,该模型能够输出特征的重要性程度,这是一个非常实用的功能。

    1. 可以应对缺失数据;
      4)当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法;
    2. 高度并行化,易于分布式实现,对于大数据时代的大样本训练速度有优势。
    3. 由于是树模型 ,不需要归一化即可之间使用
      7)相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。

    缺点:

    a)随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。
    b)对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。
    c) 忽略属性之间的相关性

    8.sklearn参数

    在 sklearn 中,我们使用 RandomForestClassifier() 构造随机森林模型,函数里有一些常用的构造参数:


    image.png

    当我们创建好之后,就可以使用 fit 函数拟合,使用 predict函数预测

    9. 应用场景

    数据维度相对低(几十维,在初学者的我来说,感觉不低了。。),同时对准确性有较高要求时。
    因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候都可以先试一下随机森林。

    参考资料:

    1. EddyLiu2017 的《机器学习》笔记-集成学习(8)https://www.jianshu.com/p/2424fa91534b
    2. loveitlovelife 的 集成学习三结合策略及(平均、投票、stacking)与多样性https://blog.csdn.net/loveitlovelife/article/details/79398745
    3. 刘建平Pinard 的 集成学习原理小结 https://www.cnblogs.com/pinard/p/6131423.html 和 Bagging与随机森林算法原理小结
      https://www.cnblogs.com/pinard/p/6156009.html
    4. KongQingQing29 的 随机森林,GBDT,XGBoost的对比https://blog.csdn.net/yingfengfeixiang/article/details/80210145

    相关文章

      网友评论

          本文标题:(一):随机森林算法梳理

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