纠错输出编码(Error-Correcting Output Codes: ECOC)

news/2025/1/16 18:04:21/

最近在利用Error-Correcting Output Codes做论文,发现网上没有一种讲的比较清楚的,那我今天就花点时间大致上讲一下这种方法。最初提出ECOC方法的是如下的文章

Solving Multiclass Learning Problems via Error-Correcting Output Codes --Thomas G. Dietterich, Ghulum Bakiri

ECOC与One-vs-One(OvO)和One-vs-ALL(OvA)一样属于将多分类分解为二分类问题的分而治之(Divide and Conquer)的方法,并且也可以将ECOC理解为一种OvO和OvA经过推广过后的方法。我这里引用下面文章中的例子来说明这个问题

Reducing Multiclass to Binary: A Unifying Approach for Margin Classifiers --Erin L. Allwein, Robert E. Schapire,
Yoram Singe

1. 问题描述

给定:

  1. 多分类数据
    例如:预测孩子们最喜欢的颜色
    在这里插入图片描述

  2. 二分类学习算法 A
    在这里插入图片描述

目标: 利用二分类学习算法构建对于多分类数据的分类器
在这里插入图片描述

2. 一对多方法(OvA)

2.1 分解问题

将一个k-分类问题分解为k个二分类问题并且分别解决他们
在这里插入图片描述

2.2 怎样结合预测结果

  • 一列一列评估,并且希望只有一个是 +
  • 例如如果 h 1 ( x ) = h 2 ( x ) = h 4 ( x ) = − h_1(x) = h_2(x) = h_4(x) = - h1(x)=h2(x)=h4(x)= 并且 h 3 ( x ) = + h_3(x) = + h3(x)=+然后预测为 红色

2.3 问题

如果仅有一个 h h h是错的,最终的预测结果就会出错

3.一对一方法(OvO)

3.1 分解问题

为每一对类别创造一个二分类器
在这里插入图片描述

3.2 预测阶段:

一种方法是可以利用voting的方法。即分别用这些分类器预测,计算每个种类的得票数,最终选取得票数最高的

3.3 问题和优点:

  • 在预测阶段如何结合所有分类器的结果不是很显著的
  • 可以达到很高的精度,训练速度甚至快于OvA方法

4. 纠错输出编码(ECOC)

4.1分解问题

  1. 设计编码矩阵(“Coding” Matrix)M,并且根据M分解为若干个二分类问题(二分类问题的个数 d d d 事实上等于M的长度)

设计的方法是值得研究的话题,有文章表明是一个NP难问题。在最初的文章中作者给了几种方法;例如k不大的时候可以使用穷举编码,在k大的时候可以使用随机编码等;并且分类器个数 = 矩阵长度 d d d满足
l o g 2 k ≤ L ≤ 2 k − 1 − 1 , L ∈ Z log_2 k \leq L \leq 2^{k-1} -1, L \in \mathbb{Z} log2kL2k11,LZ
最短是最少的二分类问题个数,是对数数量级的。最多的情况是穷举,是指数数量级的

  1. M的每行为这个类别的编码
    例如绿色的编码为 ( + , − , + , − , + ) (+, -, +, -, +) (+,,+,,+)
    在这里插入图片描述

4.2 预测阶段

计算hamming distance,每个预测值也有相应的五位编码,分别与每一类的编码比对,有几位不一样hamming distance就是几,最小的那一类就是我们的预测值(最相似的一行)。

  • 例如 h ( x ) = < − , + , + , + , − > \mathbf{h}(x) = <-, +, +, +, -> h(x)=<,+,+,+,>然后预测为蓝色(hamming distance 分别为(绿色:4 黄色:2 红色:3 蓝色:1))
    在这里插入图片描述

4.3 问题和优点

  • 如果M的行与行差别很大,那么对错误就会有很高的鲁棒性。如果任意两行之间最小的距离是 L L L,可以容忍的错误是 L − 1 2 \frac{L-1}{2} 2L1向下取整,仍然可以保证正确的类是最小的Hamming距离
  • 在类别数k大的时候可能运行的更快
  • 缺点:二分类问题不是很自然并且难以解决

