首先了解一下提升方法的思路:”将多个弱学习模型组合成一个强学习模型,这个强学习模型可以达到比任何一个弱学习模型都要好的预测效果”,那么应该怎样求这个强学习模型,直接就能求出来吗?况且到目前为止连弱学习模型都还没有,那么就必须弄明白怎样来学习弱学习模型,之后又该怎样来组合它们呢?显然第一个问题非常困难,基本上是不可能求解的,而第二个问题前向分布算法给出了答案。
前向分布算法
前向分布算法考虑的问题及解决方案
前向分布算法考虑这样一个问题:”给定一个训练数据集和损失函数,并且弱模型通过权重之和的方式组合成强模型,那么我们怎么来求这些弱模型以及最终的强模型?“
我们用数学化的语言描述一下上面的问题:
给定训练数据集T={(x1, y1),(x2, y2),…,(xN, yN)}和损失函数L(y, f(x)),f(x)是最终的强学习模型,因为弱模型通过权重之和的方式组合成强模型,所以f(x)可以如下表示:
其中b(x;γm)是弱学习模型,βm是弱学习模型的权重系数,γm是弱学习模型的参数。
所以前向分布算法考虑的问题是,如何求出所有的βm和γm,即优化如下目标表达式:
显然一次性求出所有的βm和γm基本不可能,所以前向分布算法给出的解决办法是:“利用贪心算法,每一步只学习一个弱模型及其系数,使得当前弱模型和之前所有的弱模型组合后目标表达式取得最优值,最终就可以使得所有弱模型组合后目标表达式取得最优值”。
前向分布算法:
输入:训练数据集T={(x1, y1),(x2, y2),…,(xN, yN)};损失函数L(y, f(x))
输出:强学习模型f(x)
(1)初始化f0(x)=0
(2)对m=1, 2 ,…, M
- (a)极小化损失函数