纠错输出码ECOC,即Error Correcting Output Codes,是一种最常用的MvM技术(many vs. many多对多),而非训练完成后再去纠错。
多分类学习最经典拆分策略:一对一OvO、一对其余OvR、多对多MvM。
如果纠错码之间最小海明距离为 n n n,则可以至少纠 ⌊ d − 1 2 ⌋ \lfloor \frac{d-1}2\rfloor ⌊2d−1⌋位的错。如果我们只犯了 ⌊ d − 1 2 ⌋ \lfloor \frac{d-1}2\rfloor ⌊2d−1⌋个错误,海明距离最近的编码还是正确的编码。
一个好的ECOC编码应该满足2个特征:
- 行分离性(Row separation)。各行应该在海明距离上彼此良好地分开。
- 列分离性(Column separation)。各列要学习的函数都应该不相关,这个性质可以通过保证各列和各列补集之间的海明距离很大来达到。
显然,ECOC的纠错能力直接与行分离性相关。但是,保证列分离性的目的没那么明显。如果列 i i i和列 j j j相似或者完全一样,那么一个deterministic learning algorithm比如说C4.5应用于学习 f i f_i fi和 f j f_j fj,就会产生相似的错误。ECOC仅仅在不同的地方独立产生错误时生效。
Exhausive Codes(EC)
当
3
≤
k
≤
7
3\leq k\leq 7
3≤k≤7时,建立一个长度为
2
k
−
1
−
1
2^{k-1}-1
2k−1−1的编码。第一行全部是1;第二行前
2
k
−
2
2^{k-2}
2k−2个数是0,后
2
k
−
2
−
1
2^{k-2}-1
2k−2−1个数是1;第三行依次是
2
k
−
3
2^{k-3}
2k−3个数是0,
2
k
−
3
2^{k-3}
2k−3个1,
2
k
−
3
2^{k-3}
2k−3个0,
2
k
−
3
−
1
2^{k-3}-1
2k−3−1个1……依此类推。
Colunm Selection from Exhausive Codes(CSEC)
8 ≤ k ≤ 11 8\leq k \leq 11 8≤k≤11
Randomized Hill Climbing & BCH Codes
k > 12 k >12 k>12
参考资料:
Dietterich, T. G. and G. Bakiri. (1995). “Solving Multiclass Learning Problems via Error-Correcting Output Codes”
A New Method for Solving Hard Satisfiability Problems(这大概是上文的简化版)