首页 > 科技 >

手把手机器学习实战系列: GBDT多分类

2019-02-25 03:14:01 网络整理 阅读:182 评论:0

背景介绍

在前面,我们看到了GBDT算法可以通过不断的建立回归树拟合残差进行处理回归问题,那么如何去处理分类问题呢?

由于在分类问题中,样本的输出不再是连续的值,而是是离散的类别,导致我们无法直接从输出类别去拟合类别输出的误差,为了解决这个问题,主要有两个方法,一个是用指数损失函数,此时GBDT退化为Adaboost算法。另一种方法是用类似于逻辑回归的对数似然损失函数的方法。也就是说,我们用的是类别的预测概率值和真实概率值的差来拟合损失。本文仅讨论用对数似然损失函数的GBDT分类。而对于对数似然损失函数,我们又有二元分类和多元分类的区别二分类:

对于二元GBDT,如果用类似于逻辑回归的对数似然损失函数,则损失函数为

首先明确一点,无论是回归问题还是分类问题,一直使用的是CART的回归树,不要认为我们使用GBDT进行分类就是使用的是CART的分类树,这是没有意义的,因为无论进行分类还是回归,gbdt在每轮的训练中都是在上一轮的训练中的残差的基础上进行的,残差的值是个连续的值,所以使用的是回归树

我们假设样本 X 总共有 K类。来了一个样本 x,,我们需要使用gbdt来判断 x 属于样本的哪一类

手把手机器学习实战系列: GBDT多分类

在回归问题中,在每一步训练中,都是使用一个回归树进行拟合残差,而对于多分类的问题来说,是针对样本 X 每个可能的类都训练一个分类回归树。

举例说明,目前样本有三类,也就是 K = 3。样本 x 属于 第二类。那么针对该样本 x 的分类结果,其实我们可以用一个 三维向量 [0,1,0] 来表示。0表示样本不属于该类,1表示样本属于该类。由于样本已经属于第二类了,所以第二类对应的向量维度为1,其他位置为0。

针对样本有 三类的情况,我们实质上是在每轮的训练的时候是同时训练三颗树。第一颗树针对样本x的第一类,输入为(x,0)第二颗树输入针对 样本x 的第二类,输入为(x,1)第三颗树针对样本x 的第三类,输入为(x,0)

在此处我们参照之前的生成树的程序 即可以就解出三颗树,以及三颗树对x 类别的预测值f1(x),f2(x),f3(x)那么在此类训练中,我们仿照多分类的逻辑回归 ,使用softmax 来产生概率,则属于类别 1 的概率

此时可以求出类别1对应的残差值: y11(x) = 0-p1(x)

同理可以求出类别2对应的残差值: y22(x) = 1-p2(x)

同理可以求出类别3对应的残差值: y33(x) = 0-p3(x)

然后开始第二轮训练:

针对第一类 输入为(x,y11(x)), 针对第二类输入为(x,y22(x)), 针对 第三类输入为 (x,y33(x)).继续训练出三颗树。一直迭代M轮。每轮构建 3颗树, 然后相当于建立了三个模型

手把手机器学习实战系列: GBDT多分类

当新来一个样本要进行预测时, 我们需要预测该样本的类别的时候,便可以有这三个式子产生三个值,f1(x),f2(x),f3(x)。样本属于 某个类别c的概率为

举例说明:

手把手机器学习实战系列: GBDT多分类

相关文章