- Binary Classifiers for Multi-Class Classification
分类是一个预测性建模问题,涉及将类别标签分配给示例。
二进制分类是将示例完全分配给两个类之一的任务。 多类分类是指将示例完全分配给两个以上类之一的任务。
二进制分类:具有两个类别的分类任务。
多类别分类:具有两个以上类别的分类任务。
一些算法是针对二进制分类问题而设计的。 示例包括:
逻辑回归
感知器
支持向量机
因此,它们不能用于多类分类任务,至少不能直接用于。
相反,可以使用启发式方法将多类分类问题拆分为多个二进制分类数据集,并分别训练一个二进制分类模型。
这些启发式方法的两个示例包括:
- One-Vs-Rest for Multi-Class Classification
多类分类的One-Vs-Rest
One-Vs-Rest(简称OvR,也称为One-vs-All或OvA)是一种使用二进制分类算法进行多分类的启发式方法。
它涉及将多类数据集拆分为多个二进制分类问题。然后针对每个二进制分类问题训练一个二进制分类器,并使用最有把握的模型进行预测。
例如,给定一个多类别分类问题,并为每个类别“红色”,“蓝色”和“绿色”提供示例。可以将其分为三个二进制分类数据集,如下所示:
二进制分类问题1:红色vs[蓝色,绿色]
二进制分类问题2:蓝色vs [红色,绿色]
二进制分类问题3:绿色vs[红色,蓝色]
这种方法的可能缺点是,需要为每个类创建一个模型。例如,三个类需要三个模型。对于大型数据集(例如数百万行),慢速模型(例如神经网络)或大量类(例如数百个类),这可能是一个问题。
此方法要求每个模型都预测类成员资格概率或类似概率的得分。然后,将这些分数的argmax(分数最高的类别索引)用于预测类别。
此方法通常用于自然预测数值类隶属度或分数的算法,例如:
逻辑回归
感知器
这样,在将这些算法用于多类分类时,默认情况下,scikit-learn库中这些算法的实现会实现OvR策略。
- One-Vs-One for Multi-Class Classification
多类分类一对一
一对多(简称OvO)是将二进制分类算法用于多分类的另一种启发式方法。
一对多将多类别分类数据集拆分为二进制分类问题。与“One-Vs-Rest”将其分为每个类别的一个二进制数据集不同,“一对一”方法将数据集分为每个类别与其他类别的一个数据集。
例如,考虑一个具有四个类别的多类别分类问题:“红色”,“蓝色”和“绿色”,“黄色”。这可以分为六个二进制分类数据集,如下所示:
二进制分类问题1:红色与蓝色
二进制分类问题2:红色与绿色
二进制分类问题3:红色与黄色
二进制分类问题4:蓝色与绿色
二进制分类问题5:蓝色与黄色
二进制分类问题6:绿色与黄色
与上一节中描述的“一对多”策略相比,这明显是更多的数据集和模型。
用于计算二进制数据集以及模型数量的公式如下:
(NumClasses *(NumClasses – 1))/ 2
我们可以看到,对于四个类,这为我们提供了六个二进制分类问题的期望值:
(NumClasses *(NumClasses – 1))/ 2
(4 *(4 – 1))/ 2
(4 * 3)/ 2
12/2
6
每个二元分类模型可以预测一个类别标签,并且具有最多预测或投票的模型是通过一对一策略来预测的。
一种替代方法是引入K(K − 1)/ 2个二进制判别函数,每个可能的类对一个。这称为一对一分类器。然后根据判别函数中的多数票对每个点进行分类。
类似地,如果二元分类模型预测了数字类成员关系(例如概率),则将分数总和(具有最大总和分数的类)的argmax预测为类标签。
通常,建议将这种方法用于支持向量机(SVM)和相关的基于内核的算法。可以相信这是因为内核方法的性能与训练数据集的大小不成比例,并且使用训练数据的子集可以抵消这种影响。