机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

一,算法介绍

算法流程转自(李航(统计学方法)):

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

             机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

二,实例

下面我们举一个实例,数据也采用(李航《统计学方法》):

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

我们假定使用的损失函数为均方差损失函数:

                                                         机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

(1)初始化

根据公式:

                                                            机器学习-集成学习(Boosting算法-梯度提升树(GBDT))(1)

我们要求得其最小值,需要对上公式进行求导,当导数为0时,获得最小值:

                                                      机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

                                                       机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

根据公式(1)计算得到f0(x)=7.307。

(2)构建树

利用公式:

                                                        机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

得到:

                        机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

残差表如下:

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

我们考虑切分点如下:

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

得到如下数据:

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

当S=6.5时为最佳分割点,得到两个节点x={1,2,3,4,5,6}和x={7,8,9,10},然后我们根据

                                                    机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

进行计算得到:

                                                  机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

更新回归树为:

                                                     机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

然后,再重复上述步骤,计算机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

得到如下数据:

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

得到最佳分割点为3.5

 

 

 

 

 

                                                       机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

 

如下表所示:一组数据,特征为年龄、体重,身高为标签值。共有5条数据,前四条为训练样本,最后一条为要预测的样本。

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

我们假定使用的损失函数为均方差损失函数:

                                                    机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

第一步,初始化,对损失函数求导获得极小值:

                                         机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

得到机器学习-集成学习(Boosting算法-梯度提升树(GBDT))=y,所以初始化时,机器学习-集成学习(Boosting算法-梯度提升树(GBDT))取值为所有训练样本标签值的均值,为1.475。

得到:

                                            机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

第二步,进行迭代

利用公式:

                                               机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

此时将残差作为样本的真实值训练f1(x),即下表数据

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

接着,寻找回归树的最佳划分节点,遍历每个特征的每个可能取值。从年龄特征的5开始,到体重特征的70结束,分别计算方差,找到使方差最小的那个划分节点即为最佳划分节点。

以年级7为例,方差= (1.1-1.1)^2/1+[(1.3-1.6)^2+(1.7-1.6)^2+(1.8-1.6)^2]/3=0.46666

机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

以上划分点是的总方差最小为0.0125有两个划分点:年龄21和体重60,所以随机选一个作为划分点,这里我们选年龄21。 
此时还需要做一件事情,给这两个叶子节点分别赋一个参数,来拟合残差。

                                                                   机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

这里其实和上面初始化学习器是一个道理,平方损失,求导,令导数等于零,化简之后得到每个叶子节点的参数ΥΥ,其实就是标签值的均值。
根据上述划分节点:
样本1,2为左叶子节点,(x1,x2∈R11),所以机器学习-集成学习(Boosting算法-梯度提升树(GBDT))11=(−0.375−0.175)/2=−0.275。
样本3,4为左叶子节点,(x3,x4∈R11),所以机器学习-集成学习(Boosting算法-梯度提升树(GBDT))21=(0.225+0.325)/2=0.275。
此时可更新强学习器

                                                        机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

继续迭代,迭代轮数m=2,3,4,5,…,M: 循环迭代M次,M是人为控制的参数,迭代结束生成M棵树

第四步,得到最后的强学习器: 
  为了方别展示和理解,我们假设M=1,根据上述结果得到强学习器:

                                   机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

第五步,预测样本5: 
  样本5在根节点中(即初始学习器)被预测为1.475,样本5的年龄为25,大于划分节点21岁,所以被分到了右边的叶子节点,同时被预测为0.275。此时便得到样本5的最总预测值为1.75。

 

三,常用损失函数

对于分类算法,其损失函数一般有对数损失函数和指数损失函数两种:

a) 如果是指数损失函数,则损失函数表达式为:

                                                  L(y, f(x)) = exp(-yf(x))

b)如果是对数损失函数,分为二元分类和多元分类两种:

二分类

                                                  L(y, f(x)) = log(1+ exp(-yf(x)))

多分类

                                                  机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

其中

                                             机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

对于回归算法,常用损失函数有如下4种:

a)均方差,这个是最常见的回归损失函数:

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

b)绝对损失,这个损失函数也很常见:

                                               L(y, f(x)) =|y-f(x)|

对应的负梯度误差为:

                                                 机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

c)Huber损失,它是均方差和绝对损失的折衷产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。损失函数如下:

                                                机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

对应的负梯度误差为:

                                                机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

d) 分位数损失。它对应的是分位数回归的损失函数,表达式为:

                                                机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

其中θ为分位数,需要我们在回归前指定。对应的负梯度误差为:

                                                  机器学习-集成学习(Boosting算法-梯度提升树(GBDT))

对于Huber损失和分位数损失,主要用于健壮回归,也就是减少异常点对损失函数的影响。

转载的连接分别为https://blog.****.net/zpalyq110/article/details/79527653

https://www.cnblogs.com/pinard/p/6140514.html