对于前一篇的AdaBoost算法我们其实可以这样理解,模型是加法模型、损失函数为指数函数、学习算法为前向分步算法时的二类分类学习方法。其实加法模型就是基分类器的线性组合啦,那么前向分步算法是什么呢?
【加法模型】
我们将 f(x)=∑m=1Mβmb(x;γm) f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) 作为加法模型,其中 b(x;γm) b ( x ; γ m ) 为基函数, γm γ m 为基函数的参数, βm β m 为基函数的系数, βm β m 表示着对应的基函数在加法模型 f(x) f ( x ) 中的重要性。
【前向分步算法】
基本思想:
一般来说: 一 般 来 说 :
在给定训练数据和损失函数 L(y,f(x)) L ( y , f ( x ) ) 的条件下,学习加法模型 f(x) f ( x ) 成为经验风险极小化(即损失函数极小化问题)
minβm,γm∑i=1NL(yi,∑m=1Mβmb(xi;γm)) min β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) )
这里是要最小化每一步生成的基函数的损失函数之和 这 里 是 要 最 小 化 每 一 步 生 成 的 基 函 数 的 损 失 函 数 之 和
但是!这通常是一个很复杂的问题,因此提出前向分步算法的思想: 但 是 ! 这 通 常 是 一 个 很 复 杂 的 问 题 , 因 此 提 出 前 向 分 步 算 法 的 思 想 :
前向分步算法求解这一优化问题的想法是:由于学习的是加法模型,如果能从前向后每一步只学习一个基函数及其系数,逐步逼近优化目标函数式,即 minβm,γm∑i=1NL(yi,∑m=1Mβmb(xi;γm)) min β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) ) ,那么就可以简化优化的复杂度。因此每步我们只需要优化 minβ,γ∑i=1NL(yi,βb(xi;γ)) min β , γ ∑ i = 1 N L ( y i , β b ( x i ; γ ) ) 即可。
也就是说我每次学习一个基函数(基分类器),我只针对这个基分类器进行优化, 也 就 是 说 我 每 次 学 习 一 个 基 函 数 ( 基 分 类 器 ) , 我 只 针 对 这 个 基 分 类 器 进 行 优 化 ,
使