4.4 推广方法

4.4.1 分解问题

M可以由 { − 1 , 0 , + 1 } \{-1, 0, +1\} {1,0,+1}构成,其中0表示在这个二分类问题中该类不予考虑。
在这里插入图片描述

4.4.2 推广方法的预测阶段

在这里插入图片描述

4.4.3 问题及优势

因此上面的三种都可以用这种矩阵方法表示,在矩阵的选择上有一些平衡,比如

  • 增加0会使得问题趋向于简单和快速训练,但是会增加二分类器的训练误差
  • 行之间差距大会使得分类器鲁棒性更高,但是会导致二分类问题变得更加难以解决

5. 预测阶段

上面的方法是基于Voting或者是Hamming Distance 的,一种推广的decoding方法可以基于边际差距(Margin-based)或者说是Loss-based。


http://www.ppmy.cn/news/628635.html

相关文章

纠错输出码(Error Correcting Output Code, ECOC)

纠错输出码流程 1、编码 对N个类别做M次划分&#xff0c;每次划分将一部分类别划为正类&#xff0c;一部分划为反类&#xff08;M个训练集&#xff09;。 如例(a) 则N4&#xff0c;M5&#xff0c;每次划分为1或者-1&#xff08;二分类&#xff09; 2、解码 测试示例交给M个…

ChatGPT伪原创文章的应用与发展

ChatGPT是一种基于人工智能技术的自然语言处理模型&#xff0c;它能够生成逼真的、具有上下文连贯性的文本。近年来&#xff0c;ChatGPT在各个领域的应用越来越广泛&#xff0c;其发展潜力也逐渐被人们所认识。本文将从多个方面对ChatGPT的应用与发展进行详细阐述。 ChatGPT在…

数据质量管理—3、数据修正(Data Correcting)

前面的两篇文章——分析的前提—数据质量1和分析的前提—数据质量2分别介绍了通过Data Profiling的方法获取数据的统计信息&#xff0c;并使用Data Auditing来评估数据是否存在质量问题&#xff0c;数据的质量问题可以通过完整性、准确性和一致性三个方面进行审核。这篇文章介绍…

常用校验方式以及优缺点(奇偶校验,CRC校验,校验和)

一、差错产生的原因 在原始的物理传输线路上传输数据信号是有差错的&#xff0c;存在一定的误码率&#xff0c;数据链路层存在的目的就是给原始二进制位流增加一些控制信息 &#xff0c;实现如何在有差错的线路上进行无差错传输 信道的电气特性引起信号幅度&#xff0c;频率&a…

论文解读:Correcting Chinese Spelling Errors with Phonetic Pre-training

论文解读&#xff1a;Correcting Chinese Spelling Errors with Phonetic Pre-training&#xff08;ACL2021&#xff09; 中文拼写纠错CSC任务具有挑战性&#xff0c;目前的SOTA方法是仅使用语言模型&#xff0c;或将语音信息作为外部知识&#xff1b;本文将提出一种新的端到端…

jdk代理和cglib代理(实例推导)

目录 jdk代理和cglib代理&#xff08;实例推导&#xff09;jdk动态代理Cglib动态代理总结 jdk代理和cglib代理&#xff08;实例推导&#xff09; 更深层的探究jdk和cglib动态代理的原理 jdk动态代理 jdk动态代理&#xff08;简单实现&#xff09; 定义一个House的房源类型接口…

Gof23设计模式之原型模式

1.概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 2.结构 原型模式包含一下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的clone()方法具体原型类&#xff1a;实现了抽象圆形类的clone()方法…

笔记本卡顿不流畅是什么原因_笔记本卡顿不流畅是什么原因_笔记本电脑卡顿不流畅如何解决-win7之家...

有不少笔记本电脑用户在使用过程中&#xff0c;发现会经常会遇到卡顿不流畅的情况&#xff0c;很多用户不知道是什么原因引起的&#xff0c;其实原因有很多&#xff0c;可能是电脑本身配置不足&#xff0c;或者电脑占用率过高&#xff0c;或者内存不足等&#xff0c;接下来给大…