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