基本的支持向量机时一个两类分类器。然而在实际应用中,我们经常要处理涉及到个类别的问题。于是,将多个两类SVM组合构造多类分类器的方法被提出来。
一种常用的方法(Vapnik, 1998)是构建个独立的SVM,其中第个模型在训练时,使用来自类别的数据作为正例,使用来自剩余的个类别的数据作为负例。这被称为“1对剩余”(one-versus-the-rest)方法。然而,在图4.2中,我们看到使用独立的分类器进行决策会产生不相容的结果,其中一个输入会同时被分配到多个类别中。这个问题有时可以通过:对于新的输入,使用
做预测,来解决。不幸的是,这种启发式的方法会产生:不同的分类器是在不同的任务上进行训练的,无法保证不同分类器产生的实数值具有恰当的标度的问题。
“1对剩余”方法的另一个问题是训练集合不平衡。例如,如果我们有个类别,每个类别的训练数据点的数量相同,那么用于训练各个独立的分类器的训练数据由的负例和仅仅的正例组成,从而原始问题的对称性就消失了。Lee et al.(2001)提出了“1对剩余”方法的一种变体。这种变体修改了目标值,使得正例类别的目标值为,负例类别的目标值为。
Weston and Watkins(1999)定义了一个单一目标函数用来同时训练所有的个SVM,基于的是最大化每个类别与其余剩余类别的边缘。然而,这会导致训练过程变慢,因为这种方法需要求解的不是N个数据点上的个独立的最优化问题(整体代价为),而是要求解一个规模为的单一的最优化问题,整体代价为。
另一种方法是在所有可能的类别对之间训练个不同的二分类SVM,然后将测试数据点分到具有最高“投票数”的类别中去。这种方法有时被称为“1对1”(one-versus-one)。同样的,我们从图4.2可以看到这会导致最终分类的歧义性。且对于较大的,这种方法要比“1对剩余”的方法花费更多的训练时间。类似地,为了计算数据点,这种方法需要更多的计算。
后一个问题可以通过将每对分类器组织成有向无环图(不要与概率图模型弄混淆)的方式解决,这就产生了DAGSVM(Platt et al., 2000)。对于个类别,DAGSVM共有个分类器。每次对新的测试点分类时,只需要对分类器进行计算。选定的分类器是根据遍历图的路径确定的。
Dietterich and Bakiri(1995)提出了一种不同的方法解决多分类问题。这种方法基于的是误差-修正输出编码,并且被Allwein et al.(2000)用到支持向量机中。这种方法可以被看做“1对1”投票方法的一个推广。这种方法中,用来训练各个分类器的类别划分的方式更加一般。个类别本身被表示为选定的两类分类器产生的响应的集合。结合一套合适的解码方法,这种方法对于错误以及各个分类器的输出的歧义性具有鲁棒性。虽然将SVM用于多分类问题仍然是一个没有标准答案的问题,但是在实际应用中,“1对剩余”是被最广泛使用的方法,尽管它有特定的形式,并且有着实际应用的局限性。
也存在单一类别(single-class)支持向量机,它解决与概率密度估计相关的无监督学习问题。但是,这种方法不是用来对数据的概率密度建模,而是想找到一个光滑的边界将高密度的区域包围起来。边界用来表示概率密度的等分点,即从概率密度分布中抽取的一个数据点落在某个区域的概率由一个0到1之间的固定的数给出,这个数事先指定好。与进行整体的密度估计相比,这个问题更加受限,但是对于某些具体的应用已经足够了。关于使用支持向量机解决这个问题,已经有两种方法被提出来。Scholkopf et al.(2001)的算法尝试找到一个超平面,将训练数据中的固定比例的数据从原始数据集中分离,同时最大化超平面与原点之间的距离(边缘)。Tax and Duin(1999)寻找特征空间中包含数据集的ν比例数据的最小球体。对于只是的函数的核,这两种算法等价。