zoukankan      html  css  js  c++  java
  • 随机森林学习笔记

    1.分类回归树CART

    随机森林是由多颗CART树组成的

    1、下面简单叙述下CART树及生成树的原理。

    CART(Classification and regression tree)是决策树的一种,主要由特征选择,树的生成和剪枝三部分组成。它主要用来处理分类和回归问题。

    (1)、回归树:使用平方误差最小准则 

    训练集为:D={(x1,y1), (x2,y2), …, (xn,yn)}。 

    输出Y为连续变量,将输入划分为M个区域,分别为R1,R2,…,RM,每个区域的输出值分别为:c1,c2,…,cm则回归树模型可表示为: 

    技术分享

    则平方误差为:

    技术分享 

    假如使用特征j的取值s来将输入空间划分为两个区域,分别为: 

    技术分享

     我们需要最小化损失函数,即:

    技术分享

      其中c1,c2分别为R1,R2区间内的输出平均值。(此处与统计学习课本上的公式有所不同,在课本中里面的c1,c2都需要取最小值,但是,在确定的区间中,当c1,c2取区间输出值的平均值时其平方会达到最小,为简单起见,故而在此直接使用区间的输出均值。)

      为了使平方误差最小,我们需要依次对每个特征的每个取值进行遍历,计算出当前每一个可能的切分点的误差,最后选择切分误差最小的点将输入空间切分为两个部分,然后递归上述步骤,直到切分结束。此方法切分的树称为最小二乘回归树。

    最小二乘回归树生成过程:

    1)依次遍历每个特征j,以及该特征的每个取值s,计算每个切分点(j,s)的损失函数,选择损失函数最小的切分点。 

    技术分享 

    2)使用上步得到的切分点将当前的输入空间划分为两个部分

    3)然后将被划分后的两个部分再次计算切分点,依次类推,直到不能继续划分。

    4)最后将输入空间划分为M个区域R1,R2,…,RM,生成的决策树为: 

    技术分享 

    其中cm为所在区域的输出值的平均。

      总结:此方法的复杂度较高,尤其在每次寻找切分点时,需要遍历当前所有特征的所有可能取值,假如总共有F个特征,每个特征有N个取值,生成的决策树有S个内部节点,则该算法的时间复杂度为:O(F*N*S) 

    (2)、分类树:使用基尼指数最小化准则

    基尼指数:假如总共有K类,样本属于第k类的概率为:pk,则该概率分布的基尼指数为:

    技术分享

    基尼指数越大,说明不确定性就越大。 

    对于二类分类:技术分享 

    使用特征A=a,将D划分为两部分,即D1(满足A=a的样本集合),D2(不满足A=a的样本集合)。则在特征A=a的条件下D的基尼指数为:

    技术分享 

    Gini(D):表示集合D的不确定性。

    Gini(A,D):表示经过A=a分割后的集合D的不确定性。

    CART生成算法:

    1)依次遍历每个特征A的可能取值a,对每一个切分点(A, a)计算其基尼指数。 

    2)选择基尼指数最小的切分点作为最优切分点。然后使用该切分点将当前数据集切分成两个子集。

    3)对上步切出的两个子集分别递归调用1)和2),直至满足停止条件。(算法停止的条件是样本个数小于预定阀值,或者样本集的基尼指数小于预定阀值或者没有更多特征)

    4)生成CART决策树。 

      分类树可以使用基尼指数作为分类标准,至于为什么使用该指标,我们可以从信息论的角度思考。同样采样这样的分类标准会导致生成树选择最优属性时会偏向类别比较多的属性,因此在实际使用的过程中应对数据集进行处理或者控制树的深度。虽然决策树算法可以通过剪枝(正则、验证集测试)或者早停止策略尽量避免过拟合,但性能上依旧不能令人满意。

    2.随机森林定义
    随机森林是一个树型分类器{h(x,k),k=1,…}的集合。其中元分类器h(x,k)是用CART算法构建的没有剪枝的分类回归树;x是输入向量;k是独立同分布的随机向量,决定了单颗树的生长过程;森林的输出采用简单多数投票法(针对分类)或单颗树输出结果的简单平均(针对回归)得到。
    转自:http://blog.csdn.net/a819825294/article/details/51177435
       http://www.bubuko.com/infodetail-1005171.html
  • 相关阅读:
    Redis学习笔记
    Sevrlet 工作原理解析-转
    Spring MVC基础学习
    JVMGC机制
    MyBatis基础学习笔记--摘录
    MyBatis基础学习笔记--自总结
    Spring基础复习
    java.lang.Class类
    浅谈linux静态库、动态库。
    关于字符编码的一点学习。
  • 原文地址:https://www.cnblogs.com/zhaochunhua/p/6834728.html
Copyright © 2011-2022 走看看