《机器学习》理论——速读学习2 常用方法(2)
该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动!
time: 2021-12-21
学习目标:我需要了解神经网络除了工程化部分之外的更多内容,以便于在实际有效数据中可以获得抽象模型的能力;
- 第6章 支持向量机
- 第7章 贝叶斯分类器
- 第8章 集成学习
第6章 支持向量机
6.1 间隔与支持向量
给定训练样本集,分类学习是在样本空间中找到一个划分超平面,将不同类分开;但是这样的划分超平面可能有多个,寻找的话,直观上应该找所有划分超平面“最中间的”,因为它对训练样本局部扰动的容忍性最好;
由于训练集的局限性或噪声的因素,训练集外的样本可能有很多分布在这些划分超平面周围,这使许多划分超平面出现错误,而最中间的受影响最小(最鲁棒的),泛化能力最强;
使用线性方程w^T * x +b = y
描述划分超平面:
- w是法向量,决定超平面方向
- b是超平面与原点间距离;
- (w,b)二者可以确定一个超平面;
- 假设超平面(w,b)能将训练样本正确分类,则对正样本
w^T * x +b >= 1
,对负样本w^T * x +b <= -1
; - 对于距离超平面比较近的若干个训练样本点(使上边两个等号成立),称为“
支持向量(support vector)
”;
每个样本对应的是一个特征向量;
两个异类支持向量到超平面的距离和为2/||w||
,被称为间隔(margin)
理解:
- 正负支持向量就是到超平面的距离为
1/||w||
的若干个样本点;- 如果超平面是一条分隔线的话,那么间隔就是一个“分隔带”,这个分隔带的宽度就是2*
1/||w||
;
所谓的最中间超平面,实际就是具有最大间隔的划分超平面;
要找到最大间隔,即2/||w||
最大化,等价于||w||^2
最小化,于是相当于找到一组(w,b)
使得1/2 * ||w||^2
值最小,这就是支持向量机(support vector machine,简称SVM)
的基本型;
6.2 对偶问题
划分超平面对应的模型为f(x)= w^T * x +b
,w和b是模型参数;寻找最大间隔的划分超平面的问题是一个凸二次规划(convex qeadratic programming)
问题;
对于找到一组(w,b)
使得1/2 * ||w||^2
值最小,可以使用拉格朗日乘子法得到其“对偶问题(dual problem)”
这是一段计算,我们任然略过,重点放在对核心问题、概念上的理解;
- 支持向量机这个名字强调了此类学习器的关键是如何从支持向量构建出解;
- 同时也暗示着其复杂度主要与支持向量的数目有关:
- 训练完成后,大部分训练样本都不需要保留,最终模型仅仅与支持向量有关;
SMO(sequential minimal optimization)算法:
- 训练过程中,使选取的两个变量所对应的样本之间的间隔最大(约束中,除了两个拉格朗日乘子的变量,其他参数固定),这样的两个变量很可能有很大差别(启发式),与两个相似的变量进行更新比对和更新,可以带给目标函数值更大的变化;
- SMO算法的高效,是固定其他参数,仅仅优化两个参数很高效;
在求取b上:选择任意的支持向量都可以在等号成立
的方程中求解获得b,一般使用所有支持向量求解的平均值,以增加鲁棒性;
6.3 核函数
前面以样本空间线性可分,即存在一个划分超平面能将训练样本正确分类;而实际任务中,原始样本空间可能不存在一个能正确划分两类样本的超平面(如异或问题就不是线性可分的);
处理方式:
- 将样本从原始空间映射到一个更高维的特征空间(如2维 到 3维),使得样本在这个特征空间内线性可分;
如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使得样本可分;
令ø(x)
表示x映射后的特征向量,那么在新的特征空间中划分超平面所对应的模型可表示为f(x)=w^T * ø(x) + b
;其中w和b是模型参数;
- 继续 获得其对偶问题,然后求解;
- 求解过程会涉及到计算 高维向量xi和xj在特征空间的内积,而转换后的维度可能很高(甚至无穷),为避免这个计算,需要对其进行转换;
- 因而设想函数:xi和xj在特征空间的内积 等于 它们在原始样本空间中 通过某函数计算的结果;这个设想的函数就是
核函数(kernel function)
- 模型最优解 可通过 训练样本的 核函数展开,这一展式 亦称为
支持向量展式(support vector expansion)
;
对于现实任务,映射ø
、核函数 是否存在,有如下定理:
- 令x为输入空间,则k是定义在x*x上的对称函数,则k是核函数当且仅当对任意数据D={x1,x2,…,xm},“
核矩阵
”(kernel matrix)K总是半正定的; - 核矩阵
K=[[k(x1,x1),k(x1,xj),...,k(x1,xm)],[k(xi,x1),k(xi,xj),...,k(xi,xm)],...,[k(xm,x1),k(xm,xj),...,k(xm,xm)]]
; - 即,只要一个对称函数所对应的核矩阵是半正定的,它就能作为核函数使用;
关于正定和半正定:
- 计算A的各阶顺序主子式。若A的各阶顺序主子式均大于零,则A是正定的;
- 对于半正定矩阵来说,相应的条件应改为所有的主子式非负;顺序主子式非负并不能推出矩阵是半正定的
正定矩阵性质:
- 正定矩阵的行列式恒为正;
- 实对称矩阵AA正定当且仅当AA与单位矩阵合同;
- 两个正定矩阵的和是正定矩阵;
- 正实数与正定矩阵的乘积是正定矩阵;
半正定矩阵性质:
- 半正定矩阵的行列式是非负的;
- 两个半正定矩阵的和是半正定的;
- 非负实数与半正定矩阵的数乘矩阵是半正定的;
各阶顺序主子式计算:(以三阶顺序主子式为例)
- 矩阵
X = [[a,b,c],[d,e,f],[g,h,i]]
- 计算公式:
|X|=a * (e*i - h*f) - b * (d*i - g*f) + c * (d*h - g*e)
(计算方式不唯一);
事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射ø
(即,任何一个核函数都隐式地定义了一个成为“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space,RKHS)的特征空间);
我们希望样本的特征空间线性可分,因为这对支持向量机的性能至关重要;但是在不知道原始样本的特征映射时,也就不知道什么样的核函数是合适的,核函数也仅仅是隐式的定义了特征空间;因此核函数的选择成了支持向量机的核心问题,如果选择的核函数不合适,意味着可能会将样本映射到一个不合适的特征空间,最终导致性能不佳;
常用核函数:
- 线性核:
k(xi,xj) = xi^T * xj
- 多项式核、高斯核、拉布拉斯核、Sigmoid核;
经验:对文本数据通常采用线性核,情况不明可先尝试高斯核;
此外还可以通过函数组合得到新的核函数:
- 若k1和k2为核函数,则对于任意的正数r1、r2,其线性组合r1k1 + r2k2也是核函数;
- 若k1和k2为核函数,则核函数的直积也是核函数;
- 若k1为核函数,则对于任意函数g(x),k(x,z) = g(x)k1(x,z)g(z),k也是核函数;
6.4 软间隔与正则化
训练样本在其样本空间 或 (映射后高维的)特征空间中如果是线性可分的,即存在一个超平面将不同类的样本完全分开;
现实任务中找到合适的核函数让训练样本在特征空间中线性可分,并不容易;即便恰好找到某个核函数使得训练集在其特征空间中线性可分,也很难断定这个貌似线性可分的结果是不是由过拟合造成的;
缓解该问题的一个办法是:允许支持向量机在一些样本上出错,即引入了软间隔(soft margin)
;
间隔中 会出现一些不满足约束的样本;
之前我们所说的间隔是硬间隔(hard margin)
,即所有样本都必须划分正确;
现在的软间隔,允许某些样本不满足约束;
在最大化间隔的同时,不满足约束的样本要尽可能的少,这一步也是可以用公式表示出来,只不过求解过程中处理的0/1损失函数
非凸、非连续、数学性质不好,一般会使用替代损失(surrogate loss)
函数代替,替换损失函数一般具有较好的数学性质、连续的凸函数;这就是常用的软间隔支持向量机
;
三种常用的替代损失函数:
- hinge损失
- 指数损失(exponential loss)
- 对率损失(logistic loss)
软间隔支持向量机的最终模型仅与支持向量有关,即采用hinge损失函数仍保持了稀疏性;这是由于hinge损失有一部分值为0的x区域,这使得支持向量机的解具有稀疏性;
如果使用 对率损失函数 作为替代函数,几乎得到了 对率回归模型;(对率回归的输出具有自然概率意义,但是支持向量机的输出不具有);
对率损失 与 hinge损失不同,它是光滑的单调递减函数,不能导出类似支持向量的概念,因此对率回归的解依赖于更多的训练样本,其预测开销更大;
使用不同的替待损失函数学得的模型,其模型性质与所用的替代函直接相关,但都有一个共性:
- 优化目标的第一项用来描述划分超平面的间隔大小,属于
结构风险(structural risk)
,描述模型性质; - 另一项用来表述训练集上的误差,属于
经验风险(empirical risk)
,描述模型与训练数据的契合程度;
一般希望获得经验风险最小化,而结构复杂度又很低的模型:
- 可以引入领域知识和用户意图来调整结构风险项,这也有助于削减假设空间,降低最小化训练误差的过拟合风险;
- 类似的问题也被称为“
正则化(regularization)
”问题,结构风险项被称为正则化项
,经验风险项前有一个常数C,被称为正则化常数,Lp范数(norm)是常用的正则化项,其中L2范数倾向于w的分量取值尽量均衡,即非零分量个数尽量稠密; - L0和L1范数则倾向于w的分量尽量稀疏,即非零分量个数尽量少;
正则化可理解为一种“罚函数法”,即对不希望得到的结果施以惩罚,从而使得优化过程趋向于希望目标;
6.5 支持向量回归
前面针对分类任务,现在考虑回归问题;
- 对于样本(x,y),传统回归模型通常直接基于模型输出f(x)与真实输出y之间的差别来计算损失;当且仅当f(x)与y完全相同时,损失才为零;
- 而
支持向量回归
(Support Vector Regression,简称SVR)假设我们能容忍f(x)与y之间有一个上限偏差,f(x)与y差别的绝对值大于这个偏差才计算损失;这相当于以f(x)为中心,构造了一个宽度为偏差的间隔带,训练样本落入此间隔带,则被认为是预测正确的;
SVR问题最终寻找到的支持向量,必落在间隔带之外;SVR的支持向量仅是训练样本的一部分,其解仍具有稀疏性;
特征映射形式的SVR同样需要核函数;
6.6 核方法
给定训练样本,若不考虑偏移项,无论是SVM还是SVR,学的的模型总是能表示成核函数k(x,xi)
的线性组合;
更一般的,有“表示定理(representer theorem)
”:对于一般的损失函数(对损失函数无限制)和正则化项(仅要求单调递增,不一定是凸函数),优化问题(求解SVM或SVR的方程)的最优解 都可以表示为核函数k(x,xi)
的线性组合;
基于核函数的学习方法,统称为核方法
(kernel methods);
常见的是通过“核化”(即引入核函数)来将线性学习器拓展为非线性学习器(核线性判别分析,Kernelized Linear Discriminant Analysis,KLDA);
6.7
线性核SVM迄今仍是文本分类的首选技术;
支持向量机是针对二分类任务设计的,对多分类任务要进行专门的推广;
如何选择合适的核函数,任然是一个问题;
SVM已有很多软件包,比较著名的如LIBSVM
和LIBLINEAR
;
SVM的确与神经网络有密切联系:若将隐层神经元设置为训练样本数,且每个训练样本对应一个神经元中心,则以高斯径向基函数为激活函数的RBF网络,恰与高斯核SVM的预测函数相同;
第7章 贝叶斯分类器
7.1 贝叶斯决策论
贝叶斯决策论(Bayesian decision theory)是概率框架下实施决策的基本方法;
决策论中将“期望损失”称为风险(risk);
对于分类问题,贝叶斯决策论考虑如何基于概率和误判损失来选择最优类别标记;
以多分类问题举例:
- N中类别标记
y={c1,c2,...,cn}
λij
是将一个真实标记为cj错误分类为ci所产生的的损失;- 基于后验概率
P(ci|x)
可获得将样本x分类为ci所产生的的期望损失(expected loss); - 则样本x上的“条件风险”(conditional risk)
R(ci|x) = ∑ λij * P(ci|x)
,j从1到N;
任务是寻找一个判定准则h,使得将样本x分类到y时,最小化总体风险;
对于每个样本x,若h能最小化条件风险R(h(x)|x)
,则总体风险R(h)
也将被最小化;
由此产生了贝叶斯判定准则(Bayes decision rule)
:
- 为最小化总体风险,只需在每个样本上选择那个能使条件风险
R(c|x)
最小的类别标记; - 这一求解过程,称为
贝叶斯最优分类器(Bayes optimal classifier)
,与之对应的总体风险称为贝叶斯风险(Bayes risk)
; - 1减去贝叶斯风险 反映了分类器所能到达的最好性能,即通过机器学习所能产生的模型精度的理论上限;
7.2 极大似然估计
这章读起来,对笔者有些难,这里只着重关注对重点概念的理解;
估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计;
极大似然估计:根据数据采样来估计概率分布参数的经典方法;
- 极大似然估计 是 试图在 确定条件概率的参数向量空间中,找到一个能使数据出现的“可能性”最大的值/向量;
- 为了解决连乘导致的数值下溢问题,通常使用对数似然(log-likelihood),将连乘转化为连加;
- 通过极大似然法得到的正太分布均值就是样本均值;
离散的情形,也可以通过类似的方式估计 类条件概率;
需要注意的是,这种参数化的方法虽然能使类条件概率估计变得相对简单,但估计结果的准确性严重依赖于所假设的概率分布形式是否符合潜在的真实数据分布;
实际任务中,往往需要一定程度的经验知识,才能做出较好接近潜在真实分布的假设;
7.3 朴素贝叶斯分类器
基于有限训练样本直接估计联合概率,在计算上将会遭遇组合爆炸问题,在数据上将会遭遇样本稀疏问题:属性数越多,问题越严重;
朴素贝叶斯分类器(vaive Bayes classifier)
:
- 采用“属性条件独立性假设”(attribute conditional independence assumption):对已知类别,假设所有属性相互独立(每个属性独立地对分类结果发生影响);
- 朴素贝叶斯分类器的训练过程就是基于训练集D来估计类先验概率P©,并为每个属性估计条件概率P(xi|c);
当样本数量足够时才能进行有意义的概率估计;这里“独立同分布”的概念又一次被用到;
若某个属性值在训练集中没有与某个类同时出现过,则进行概率估计进行的分类判别,将出现问题,因为连乘计算概率为0(其中有一项为0),导致无论样本其他属性如何,哪怕数据上已经体现其明显的分类,结构仍将是错误的;
为了避免其他属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率时通常要进行“平滑
”(smoothing),常用“拉普拉斯修正”(Laplacian correction);(第i个属性取值和类别数分别在类条件概率P(xi|c)和类先验概率P(c)中用于修正计算
)
- 拉普拉斯修正避免了 因训练集样本不充分而导致 概率估值为零的问题;在训练集变大时,修正过程引入的先验(prior)影响也逐渐可被忽略,使得估值逐渐趋向于实际概率值;
类条件概率是一种后验概率;
7.4 半朴素贝叶斯分类器
半朴素贝叶斯分类器(semi-vaive Bayes classifier)
:
- 朴素贝叶斯采用的属性条件独立性假设,现实任务往往很难成立,人们尝试对属性条件独立性假设进行一定放松,即产生了半朴素贝叶斯分类器的学习方法;
- 适当考虑一部分属性间的相互依赖信息,从而既不需要完全联合概率计算,也不至于彻底忽略比较强的属性依赖关系;
独依赖估计
(one-dependent estimator,ODE)是半朴素贝叶斯分类器最常用的策略;- 独依赖就是假设每个属性在类别之外最多仅依赖于一个其他属性;
- 被依赖的属性称为父属性;确立不同的父属性,将产生不同的独依赖分类器;
将属性条件独立性假设放松为独依赖假设可能获得泛化性能的提升;如果继续放松,则所需训练样本数量将以指数级增长;
7.4 贝叶斯网
贝叶斯网(Bayesian network)是一种经典的概率图模型,亦称信念网(belief network);它借助有向无环图(Derected acyclic graph,DAG)来刻画属性间依赖关系,并使用概率表(Conditional Probability Table,CPT)来描述属性的联合概率分布;
若网络结构已知,即属性间的依赖关系已知,则贝叶斯网的学习过程,只需通过训练样本计数,估计出每个节点的条件概率即可;
现实应用的网络结构是未知的,因此贝叶斯网的首要任务是根据训练数据集找出结构最恰当的贝叶斯网;评分搜索是求解这一过程的常用方法;
贝叶斯网就是模型;训练好后可以用来回答查询:通过一些属性变量的观测值来推测其他属性变量的取值;此过程称为推断(inference),已知变量观测值称为证据(evidence);
7.6 EM算法
之前的讨论,训练集的样本属性变量的值都是被观测到的,即训练样本完整;对于不完整的训练样本,其中未观测变量称为隐变量(latent variable)
,EM(Expectation-Maximization)算法是常用的估计参数隐变量的一种迭代式方法;
EM算法可看做坐标下降(coordinate descent)法来最大化对数似然下界的过程;
7.7
贝叶斯决策论,在数据分析中很重要;
对贝叶斯定理进行近似求解,是机器学习算法的一种设计方式;
为避免求解贝叶斯定理时的组合爆炸、样本稀疏问题,出现了引入属性条件独立性假设的朴素贝叶斯分类器
;虽然这个假设现实中很难成立,但是朴素贝叶斯分类器在很多场景都能获得不错的性能;
继续考虑属性间的相互依赖,出现了贝叶斯网来表示属性间的依赖性:
- 朴素贝叶斯分类器 不考虑属性间依赖性;
- 贝叶斯网能表示任意属性间的依赖性;
介于两者之间的则是一系列半朴素贝叶斯分类器:基于各种假设和约束来对属性间的部分依赖性进行建模;
- 仅考虑一个父属性,行程的独依赖分类器;
- 考虑最多k个父属性,形成的k依赖分类器;
贝叶斯分类器 与 一般意义上的贝叶斯学习 有显著区别:前者通过最大后验概率进行单点估计,后者则是进行分布估计;
贝叶斯网为不确定学习和推断提供了框架,表示能力强、可解释性好,可分为 结构学习和参数学习两部分:
- 参数学习较为简单,结构学习是NP难问题,为此提出了多种 评分搜索方法;
EM算法
是最常见的隐变量估计方法,用途极为广泛,常被用来学习高斯混合模型(Gaussian mixture model,GMM)的参数,如k均值聚类算法
;
第8章 集成学习
8.1 个体与集体
集成学习
(ensemble learning):通过构建并结合多个学习器来完成学习任务,也被称为 多分类器系统;
结构:基于某种策略结合一组“个体学习器”(individual learner)
同质(homogeneous)集成:
- 决策树集成:个体学习器都是决策树
- 神经网络集成,都是神经网络
- 同质集成中的个体学习器亦称
基学习器(base learner)
,相应的学习算法称为基学习算法(base learning algorithm)
;
异质(heterogenous)集成:
- 个体学习器由不同的学习算法生成,此时也不再有基学习算法;
- 此时的个体学习器,则被称为
组件学习器(component learner)
;
集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能;
弱学习器(weak learner):泛化性能略高于随机猜测,比如二分类问题精度(accuracy)略高于50%;
那么该如何结合呢?
- 要获得好的集成,个体学习器应好而不同,即个体学习器要有一定的
准确性
(不太坏),还要有多样性(diversity)
(有差异); - 集成学习的结果可以使用
投票法(voting)
产生,即少数服从多数,比如二分类,10个基学习器,有超过半数的正确,则可认为分类正确; - 通过计算可证明,随着集成中个体分类器数目T的增大,集成的错误率将指数级下降,最终趋于零;但这有一个假设,即
基学习器相互独立!
;
在现实任务中,个体学习器是为解决同一个问题训练出来的,他们显然不可能相互独立;更一般的,个体学习器的准确度和多样性本身就存在冲突(在具有较高的准确性后,继续增加多样性往往就要牺牲准确性);
如何结合“好而不同”的个体学习器,是集成学习的研究核心,目前有两大类:
- 个体学习器间存在强依赖关系:需串行生成序列化方法;代表是
Boosting
; - 个体学习器间不存在强依赖关系:同时生成并行化方法;代表是
Bagging
和随机森林(Random Forest)
;
8.2 Boosting
Boosting 是一个 可将弱学习器提升为强学习器的 算法族;
工作机制类似于:
- 先从初始训练集训练出一个 基学习器;
- 再根据基学习器的表现对训练样本分布进行调整,使得之前识别错误的训练样本在后续受到更多关注;
- 然后,基于
调整后的样本
分布训练下一个基学习器(估计误差、确认权重),如此往复,直到获取T个基学习器; - 最终将T个基学习器进行加权结合;
最著名的代表算法是AdaBoost,其一种易理解的推到方式是 基于“加性模型(additive model)”,即基学习器的线性组合,来最小化指数损失函数(exponential loss function);
指数损失函数最小化,则分类错误率也将最小化;
这说明:指数损失函数是分类任务原本0/1损失函数 一致的替代损失函数;而且它还具有更好的数学性质,如连续可微;
- 每轮训练的基学习器,根据样本分布为每个训练样本重新赋予一个权重,即重赋权法(re-weighting);
- 对于无法接收权重样本的学习方法,可在每一轮学习中,更具样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练,即重采样法(re-sampling);
Boosting算法在每一轮都要检查当前生成的基学习器是否满足基本条件(比随机猜测好),不满足则停止(这会导致最终无法获得T个基学习器,使用重采样法可以重启);
8.3 Bagging与随机森林
我们已经知道,欲得到泛化性能强的集成,集成中的个体学习器应尽量独立;虽然独立无法做到,却可以设法使基学习器具有较大差异;
给定一个数据集,一种方法是对训练样本进行采样,产生若干个不同的子集,再从中训练出不同的基学习器;但是由于训练数据不同,获得的基学习器可能具有较大差异;
然而,为了获得好的集成,我们还希望个体学习器不能太差;如果子集太小,用于训练的数据不足以进行有效学习,也就无法确保产生比较好的基学习器;
为解决这个问题,可以考虑使用相互有交叠的采样子集;
Bagging
:
- 是并行式集成学习方法最著名的代表,它基于自助采样法(bootstrap sampling);
基本流程:
- 随机采样m个样本,一共采样出T个含m个训练样本的采样集(不同采样集之间样本可能会有重曡);
- 然后基于每个采样集训练出一个基学习器,在将这些基学习器进行结合;
- 在对预测输出进行结合时,对分类问题通常使用简单投票法(票数一样,随机选一,也可以进一步考察),对回归任务使用简单平均法;
Bagging是一个高效的集成学习方法,与直接使用基学习算法训练一个学习器的复杂度同阶;与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改地应用于多分类、回归等任务;
自主采样过程中,每个基学习器只使用了初始训练集的(如约63.2%)部分样本,剩余的可以用作验证集进行泛化性能的“包外估计”;比如当基学习器是神经网络时,可使用包外样本来辅助早期停止以减少过拟合的风险;
随机深林(Random Forest,RF)
:
- 是Bagging的一个扩展变体;
- 以决策树训练过程为例,引入了随机属性选择,即对基决策树的每个节点,先从该节点的属性集中随机算则k个属性的子集,再从中选择一个最有划分属性;
- 如果k=属性数,则与传统决策树相同,如果k=1,就是随机一个属性用于划分;一般推荐
k=log2 d
;
由于引入了属性扰动,RF中个体学习器性能一开始会很低;随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差(相比Bagging);
8.4 结合策略
结合的好处:
- 对于假设空间很大的学习任务,使用单学习器可能因误选而导致泛化性能不佳,结合可以降低这一风险;
- 可以降低 单个学习器 陷入局部极小点的风险;
- 结合多个学习器,相当于变相扩大假设空间,有可能学得更好的近似;
结合的策略——平均法:
- 对数值型输出,最常见的结合策略就是平均法(averaging);
- 简单平均法(simple averaging)
- 加权平均法(weightd averaging),权重和为1(一般要对权重值施以非负约束),如估计出个体学习器的误差,然后令权重大小与误差成反比;
加权值一般从训练数据中学得,但训练样本不充分或存在噪声,这使得学出的权重不完全可靠,对于较大数据集而言,过多的权重学习较容易导致过拟合;实验表明,加权平均法未必一定优于简单平均法;一般而言在个体学习器性能差异较大时,宜使用加权平均法,性能相近则使用简单平均法;
结合的策略——投票法:
- 对分类任务,最常见的结合策略是使用投票法;
- 绝对多数投票法(majority voting):超半数则预测为该标记,否则拒绝预测(注意:拒绝就是不予预测);
- 相对多数投票法(plurality voting):预测为得票最多的标记,若同时有多个标记获得最高票,随机选一个;
- 加权投票法(weighted voting):与加权平均法中的加权类似,取加权后的投票结果最大值最为判断;
在不允许拒绝预测的任务中,绝对多数、相对多数投票法统称为“多数投票法”;
需要注意的是,若基学习器的类型不同,其类概率值不能直接进行比较,通常将类概率输出转化为类标记输出;对于为规范化的输出值,如支持向量机的分类间隔值,必须使用一些技术,如Platt缩放、等分回归等进行校准(calibration)后才能作为类概率使用;
结合的策略——学习法:
- 使用初级算法产生
初级学习器
(即从初始数据集训练出的初级学习器); - 生成一个新的数据集即次级训练集,使用次级学习算法产生
次级学习器
(指用于结合的学习器,也叫元学习器(meta-learner)); - 初级学习器的输出 被当做样例输入特征,而初始样本的标记仍被当做样例标记;
初级学习器可以使用不同学习算法产生(异质的);
原始数据集中,除了用于训练初级学习器的训练集,其他的作为产生次级训练集的样本,用初级学习器产生次级训练集(如果直接使用训练初级学习器的训练集,产生次级训练集,过拟合的风险会很大);因此,一般是通过使用交叉验证(如k折交叉验证)或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本;
8.5 多样性
误差-分歧分解(error-ambiguity decomposition):个体学习器准确性越高、多样性越大,则集成越好;
多样性度量diversity measure(亦称“差异化度量”):是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度;典型做法是考虑个体分类器的两两相似/不相似性;
二分类分类器hi和hj的预测结果列联表
(contingency table):
hi = 1 | hi = -1 | |
---|---|---|
hj = 1 | a | c |
hj = -1 | b | d |
- a表示hi与hj均预测为正类的样本数,a+b+c+d = 样本数量;
- 不合度量(disagreement measure)dis=
(b + c)/m
,该值域为[0,1]
,值越大多样性越大; - 相关系数(correlation coefficient)p=
(ad-bc/((a+b)(a+c)(c+d){b+d})^(1/2))
,该值域[-1,1]
,若hi和hj无关这值为0,正相关为正,负相关为负; - Q-统计量(Q-statistic)Q=
(ad-bc)/(ad+bc)
,与相关系数同符号,Q绝对值<=
p绝对值; - K-统计量(K-statistic)K=
(p1-p2)/(1-p2)
,其中:- p1是两个分类器取得一致的概率,p2是两个分类器偶然达成一致的概率,可由数据集D估算;
- p1 =
(a+d)/m
- p2 =
((a+b)(a+c)+(c+d)(b+d))/m^2
- 若分类器hi和hj在D上表现完全一致,则K=1;,若仅是偶然达成一致这K=0;
- K通常为非负值,仅在hi和hj达成一致的概率甚至低于偶然性的情况下才取负值;
- K-误差图:
- 对于成对型的多样性度量,可以绘制出2维图,K-误差图就是将每一对分类器作为图上的一个点,横坐标是这对分类器的K值,纵坐标是他们的平局误差;
- 数据点云的位置越高,则个体分类器准确性越低;点云的位置越靠右,则个体学习器的多样性越小;
多样性增强:
- 为生成多样性大的个体学习器,可以引入随机性,如对数据样本、
输入属性
、输出表示、算法参数进行扰动;
数据样本扰动
:
- 通常基于采样法;
- 对于 基学习器 为决策树、神经网络等对样本变化敏感的
不稳定基学习器
,数据扰动法很有效; - 对于 线性学习器、支持向量机、朴素贝叶斯、k近邻学习器等
稳定基学习器(stable base learner)
,往往需要使用输入属性扰动等机制;
输入属性扰动
:
- 训练样本子空间(这里仅指属性子集,实际的子空间一般指初始高维属性空间投影产生的低维属性空间)提供了不同观察数据的视角;
- 如随机子空间算法 就依赖于输入属性扰动,对抽取的若干个属性子集,各训练一个基学习器;
- 对于存在大量冗余数据的样本集,其子空间训练处的个体学习器多样性也很大,减少的属性也能减少时间开销;
- 也由于冗余属性多,减少一些属性后的个体学习器也不至于太差;若数据属性少,则不宜用输入属性扰动法;
输出表示扰动:
- 如对类标记稍作变动,使用翻转法(Flipping output)随机改变一些训练样本的标记;
- 使用输出调制法(output smearing)将分类输出转化为回归输出后构建个体学习器;
算法参数扰动:
- 如神经网络隐层神经元数、初始连接权值,可随机设置不同参数,就可以产生较大差别的个体学习器;
- 如使用
负相关法
(negative correlation)显示通过正则化
项来强制个体神经网络使用不同参数; - 值得指出的是,
使用单一学习器时,通常需使用交叉验证等方法来确定参数值,事实上这已使用了不同参数训练出多个学习器,只不过最终仅选择其中一个学习器进行使用,而集成学习则相当于把这些学习器都利用起来
;
不同多样性增强机制可同时使用,如随机森林 就同时使用了 数据样本扰动和输入属性扰动;
本章介绍的最基本结合方法,此外还有基于D-S证据理论的方法、动态分类器选择、混合专家等;
集成学习已经被广泛应用于几乎所有学习任务中;由于集成包含多个学习器,即便个体学习器具有较好的可解释性,集成仍是黑箱模型;