学习记录——多类分类器ECOC(纠错输出码)如何训练和测试

目录

一、构造编码矩阵 

二、训练

三、测试 

四、应用

 


 

一、构造编码矩阵 

先构造编码矩阵,然后再把训练集已经打好的标签重新根据编码矩阵中第i列重新标记,按这种理解使用多少二分类器(n)就需要重新标记训练集几次(n)。

因此,构造编码矩阵,共有k个类别的多分类任务,做n(想使的二分类器数量)次划分,每次划分时从k中随机选取部分为正类,其余为负类,刚好n个训练集。如何设计编码矩阵还有多种方法。

其实可以不用构造编码矩阵,可先把训练集随机分成和二分类器个数一样的n个子训练集对应着各个分类器,然后直接训练。存在的问题就是再测试的时候没有对比的类别码。

如图,每一行C表示一个类别,每一列f代表一个分类器 。

 

二、训练

 

不知道大家是否和我一样对如何分别训练每个分类器 f有困惑,如表1每一列是一个训练集共7个训练集,把打好标签共有4个类别的训练集(如1-4的手写数字)随机划分成7份对应到7个分类器,然后根据编码矩阵各分类对应的列标签重新标记它对应的子训练集,再用重新标记的二标签训练集训练相当于二分类。当然可以不用预先随机划分训练集,直接把训练集根据二分类器fi对应的列重新标记成二类别数据集。训练集太大,个人觉得增加了重新标记数据集和训练的时间。

还有就是第一节提到直接构造训练集的方法,但是存在的问题还需要进一步解决。

三、测试 

把每一条测试数据分别通过f1到f7二值分类器,每个分类器输出一个一个编码,组合起来构成的7位编码和编码矩阵中每一行(代表一个类别)计算距离,跟那个类别最近就属于那个类。

1、海明距离,对应位置的编码不相同算一个距离,所有对应位值不相同得距离和就是两个编码串得海明距离

2、欧式距离,类似两个坐标点间得距离

3、个人觉得可以直接两个二进制编码做差,这样容错能力,或者说泛化能力也不错,中间可以有2的n次方/2的容错度

 

四、应用

可以和感知机,SVM,线性分类器等二分类器组合构成多类分类器 

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值