树系列(四)boosting_tree

  • 模型

    采用加法模型和前向分步算法,以决策树为基函数的提升方法被称为提升树,由如下公式表示,

    f M ( x ) = m = 1 M T ( x ; θ M )

    T ( x ; θ M ) 表示决策树, θ M 表示决策树的参数,M为树的个数,

  • 回归核心思想

    上面公式采用前向分步算法的步骤如下,

    首先确定初始提升树 f 0 ( x ) = 0 , 第m步的模型是,

    f m ( x ) = f m 1 ( x ) + T ( x ; θ m )

    确定下一棵决策树的参数的方法如下,

    θ m ^ = a r g m i n θ m i = 1 N L ( y i , f m 1 ( x i ) + T ( x i ; θ m ) )

    通过找到合适的参数,从而得到合适的提升树模型,而采用何种损失函数便成为提升树学习算法的核心内容,

    对于回归问题的提升树,某棵树对于某个样本 x j 的预测值如下,J为这棵树的叶子节点的个数,具体如何理解,请见决策树的解释,

    T ( x ; θ ) = j = 1 J c j I ( x R j )

    每棵树构建好之后对于前向分步算法的应用如下,

    f 0 ( x ) = 0

    f m ( x ) = f m 1 ( x ) + T ( x ; θ m ) m = 1 , 2 , . . . , M

    f M ( x ) = m = 1 M T ( x ; θ m )

    第m步中,给定 f m 1 ( x ) ,需求解如下公式得到 θ m ^ ,
    θ m ^ = a r g m i n θ m i = 1 N L ( y i , f m 1 ( x i ) + T ( x i ; θ m ) )

    如果采用平方差损失函数,

    L ( y , f ( x ) ) = ( y f ( x ) ) 2

    其损失变为

    L ( y , f m 1 ( x ) + T ( x ; θ m ) )

    = [ y f m 1 ( x ) T ( x ; θ m ) ] 2

    = [ r T ( x ; θ m ) ] 2

    这里 r = y f m 1 ( x ) ,表示模型拟合的是数据的残差,


    输入:训练数据集 T = { ( x 1 , y 1 ) , . . . , ( x N , y N ) } , x i X R n , y i Y R ,

    输出:提升树 f M ( x )

    1. 初始化 f 0 ( x ) = 0
    2. 对于m=1,2,…,M
      1. 计算残差 r m i = y i f m 1 ( x i ) , i = 1 , 2 , . . . , N
      2. 拟合残差学习回归树,得到 T ( x ; θ m )
      3. 更新 f m ( x ) = f m 1 ( x ) + T ( x ; θ m )
    3. 得到提升树

    f M ( x ) = m = 1 M T ( x ; θ M )

  • 梯度提升

    上述算法求解的核心在于对于模型的损失函数是平方损失的,求解很简单,但是对于一般的损失函数来说,每一步的优化并不是很容易,因而把损失函数的负梯度值作为每个阶段回归的目标去拟合一棵回归树才是一个比较理想的选择,负梯度公式如下,

    r m i = [ L ( y , f ( x ) ) f ( x ) ] f ( x ) = f m 1 ( x )


    输入: 输入数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } x i X R n , y i Y R , 损失函数 L ( y , f ( x ) ) ,

    输出: 回归树 f ( x ) ^

    1. 初始化

    f 0 ( x ) = a r g m i n c i = 1 N L ( y i , c )

    1. 对于m=1,2,..,M,

      a.对于i=1,2,…,N,计算

      r m i = [ L ( y , f ( x ) ) f ( x ) ] f ( x ) = f m 1 ( x )

      使得

      r m i = [ L ( y , f ( x ) ) f ( x ) ] f ( x ) = f m 1 ( x )

使得

相关文章
相关标签/搜索