Categories

Calendar

June 2017
M T W T F S S
« Jun    
 1234
567891011
12131415161718
19202122232425
2627282930  

Multiclass Learning with ECOC

ECOC 是 Error-Correcting Output Codes 的缩写。上一篇文章中提到 ECOC 可以用来将 Multiclass Learning 问题转化为 Binary Classification 问题,本文中我们将对这个方法进行介绍。

要了解 ECOC ,可以从 One-vs-Rest 的 Multiclass Learning 策略出发。回忆一下,对于一个 K 类的分类问题,One-vs-Rest 策略为每一个类 $i$ 都训练一个 binary classifier ,用于区分“类别 $i$” 和“非类别 $i$”两类。对于这个策略,可以用下面这样一个图来表示(假设我们有四个类):

这个表中,每一行代表一个类,而每一列代表一个 binary classifier ,其中表格内的元素表示该列所对应的 binary 问题中,该行所对应的类别的数据被当作正例还是负例。例如,第一列表示该 binary classifier 是通过把第一类当作正类 (+1) ,剩余的第二、三、四类当作负类 (-1) 而训练出来的。如此类推。

现在我们将这个表格称作 ECOC codebook ,而把表格的列数称作是 ECOC 的 code length $L$ ,并且不再要求 $L$ 和类别数 […]

Google 代码之夏,Multiclass Learning

虽然各种大小事情和死线依旧是蜂拥而来,但是我想这个假期我“Officially”应该是主要在做 Google Summer of Code 。因为难得的很长的假期,以后又更少有机会回家了,所以理所当然的要呆在家里,但是为了避免一个假期过后荒废得最后连数字都不会数了,我又一直苦恼在家里应该做些什么事情——必须要是有外力来强制进度的事情,否则毫无疑问地会慢慢荒废掉,因为家里本就是一个适合休息堕落的环境呀。最后想到 GSoC 的时候突然眼睛一亮:这不就是为我这种情况量身定做的吗?!

将军 (Shogun) 是众多项目中我比较感兴趣的一个。因为肯定是希望做跟机器学习相关的项目呀,所以实际上 shogun 是项目列表里最相关的一个了。简单地来说就是用 C++ 写的一个机器学习算法库,里面实现了各种常用的算法,并且把许多著名的算法(像 LibSVM、LibLinear、Vowpal Wabbit 等)也都统一的包装起来,然后再提供了各种语言像 Matlab、Python、R 等下面的接口供方便调用。

不过虽然我以前也见到过 Shogun ,但是却并没有实际用过。以前见到这个名字的时候还以为是日本人写的库(因为 Shogun 是日语单词“将军”呀),后来了解了一下才发现实际上是有德国的 Max Planck Institute (MPI) 里的一个组发起的项目(这个 MPI 里有好多机器学习非常强的组呢!),而这个略奇怪的名字实际上是由最初的两个作者 Soeren Sonnenburg 和 Gunnar Raetsch 的名字的开头 So 和 Gun 拼起来再变化得到的。但是究竟是如何查到这个日语单词的呢?嗯,也许是 Google 了一下看到 wikipedia 的页面了吧……不过,Soeren 说你可以给 Shogun 画个好看点的 logo 的……许多年前参加 GSoC 的时候也被叫给当时的项目画了个 Logo ,不过这次就真的完全没有想法了啊,其实我觉得就这样用汉字做 logo 也挺不错的。