条件概率 条件分布我们已经学习了一系列不同的模型用于解决分类(2)
基分类器是顺序训练的,每个基分类器使用数据集的一个加权形式进行训练,其中与每个数据点相关联的权系数依赖于前一个分类器的表现。特别地,被一个基分类器误分类的点在训练序列中的下一个分类器时会被赋予更高的权重。一旦所有的分类器都训练完毕,那么它们的预测就会通过加权投票的方法进行组合
使用李航的《统计机器学习》里的,非常经典,给人以启发
我们看到在每轮的迭代中,权重系数对于误分类的数据点会增大,对于正确分类的数据点不改变,因此后续的分类器就会更关注那些被前一个分类器错误分类的数据点。
这里的 x < v 或者 x > v 我们可以理解成是一个基分类器, 每个基分类器由一个输入变量的阈值组成,这个简单的基分类器本质上就是一种“决策树桩(decision stup)”,即一个具有单节点的决策树。
可以看到,Boosting中的每个基分类器仅仅使用一个与一个坐标轴垂直的线性决策面将空间划分为两个区域,这看起来是一个“不是太好的”分类器,很明显嘛,这样一个二分类器怎么可能取得好的效果呢?
但是Boosting通过集成了多个基分类器,不同的基分类器各自有不同的权重系数,通过最后的综合投票得到一个综合判断,Boosting中的一系列基分类器各自有不同的权重系数,系数的确定是由训练样本逐轮的迭代确定的。
这颇有深度神经网络神经元的思想。只是区别在于,深度神经网络中神经元的权重是随着每轮的训练迭代同时整体调整的,这也是深度神经网络的拟合能力相对更强的原因。
提升方法最早起源于统计学理论,得到了泛化误差的上界。然而,这些上界过于宽松,没有实际的价值。提升方法的实际表现要远优于上界给出的值。考虑下面定义的指数误差函数:
,其中是根据基分类器的线性组合定义的分类器,形式为:,是训练集目标值。我们的目标是关于权系数和基分类器最小化。
然而,我们不进行误差函数的全局最小化,而是假设基分类器以及它们的系数固定,因此我们只关于和进行最小化。分离出基分类器的贡献,我们可以将误差函数写成:
,其中,系数可以被看作常数,因为我们只针对和进行最优化。如果我们将被正确分类的数据点的集合记作,并且将剩余的误分类的点记作,那么我们可以将误差函数写成如下形式:
当我们关于进行最小化时,我么看到第二项是常数,不影响最小值的未知。
在通过求导数得到极值,找到和之后,数据点的权值使用下面的公式进行更新:
使用下面的事实:
我们看到在下一次迭代中,权值的更新为:
由于与 n 无关,因此我们看到它对于所有数据点的权值都贡献一个相同的因子(即分对的样本在本轮的调整幅度是一致的;分错的样本的调整幅度在本轮的调整是一致的),从而在公式上可以丢弃,化简后得到:。
最后,一旦所有的基分类器被训练完毕,新数据点通过所有基分类器的线性组合进行分类,由于因子 1/2 不影响符号,因此可以省略,得到公式:
可以看到,在每轮迭代中参与调整的最核心的因素是:本轮基分类器的分类错误的数据点的指数误差综合,对Boosting方法来说,每轮分对的数据点和分错的数据点可以理解为一个神经元(包含2个神经元的隐层的神经网络),每轮迭代都根据上一轮的误差,借助一个指数算式来得到一个负向反馈的权重调整
Boosting算法的最小化指数误差函数与我们之前学习的统计概率算法的误差函数有一些不同。为了更深刻地理解指数误差函数的本质,我们首先考虑期望误差:
如果我们关于所有可能的函数进行变分最小化,那么我们有:
它是log odds函数的一般,因此Boosting算法是在由基分类器的线性组合表示的函数空间中,寻找对log odds的最好的近似,对应于顺序最优化策略下的受限最小化。
只是在阴沟里不容易被发觉