多分类学习任务经常被划分为多个二分类学习任务,最后进行结果集成完成分类,一般有三种划分方法,“一对一”、“一对其余”、“多对多”(针对类别)。
ECOC(Error Correcting Output Codes,纠错输出码)作为输出表示,用于多分类学习任务。主要思想是,通过事先分别为
k
类类别定义一串编码序列(code word)。在分类的时候,只需比较待分类样本与各串编码的差异程度(distance measure)。如下图,在Dietterich一文中,一般对于ECOC的大部分应用,其Code Word的每一位都有实际的含义,假设有一预分类样本为110001,则由Hamming distance距离可得,Class 4的距离最小,因此将其划分为Class 4。ECOC还有一个显著的优点就是能够纠错,若最小Hamming distance为d,则ECOC最少能纠正
这里就有两个问题,各类的编码序列如何获得,差异程度如何定义。
ECOC编码设计
如先前的例子所示,我们需要构建一个矩阵,行表示一类样本的编码,列则表示一类特征。因此好的ECOC编码应该满足一下两个特征
1.Row separation.对于Hamming Distance,每个编码序列应该与其它编码良好可分。
2.Column separation.每一位编码应该与其余位置的编码不相关。这个可以通过该列与其余列以及其余列的补集的Hamming Distance达到很大来保证。
ECOC编码的纠错能力与Row separation直接相关,每一位编码应该与其余位置的编码不相关,这样ECOC才能工作良好,同时同一时刻多个不同位置发生错误的概率就会很低。如果出现这一情况,则ECOC不再能纠正它们。
同时如果两列编码互补,则其Hamming Distance达到最大,但这时这两列也是高度相关的,这是因为类似C4.5和后向传播算法会将一个类别编码及其互补的编码作为对称的一类,因此需要避免完全相同,但是也不能相互互补。
Dietterich一文中介绍了四种构造ECOC编码的方法。
分类数量 | 方法 |
---|---|
3≤k≤7 | Exhausive Codes(EC) |
8≤k≤11 | Column Selection From Exhausive Codes(CSEC) |
k>11 | Randomized Hill Climbing |
k>11 | BCH Codes |
Exhausive Codes(EC)
当
3≤k≤7
时,我们构建一个长度为
(2k−1−1)
的编码序列。并且如下构建,第一行全部为1,第二行前
(2k−2)
个0,后面剩余的
(2k−2−1)
为1。第三行依次包含包含
(2k−3)
个0、
(2k−3)
个1、
(2k−3)
个0、
(2k−3−1)
个1。在第
i
行
Column Selection From Exhausive Codes(CSEC)
当 8≤k≤11 时,我们依然构建Exhausive Codes,然后在它的列中选择好的子集。使用改进的GSAT算法(A New Method for Solving Hard Satisfiability Problems)。
Randomized Hill Climbing
当
k>11
时,使用随机搜索算法来得到期望长度为
L
的
BCH Codes
当 k>11 时,我们也可以使用BCH算法来设计编码(On a class of error correcting binary group codes & Codes correcteurs d’erreurs)。
参考资料:1.Thomas G.Dietterich,Ghulum Bakiri,1995,Solving Multiclass Learning Problems via Error-Correcting Output Codes
2.周志华,P63-66,《机器学习》
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可。