0. 组合模型概述
我们已经学习了一系列不同的模型用于解决分类问题和回归问题。经常发现的一件事情是,我们可以通过某种方式将多个模型结合到一起的方法来提升性能,而不是独立地使用一个单独的模型。这个小节我们先来提纲挈领的讨论一下“组合模型”的思想方法,这种讨论可以给我们以启发,
(1)例如,我么可以训练 L 个不同的模型,然后使用每个模型给出的预测的平均值进行预测,这样的模型的组合有时被称为委员会(committee)。
(2)委员会方法的一个重要的变体,被称为提升方法(boosting),这种方法按顺序训练多个模型,其中 每一轮中用来训练一个特定模型的误差函数依赖于前一个模型的表现(也即每轮的调整策略由上一轮模型的表现决定)。与单一模型相比,这个模型可以对性能产生显著的提升。
(3)与对一组模型的预测求平均的方法不同,另一种形式的模型组合是选择一个模型进行预测,其中模型的选择是输入变量的一个函数(也即有输入变量决定选择什么模型)。因此不同的模型用于对输入空间的不同的区域(特征维度切面)进行预测。这种方法的一种广泛使用的框架被称为决策树(decision tree),其中选择的过程可以被描述为一个二值选择的序列,对应于对树结构的遍历。这种情况下,各个单独的模型通常被选得非常简单,整体的模型灵活性产生于与输入相关的选择过程。决策树既可以应用于分类问题也可以应用于回归问题。
决策树的一个局限性是对于输入空间的划分基于的是一种硬划分,对于输入变量的任意给定的值,只有一个模型用于做出预测。通过将一个概率框架用于模型组合,决策过程可以被软化,例如,如果我们有一组 K 个模型用于描述条件概率分布,其中是输入变量, 是目标变量,是模型的索引,那么我们可以进行一种概率形式的混合,形式为:,其中表示与输入相关的混合系数。这样的模型可以被看成混合概率模型,其中分量的概率密度以及混合系数都以输入变量为条件,被称为专家混合(mixture of experts)
1. 委员会
构建一个委员会的最简单的方法是对一组独立的模型的预测取平均,这样的方法非常符合概率统计的思想,它综合考虑了偏置和方差之间的折中,它将模型的误差分解为:
1. 偏置分量:产生于模型和真实的需要预测的函数之间的差异; 2. 方差分量:表示模型对于单独的数据点的敏感性;
当然,在实际的应用中,我们只有一个单独的数据集,因此我们必须寻找一种方法来表示委员会中不同模型之间的变化性。一种方法是使用自助(boostrap)数据集。
考虑一个回归问题,其中我们试图预测一个连续变量的值,并且假设我们生成了 M 个自助数据集然后使用每个数据集训练出了预测模型的一个独立的副本,其中。委员会预测为:
这个方法被称为自助聚集(boostrap aggregation)或者打包(bagging)
假设我们试图预测的真实的回归函数为,从而每个模型的输出可以写成真实值加上误差的形式,即:
这样,平方和误差函数的形式为:,其中表示关于输入变量的一个频率期望。于是,各个模型独立预测的平均误差为:
类似地,委员会方法的预测的期望误差为:
如果我们假设误差的均值为零,且不具有相关性,即:,那么我们有:
这个结果表明:
一个模型的平均误差可以仅仅通过对模型的M个版本求平均的方法减小M倍。这看起来是一个非常牛逼的事情,但不幸的是,它依赖于我们的关键假设,即由各个单独的模型产生的误差是不相关的,但是在实际应用中,各个模型之间的误差通常是“高度相关的”,因此整体的误差下降是通常很小的。
然后,可以证明,委员会误差的期望不会超过各个分量模型的期望误差,即Ecom <= Eav
为了得到更显著的提升,我们转向一种更加复杂的构建委员会的方法,被称为提升方法
2. 提升方法(boosting)
提升方法是一种很一种很强大的方法,它将多个“基”分类器进行组合,产生一种形式的委员会,委员会的表现会比任何一个基分类器的表现好得多。即使基分类器的表现仅比随机猜测的表现稍好,提升方法扔可以产生比较好的结果,这种基分类器有时被称为弱学习器(weak learner)。提升方法最初被用来解决分类问题,但是也可以推广到回归问题。
提升方法和委员会方法(例如bagging投票方法)的主要区别在于:
基分类器是顺序训练的,每个基分类器使用数据集的一个加权形式进行训练,其中与每个数据点相关联的权系数依赖于前一个分类器的表现。特别地,被一个基分类器误分类的点在训练序列中的下一个分类器时会被赋予更高的权重。一旦所有的分类器都训练完毕,那么它们的预测就会通过加权投票的方法进行组合
0x1:通过一个例子体会Boosting思想的强大之处
使用李航的《统计机器学习》里的例子,非常经典,给人以启发
我们看到在每轮的迭代中,权重系数对于误分类的数据点会增大,对于正确分类的数据点不改变,因此后续的分类器就会更关注那些被前一个分类器错误分类的数据点。
这里的 x < v 或者 x > v 我们可以理解成是一个基分类器, 每个基分类器由一个输入变量的阈值组成,这个简单的基分类器本质上就是一种“决策树桩(decision stup)”,即一个具有单节点的决策树。
可以看到,Boosting中的每个基分类器仅仅使用一个与一个坐标轴垂直的线性决策面将空间划分为两个区域,这看起来是一个“不是太好的”分类器,很明显嘛,这样一个二分类器怎么可能取得好的效果呢?
但是Boosting通过集成了多个基分类器,不同的基分类器各自有不同的权重系数,通过最后的综合投票得到一个综合判断,Boosting中的一系列基分类器各自有不同的权重系数,系数的确定是由训练样本逐轮的迭代确定的。
这颇有深度神经网络神经元的思想。只是区别在于,深度神经网络中神经元的权重是随着每轮的训练迭代同时整体调整的,这也是深度神经网络的拟合能力相对更强的原因。
0x2:最小化指数误差
提升方法最早起源于统计学理论,得到了泛化误差的上界。然而,这些上界过于宽松,没有实际的价值。提升方法的实际表现要远优于上界给出的值。考虑下面定义的指数误差函数:
,其中是根据基分类器的线性组合定义的分类器,形式为:,是训练集目标值。我们的目标是关于权系数和基分类器最小化。
然而,我们不进行误差函数的全局最小化,而是假设基分类器以及它们的系数固定,因此我们只关于和进行最小化。分离出基分类器的贡献,我们可以将误差函数写成:
,其中,系数可以被看作常数,因为我们只针对和进行最优化。如果我们将被正确分类的数据点的集合记作,并且将剩余的误分类的点记作,那么我们可以将误差函数写成如下形式:
当我们关于进行最小化时,我么看到第二项是常数,不影响最小值的未知。
在通过求导数得到极值,找到和之后,数据点的权值使用下面的公式进行更新:
使用下面的事实:
我们看到在下一次迭代中,权值的更新为:
由于与 n 无关,因此我们看到它对于所有数据点的权值都贡献一个相同的因子(即分对的样本在本轮的调整幅度是一致的;分错的样本的调整幅度在本轮的调整是一致的),从而在公式上可以丢弃,化简后得到:。
最后,一旦所有的基分类器被训练完毕,新数据点通过所有基分类器的线性组合进行分类,由于因子 1/2 不影响符号,因此可以省略,得到公式:
可以看到,在每轮迭代中参与调整的最核心的因素是:本轮基分类器的分类错误的数据点的指数误差综合,对Boosting方法来说,每轮分对的数据点和分错的数据点可以理解为一个神经元(包含2个神经元的隐层的神经网络),每轮迭代都根据上一轮的误差,借助一个指数算式来得到一个负向反馈的权重调整
0x3:提升方法的误差函数
Boosting算法的最小化指数误差函数与我们之前学习的统计概率算法的误差函数有一些不同。为了更深刻地理解指数误差函数的本质,我们首先考虑期望误差:
如果我们关于所有可能的函数进行变分最小化,那么我们有:
它是log odds函数的一般,因此Boosting算法是在由基分类器的线性组合表示的函数空间中,寻找对log odds的最好的近似,对应于顺序最优化策略下的受限最小化。
下图用不同颜色的线对指数误差、缩放的交叉熵误差、支持向量机使用的铰链误差函数、无分类误差函数进行横向对比:
我们可以看到:
1. 交叉熵误差函数和指数误差函数,都可以看成对理想误分类误差函数的连续近似。 2. 指数误差的一个优点在于它的顺序最小化会得到简单的adaboost方法。然而,一个缺点是,与交叉熵函数相比,它对负的 t * y(x)的惩罚是指数增长了,不如交叉熵那么线性。因此指数误差函数对于异常点和误分类点的数据点并不鲁棒。 3. 和交叉熵误差相比,指数误差函数无法表示为任何具有良好定义的概率模型的似然函数。 4. 此外,指数误差无法推广到具有 K > 2个类别的分类问题,而交叉熵这种概率模型可以很容易推广到多分类形式。
3. 基于树的模型
有许多简单但广泛使用的模型,它们将输入空间划分为超立方体区域,超立方体的边与坐标轴对齐,然后为每个区域分配一个简单的模型(例如一个常数阈值二分类器)。这些模型可以被看成一种模型组合方法,其中只有一个模型对于输入空间中任意给定点的预测起作用(输入数据点沿着二叉树直到树叶只能选择一条线路,到达唯一的一个叶子结点)。给定一个新的输入 x,选择一个具体的模型的过程可以由一个顺序决策的过程描述, 这个过程对应于一个二叉树(每个节点划分为两个分支的树)的遍历。
0x1:一个具体的树模型的例子 - 分类与回归树
这里,我们关注一个特定的基于树的框架,被称为分类与回归树(classification and regression tree)。
1. 模型结构
下图给出了对输入空间进行递归二分的例子,以及对应的树结构。
在这个例子中,第一步根据或者,将输入空间划分为两个区域,其中是一个模型参数。
这创建了两个子区域,每个区域之后可以独立地进行划分,不断递归下去。
对于任意新的输入 x,我们确定它所属区域的方法是:从树顶端的根节点开始,根据每个结点的决策准则(基分类器),沿着路径向下走到具体的叶结点。
在每个区域内,有一个单独的模型(本质上就是基分类器)预测目标变量的值。例如
1. 在回归问题中,我们简单地在每个区域内预测一个常数(离散化采样思想) 2. 或者在分类问题中,我们将每个区域分配一个具体的类别(二分类或多分类)
基于树的模型的一个关键的性质是模型可以由人类表述(可解释性),因为模型对应于作用在输入变量上的一个二元决策序列(注意,序列和加和模型是有区别的,序列不是简单的total加和,序列包含了决策顺序),这种序列在实际应用中非常有用。例如,为了预测一个病人的疾病,我们可以首先问“病人的体温是否大于某个阈值?”。如果回答是肯定的,那么我们可以问“病人的血压是否低于某个阈值?”。然后树的每个叶节点都与一个具体的诊断相关联。
2. 模型策略
我们继续来讨论如何确定决策树的结构,即使对于结点数量固定的树,确定最优结构(包括每次划分使用的输入变量以及对应的阈值)来最小化平方和误差函数的问题通常在计算上是不可行的,因为可能的组合数量非常巨大。相反,我们通常使用贪心的最优化。
对应于整个输入空间的一个单独的根节点开始,然后通过每次添加一个结点的方式构建树;
在每一步,输入空间中会有若干个可以切分的候选的区域,对应于向当前的树中添加一对叶节点。对于每个这种候选区域,我们要选择使用D个输入变量中的哪一个进行划分?以及阈值的大小?
划分区域的选择以及输入变量和阈值的选择可以通过彻底搜索的方法高效地进行联合最优化。
3. 模型终止条件
得到构建树的贪心策略之后,剩下的问题是如何停止添加结点。一个简单的方法是当残留误差的减小量低于某个阈值时停止(精确度增长速度收敛)。
然而,我们通过实验发现,经常出现这样的情形:在某一轮迭代中,没有一种划分方式会使误差函数产生显著的减小,但是再进行几次划分之后,就又突然找到一个使误差函数显著减小的划分方式(似乎是从一个局部最优的陷阱里跳出来了)
因此,在实际应用中通常构建一个较大的树,使用基于与叶节点关联的数据点数量的停止准则(本质是限制树的深度),然后进行剪枝,生成最终的树。
剪枝的过程基于的准则是:在残留误差与模型复杂度之间进行平衡
0x2:树模型可能存在的问题
像CART这种树模型可以由人类进行表述这一性质通常被视为一个十分重要的优点,然后在实际应用中,学习到的特定的树结构对于数据集的细节非常敏感,从而训练集的一个微小的改变就会产生一个相当不同的划分集合。本质上来说,导致这个问题的原因在于决策的测决面太硬了,不够柔和。
另一个一个比较严重的问题是,划分边界与特征空间的坐标轴对齐的,这相当不好。
此外,决策树中的划分是硬划分,从而输入空间中的每个区域与一个叶节点模型关联,并且只与一个叶节点模型关联,树模型相当于生成了一个分段常数的预测,划分的边界是不连续的。
4. 条件混合模型
我们已经看到,标准的决策树被限制为对输入空间的硬的、与坐标轴对齐的划分。这些限制可以通过引入软的、概率形式的划分的方式得到缓解,这些划分是所有输入变量的函数,而不是仅仅某个输入变量的函数。当然,这样做的代价是模型的直观意义的消失。
如果我们也给叶节点的模型赋予一个概率的形式,那么我们就得到了一个纯粹的概率形式的基于树的模型,被称为专家层次混合(hierarchical mixture of experts)。
另一种得到专家层次混合模型的方法是从标准的非条件密度模型(例如高斯分布)的概率混合开始,将分量概率密度替换为条件概率分布。这里,我们考虑线性回归模型的混合以及logistic回归模型的混合。在最简单的情况下,混合系数与输入变量无关。如果我们进行进一步的泛化,使得混合系数同样依赖于输入,那么我们就得到了专家混合(mixture of experts)模型。最后,如果我们使得混合模型的每个分量本身都是一个专家混合模型,那么我们就得到专家层次混合模型。
0x1:线性回归模型的混合
用概率形式表示线性回归的众多优点之一是它可以用作更复杂的概率模型的一个分量。例如,将表示线性回归模型的条件概率分布看成有向概率图中的一个结点,即可完成这件事。
这里,我们考虑一个线性回归模型的混合的例子,它是高斯混合模型的一个直接推广,推广到条件高斯分布的情形。
我们考虑 K 个线性回归模型,每个模型都由自己的权参数控制。在许多应用中,比较合适和简单的做法是对所有 K 个分量使用一个共同的噪声方差,由精度参数控制。
我们将注意力集中于单一目标变量,将混合系数记作,那么混合概率分布可以写成:
其中表示模型中所有可调节参数的集合,即。给定一组观测数据集,这个模型的对数似然函数的形式为:,其中表示目标变量组成的向量。
为了最大户这个似然函数,我们可以再次使用EM算法,它是无条件高斯混合模型的EM算法的一个简单推广。于是我们可以基于我们对无条件混合分布的经验构造模型,引入一组二值潜在变量,其中,其中对于每个数据点 n,所有的中只有一个元素为1,其余元素都等于0。等于1的元素表示哪个混合分布用于生成数据点。潜在变量与观测变量的联合概率分布可以用下面图模型表示:
这样,完整数据的对数似然函数的形式为:
1. EM步骤
EM算法在开始时,首先选择模型参数的初始值,在E步骤中,这些参数用于计算每个数据点 n 的每个分量 k 的后验概率分布或者“责任”,结果为:,然后,“责任”被用于确定完整数据对数似然函数关于后验概率分布的期望,形式为:
在M步骤中,我们关于最大化函数,保持不变。对于关于混合系数的最优化,我们需要考虑限制条件,这使用拉格朗日乘数法即可完成,得到了的M步步骤重估计方程,形式为:
接下来,考虑关于第 k 个线性回归模型的参数向量的最大化,带入高斯分布的表达式,我们看到关于参数向量的函数形式为:,其中常数项包含来自的其他权向量的贡献。
注意,我们最大化的量类似于单一线性回归模型的标准平方和误差函数的负对数,但是包含了责任项。这代表了加权最小平方(weighted least squares)问题,其中对应于第 n 个数据点的项带有一个加权系数,它可以被看成每个数据点的有效精度。
我们看到,混合模型中的每个分量线性模型由自身的参数向量控制,在 M 步骤中使用整个数据集分别进行调节,但是每个数据点 n 由责任项加权,它表示模型 k 对这个数据点的作用。
令关于的导数等于零,可得:
它可以用矩阵的记号表示为:,其中是一个 N * N 的对角矩阵,解出,我们有
它表示一组修改过的规范方程,对应于加权的最小平方问题,与logistic回归问题中得到的结果具有相同的形式。
注意,在每个 E 步骤之后,矩阵会发生变化,因此我们在后续的 M 步骤中必须重新解该规范方程
最后,我们关于最大化,只保留依赖于的项,函数可以写成:
令它关于的导数等于零,整理之后,我们得到了的 M 步骤方程,形式为:。
下图用一个简单的例子来说明这个基于线性回归组合的EM算法:
在上图的例子中,我们根据数据集来调整由两条直线组成的混合模型,数据集有一个输入变量 x 和一个目标变量 t。
我们看到,混合模型可以更好地表示数据分布,这一点通过更高的似然函数值反映出来。然而,混合模型也将相当大的概率质量分配到了没有数据的区域,因为它的预测分布对于 x 的所有值来说是双峰的
0x2:logistic模型的混合
由于线性回归模型定义了给定输入变量的条件下目标变量的一个条件概率分布,因此很容易将其用作混合模型中的分量分布,从而与单一的logistic回归模型相比,可以表示更丰富的一类条件概率分布。
对于 K 个logistic回归模型来说,目标变量的条件概率分布为:,其中是特征向量,是分量 k 的输出,表示可调节参数,即。
1. EM步骤
现在假设我们有一个数据集,从而对应的似然函数为:,其中。
我们可以使用EM算法迭代地最大化这个似然函数。这涉及到引入潜在变量,它对应于每个数据点 n 的用方式编码的二值指示器变量。完整数据的似然函数为:
,其中是潜在的变量矩阵,元素为。
我们通过选择模型参数的一个初始值来初始化EM算法,之后在 E 步骤中,我们使用这些参数值来计算每个数据点 n 的分量 k 的后验概率,形式为:
这些责任项然后用于寻找完整数据对数似然函数的期望,它作为的一个函数,形式为:
M步骤涉及到关于最大化这个函数,保持不变,从而保持不变。关于的最大化可以使用通常的方式进行,引入拉格朗日乘数来强制满足的限制,得到下面的结果:。
为了确定,我们注意到由一组下标为 k 项的求和式组成,它只依赖于向量中的一个,因此不同的向量在EM算法的 M 步骤中可以独立进行优化。换句话说,不同的分量只通过责任项产生相互作用,它在步骤 M 步骤中是固定的,注意,M 步骤没有封闭解,必须使用例如迭代重加权最小平方(IRLS)算法迭代得求解。对于向量的梯度和为:,其中表示关于的梯度。对于固定的,梯度和独立于的,因此我们可以使用 IRLS 算法分别对每个求解,因此分量 k 的 M 步骤方程仅仅对应于使用数据集调整一个单独的logistic回归模型,其中数据点 n 携带权值。
下图给出了一个logistic回归模型的混合模型应用的简单例子
从这2个例子,我们可以看出,混合模型的最强大的地方在于:混合模型可以捕获数据集中多个不同的概率分布模式(如果真的存在的话),并通过权重调整来柔性地微调各个基分类器之间的关系
Copyright (c) 2018 LittleHann All rights reserved