zoukankan      html  css  js  c++  java
  • 提升算法(2)

    提升树:

    提升树是以分类树或回归树为基本分类器的提升方法。提升方法实际采用加法模型(即基函数的线性组合)与前向分布算法,以决策树为基函数的提升方法称为提升树,对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树,其根据特征x<v与x>v将根结点直接连接两个叶结点,以作为决策树桩。提升树模型可以表示为决策树的加法模型:

    其中, 表示决策树,为决策树的参数;M为树的个数

     提升树算法采用前向分布算法,首先确定初始提升树f0(x)=0,第m步的模型是:

    其中,fm-1(x)为当前模型,通过使经验风险极小化确定下一棵决策树的参数

    (arg为返回后式取最小值时的取值)

    由于树的线性组合可以很好的拟合训练数据,即使数据中的输入域输出之间的关系很复杂也是如此,所以提升树是一个高功能的学习算法。

    针对不同问题的提升树学习算法主要区别在于使用的损失函数不同,包括使用平方误差损失函数的回归问题、指数损失函数的分类问题、及一般损失函数的一般决策问题。下面叙述关于回归问题的提升树。

    已知一个训练数据集,为输入空间,y为输出空间,如果将输入空间划分为J个互不相交的区域,并在每个区域上确定输出的常量cj,那么树可以表示为:

    其中,参数表示树的区域划分和各区域上的常数,J是回归树的复杂度即叶结点个数。

    回归问题提升树使用以下向前分步算法:(该方法就是以最小化损失函数为前提得到新增决策树的参数,并将该决策树加入原多个决策树构成新的多决策树)

    在向前分布算法的第m步,给定当前模型,需求解:

    得到,即第m棵树的参数。

    当采用平方误差损失函数时,

    其损失变成:

    这里是当前模型拟合数据的残差,所以对回归问题的提升树算法来说,只需要简单的拟合当前模型的残差。

    回归问题的提升树算法:

     输入:训练数据集

     输出:提升树 fM(x)

    (1) 初始化f0(x)=0

    (2) 对m=1,2,...,M

    1) 按照计算残差得: 

       

    2) 拟合残差rmi学习一个回归树,得到

    3) 更新

    (3) 得到回归问题提升树

     此处给出一个书上的例子用于理解上述的回归问题的提升算法:

    已知如下表所示的训练数据,x的取值范围为区间[0.5,10.5],y的取值范围为区间[5.0,10.0],学习这个回归问题的提升树模型,考虑只用树桩作为基函数

    按照如上算法,第1步求f1(x)即回归树T1(x)

    首先通过以下优化问题:

    求解训练数据的切分点s:

    容易求得在R1,R2内部使平方损失误差达到最小值的c1,c2为:

    这里N1,N2是R1,R2的样本点数。

    求训练数据的切分点,根据所给数据,考虑如下切分点:

    1.5,   2.5,   3.5,   4.5,   5.5,   6.5   7.5   8.5  9.5

    对各切分点,不难求出相应的R1,R2,c1,c2

    如当s取1.5时候,R1={1}, R2={2,3,...,10},  c1=5.56 ,  c2=7.50  

    现将s及m(s)的计算结果列表如下所示:

    由上表可知。当s=6.5时,m(s)达到最小值,此时R1={1,2,...,6}, R2={7,8,9,10},  c1=6.24,  c2=8.91,  所以回归树T1(x)为:

    用f1(x)拟合训练数据的残差如下表所示,表中r2i=yi-f1(xi), i=1,2,...,10

    用f1(x)拟合训练数据的平方损失误差:

    第2步求T2(x),方法同上,只是拟合的数据是上面的残差表,并将其与上面得到的数值区间进行汇总得到:

    用f2(x)拟合训练数据的平方损失误差是:

    同上,可以依此类推:

    由f6(x)拟合训练数据的平方损失误差是:

    若以上求出的误差满足使用过程需要的误差阈值,那么该f6(x)为所求提升树。

  • 相关阅读:
    ansible的使用
    Selenium2+python自动化68-html报告乱码问题【转载】
    Selenium2+python自动化67-用例失败自动截图【转载】
    Selenium2+python自动化66-装饰器之运行失败截图【转载】
    Selenium2+python自动化65-js定位几种方法总结【转载】
    selenium+python自动化82-只截某个元素的图【转载】
    selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python2&3)【转载】
    selenium+python自动化79-文件下载(SendKeys)【转载】
    selenium+python自动化77-autoit文件上传【转载】
    Pycharm上python和unittest两种姿势傻傻分不清楚【转载】
  • 原文地址:https://www.cnblogs.com/xiaochouk/p/8098657.html
Copyright © 2011-2022 走看看