纠错输出编码(ECOC)综述和基本原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

纠错输出编码(ECOC )综述和基本原理 目录

<机器学习导论> (1)

《Solving Multiclass Learning Problems via Error-Correcting Output Codes 》 (2)

A Subspace to ECOC (3)

中文参考文献 (5)

<机器学习导论>

在纠错输出编码中,主要的分类任务通过由基学习器实现的一组子任务来定义。其思想是:将一个类从其他类区分开来的原始任务可能是一个困难的问题。作为替代,我们定义一组简单的分类问题,每个专注于原始任务的一个方面,并通过组合这些简单的分类器来得到最终的分类器。

这时,基分类器是输出为-1/+1的二元分类器,并且有一个K*L 的编码矩阵W ,其K 行是关于L 个基学习器dj 类的二元编码。例如,(2, )[ 1 1 1 1]M =-++-表示若一个样本属于第2类(C 2),则该样本应在h 1和h 4上取负值,在h 2和h 3上取正值;(, 3)[ 1 1 1]T M =-++可理解为第三个基分类器h 3的任务是将属于C 1类的样本与属于C 2和C 3类的样本区分开。同时(, 3)M 也决定了如何构造基分类器h 3的训练样本集T 3:所有标记为C 2类及C 3类的样本形成正样本3χ+,而标记为C 1类的实例构成负样本3χ-,对h 3的训练应使得3T ∀∈i x ,当3χ+∈i x 时,3()1h =+i x ;当3χ-∈i x 时,3()1h =-i x 。

这样,编码矩阵使得我们可以用二分类问题定义多分类问题,并且这是一种适用于任意可以实现二分基学习器的学习算法的方法,例如,线性或多层感知器,决策树或初始定义的两类问题的SVM 。

典型的每类一个判别式的情况对应于对角矩阵,其中L=K ,例如,对于K=4,我们有

W=【】

这里的问题是:如果某一个基学习器存在错误,就会有误分类,因为类的码

字之间非常相似,因而纠错码采用的方法是使L>K 来增加码字之间的汉明距离。一种可能的方法是类逐对分开,其中对i

其中的0表示无关,这就是说,训练d1来将C1与C2分开并且在训练中不使用属于其他类的实例。类似地,一个实例属于C2如果有d1=-1,并且d4=d5=+1,并且我们不考虑d2,d3,d6的值。这种方法的问题是对于比较大的K ,逐对分开是不可行的。

方法是预先设定L 值,然后寻找w 使得以汉明距离衡量的行间距以及列间距离都尽可能的大。对K 类问题而言,存在2k-1-1中可能列,即两类问题。这是因为K 位可以写成2K 种不同的形式和补(比如,“0101”和“1010”,从我们的角度来看,二者定义相同的判别式),将所有可能组合除以2减1,因为全为0(或1)的列是无用的。例如K=4时,我们有

111111111111111111111111M ------⎡⎤⎢⎥---+++⎢⎥=⎢⎥-++-++⎢⎥+-+--+⎣⎦

当K 很大时,对于一个给定的L 值,我们从2k-1-1列中选取L 列,我们希望W 的这些列尽可能的不相同,以便每个基学习器所学习的子任务尽可能互不相同。同时,我们希望W 的行业尽可能的不相同,使得在一个活多个基学习器失效时,可以获得最大的纠错。 ECOC 可以用投票方式来表述,其中W 的元素wij 可以看作投票权值:

1L

i ij j j y w d ==∑

然后我们选取具有最高i y 的类。通过求加权和并选择最大值(判别类别)取代寻求一个精确的匹配使得dj 也不必是二元的,二是可取-1到+1之间的任意值,以软确定性取代硬判决。注意位于0到1之间的pj 值(例如后验概率)可以很简单地被转换为-1到+1之间的dj 值: Dj=2pj-1

ECOC 的一个问题是:由于编码矩阵W 被设置为先验,因此不能保证由W 的列所定义的子任务一定是简单。Dietterich 的研究表明二分树可能要比多分树大,而且当使用多层感知器时,后向传播可能收敛较慢。

《Solving Multiclass Learning Problems via Error-Correcting Output Codes 》

最早的ECOC 文献:

纠错编码设计。

定义一个K*L 维二值矩阵为纠错输出编码矩阵。矩阵的列数即为编码的长度,矩阵的行数即为多分类问题的分类类数。矩阵中的每行M(r,·)表示一个类别的码文。

对于K 类问题,一个好的纠错输出编码矩阵应该满足两个要求:

一是行尽量分开。即每个类别的码文与其它类别的码文间的汉明距离要尽可能大。

二是列尽量分开。每个基学习器决策函数hi应该与其余的基学习器决策函数hj,j不等于i,是相互独立的。这可以通过强调列i和其余列之间的汉明距离要大以及列i与其它列的补之间的距离要大来获得。

编码的纠错输能力与行间汉明距离直接相关。而列间汉民距离需要大的目的还不明确。如果两列列i和列j十分相似或完全一样,那么基学习器的判决函数hi和hj的决策结果会含有相同的错误。仅当错误出现在不同的编码位置时,纠错输出编码才是有效的,所以不同位置同时出现的错误的机会必须少。当同时出现错误较多时,纠错码将不能纠正。

互补列之间的错误也是相互关联的。….当两列互补时,他们之间的汉明距离也最大。因此列尽量分开的条件就是试图使列既不相同又不互补。

除非分类类别数大于等于5,否则同时满足上述两个条件是很困难的。例如,当分类类别为3时,仅有8

这8列中,4列与另外

4列中还有一列是全0或是全1列,这对于分类时毫无作用的。结果是仅剩下三列可以作为纠错输出编码矩阵的列,这与一对多的编码数是一样的。

通常地,如果是K类问题,除去互补和全0或全1的列,最多还有2k-1-1列可用,对于4类问题,我们能获得一个7列输出编码矩阵,使得行间的最小汉明距离为4. 对于5类问题,我们能获得一个15列输出编码矩阵,使得行间的最小汉明距离为

文中介绍了四种设计纠错输出编码的方法:Exhaustive Codes(EC); Column Selection from Exhaustive Code(CSEC); Randomized Hill Climbing; BCH编码[1,2]选择哪种设计方法由分类类数K

本文仅将障碍分为四类(采集样本有困难),可以用EC编码的方法。

A Subspace to ECOC

二分类器(基学习器)的独立性是设计ECOC矩阵的关键问题(Key factor),若基学习器相互之间不独立,则ECOC方法失效。本文为了提高基学习器之间的独立性,提出了一种新的有效的ECOC矩阵设计方法。主要思想是基于不同的特征子空间训练基学习器,即子空间ECOC。提出的算法为了增加更多独立的基学习器,可以设计更长输出代码的ECOC矩阵。In addition to creating more independent classifiers in the proposed technique,ECOC matrices with longer codes can be built.

相关文档
最新文档