提升是一个机器学习技术,可以用于回归和分类问题,它每一步产生一个弱预测模型(决策树),并加权累加到总模型中;如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升。
梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的弱函数集合(基函数);提升算法通过迭代的选择一个负梯度方向上的基函数来逐渐逼近局部极小值。这种在函数域的梯度提升观点对机器学习的很多领域有深刻影响。
提升的理论意义:如果一个问题存在弱分类器,则可以通过提升的办法得到强分类器。
Adaboost算法是经典的提升算法,该算法是模型为加法模型,损失函数为指数函数,学习算法为前向分步算法时的学习方法。Adaboost的训练误差是以指数速率下降的,它具有自适应性,它能自适应弱分类器的训练误差率。另外, Adaboost算法是稳健的,具有robost,调参数没有这么麻烦。但是,Adaboost算法容易出现过拟合现象。
Adaboost算法的计算步骤如下:
(1).设训练数据集,初始化训练数据的权值分布
Adaboost:对于m=1,2,...M
(2).使用具有权值分布Dm的训练数据集学习,得到基本分类器
(3).计算Gm(x)在训练数据集上的分类误差率
(4)计算Gm(x)的系数
(5)更新训练数据集的权值分布
这里,Zm是规范化因子,确保为1 ,从而使得成为一个概率分布。
(6)构建基本分类器的线性组合
(7)得到最终分类器
注意:Adaboost不可能出现越分越差情况。如果分类器分错了某个样本,则,
因为,(其中误差率e一般是小于0.5,否则基本分类器就没有意义)。这就说明了对于分类分错的样本,权值提升,分类器会更加注重该样本,对于分对的样本,,样本权值减少了。
时间: 2024-10-07 21:07:22