统计学习笔记-提升方法

简介:
    在分类问题中,他通过改变训练数据的权重,学习多个分类器,并将这些分类器线性组合,提高分类的性能。
    提升方法AdaBoost算法
Adaboost提升方法的基本思路:
    1、提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。
这样一来,那些没有得到正确分类的数据,由于其权值加大而受到后一轮的弱分类器更大的关注。
    2、AdaBoost采取加权多数表决的方法,加大分类误差率小的弱分类器的权值,使其在表决中起较大作用,减小分类误差率大的弱分类器,使其在表决中起较小作用。

Adaboost算法:
    输入:训练数据集T,弱学习算法;
    输出:最终分类器G(x)。
    1、初始化训练数据的权值分布,让各个训练数据的初始化权值相等:
            
    2、对m=1,2,···,M
        a、使用具有权值分布 D m的训练数据集学习,得到基本分类器:
                                        
        b、计算G m在训练数据集上的分类误差率(从下面公式可知分类器G m的误差率是误分类样本的权值之和,误样本的权值会影响分类器的误差率,所以会让下一个分类器更重视权值大的样本)
                
        c、计算 G m的系数,它表示 G m在最终分类器中的重要程度,还会影响到所有的 w m+1取值,由式子可知 e <= 1/2时, a m>=0,并且 a m随着的 e m减小而增大
                                        
这里的对数是自然对数。
        d、更新训练数据集的权值分布(所有权值的总和必须为1)
                        
Zm 是规范化因子:
                            
3、构建基本分类器的线性组合
                                
得到最终分类器(f(x)的符号决定实例x的类别,f(x)的绝对值表示分类的确信度.)
                        


AdaBoost算法的训练误差分析
AdaBoost能在学习过程中不断减少训练误差,AdaBoost最终分类器的训练误差界为
                            
证明如下:
    (等待补充)

    这一定理说明,可以在每一轮选取适当的 G m使得 Z m最小(故一般都是选误差率最小的 G m),从而使得训练误差下降最快.
     
    二类分类问题AdaBoost的训练误差界:
                    
这里, γm = 1/2 - em
证明如下:
(有时间在补充)

    从二类分类训练误差界,引发的推论:如果存在 γ >0,对所有 γ m >= γ,则
                    
    推论表明在这一条件下,AdaBoost的训练误差是以指数速率下降的,但是AdaBoost算法与一些早期的提升方法不同,它不需要知道下界 γ,即AdaBoost具有适应性,它能适应弱分类器各自的训练误差率,这也是它的名称Ada(Adaptive 适应的提升)的由来。

        AdaBoost算法的另一种解释
    AdaBoost算法还有另一种解释,即认为AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二类分类学习方法。
    
前向分步算法:
    加法模型:
                                        
其中,b(x; γ m)为基函数, γ m为基函数的参数, β m 为为基函数的系数
    在给定训练数据及损失函数L(y,f(x))的条件下,学习加法模型f(x)成为经验风险极小化即损失函数极小化问题:    
                                        
    此式子里面变量太多,通常来说这是一个很复杂的优化问题,但是我们可以换种优化思路,让一次优化组合式子的所有参数变成每次优化一个式子参数,然后优化多个式子;这就是前向分步算法:如果能够从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数式,那么就可以简化优化的复杂度,具体地,每步只需要优化如下损失函数:
                                            

    具体算法步骤如下:
    输入:训练数据集T,基函数集{b(x; γ )},损失函数L(y,f(x));
    输出:加法模型f(x)
    1、初始化f0(x)=0
    2、对m=1,2,···,M
        a、极小化损失函数
                    
        得到参数βm, γm (注意,这个地方容易误以为当m = M的时候和直接优化加法模型一样复杂,其实这个式子每次只优化两个参数,具体的,当优化m的时候,fm-1(x)的βm-1γm-1已经是确定的常量了,不需要再优化βm-1γm-1)
        b、更新
                        f m (x) = f m-1 (x) + β m b(x; γ m )
    3、得到加法模型
                                

    这样,前向分步算法将同时求解从m=1到M的所有参数 β mγ m的优化问题简化为逐次求解各个 β mγ m的优化问题。
    
前向分步算法与AdaBoost
    AdaBoost算法是前向分步加法算法的特例,这时,模型是由基本分类器组成的加法模型,损失函数是指数函数。

提升树
    提升树是以分类树和回归树为基本分类器的提升方法。提升树被认为是统计学习中性能最好的方法之一。

提升树模型:
    提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。提升树模型可以表示为决策树的加法模型:
                                            
    
提升树算法:
     输入:训练数据集T,
    输出:提升树 f M (x)
    1、初始化f0(x) = 0;
    2、对m=1,2,···,M
        a、计算残差
                    
        b、拟合残差学习一个回归树,得到 (之所以用残差学习,是因为这样使决策树的加法模型每加一个决策树模型是对之前加法模型值的修正,同样之所以 r mi = y i - f m-1 ( x i )也是让下一个决策树对之前加法模型修正)
        c、更新 f m = f m-1  +
    3、得到回归问题提升树
                                            


梯度提升:
        提升树利用加法模型与前向分步算法实现学习的优化过程,当损失函数是平方损失和指数损失函数时,每一步优化是很简单的。但对一般损失函数而言,往往每一步优化并不那么容易。针对这一问题,可以使用梯度提升算法,利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值
                                                    
作为回归问题提升树算法中的残差的近似值,拟合一个回归树。

    算法:
        1、初始化(找一个让损失函数最小化的初始值)
                                                
        2、对m=1,2,···,M
            a、对i=1,2,···,N,计算(对平方损失函数,它就是通常所说的残差,对一般损失函数,它就是残差的近似值)
                                            
            b、对 r mi 拟合一个回归树,得到第m棵树的叶结点区域Rmj,j=1,2,···,J
            c、对j=1,2,···,J,计算(注意这个地方的c并不是第m棵树对应xi的类,因为是针对残差 r mi进行拟合的,所以这个地方得到的c是对之前加法模型的修正,所以 f m-1(xi) + c就相当于 f m(xi))
                                    
            d、更新 f m(x)= f m-1(x) + 
        3、得到回归树
                                    
                                



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值