多类别分类器
二元分类器可以区分两个类别,而多类别分类器
(也称为多叉分类器
)可以区分两个以上的类别。
一些 Scikit-Learn
分类器(如 LogisticRegression
、RandomForestClassifier
和 GaussianNB
)能够原生处理多个类别。其他分类器则是严格的二进制分类器(如 SGDClassifier
和 SVC
)。不过,您可以使用多种策略来使用多个二进制分类器执行多类分类。
要创建一个能将数字图像分为 10 类(从 0 到 9)的系统,一种方法是训练 10 个二进制分类器,每个数字一个(0-检测器、1-检测器、2-检测器,以此类推)。然后,当您想对一幅图像进行分类时,您可以从每个分类器中得到该图像的判定分数,然后选择分类器输出分数最高的类别。这就是所谓的 “以一敌百”(OvR
)策略,有时也称为 “以一敌众”(OvA
)策略。
另一种策略是为每一对数字训练一个二元分类器:一个用于区分 0 和 1,另一个用于区分 0 和 2,还有一个用于区分 1 和 2,以此类推。这就是所谓的一对一(OvO)策略。如果有 N 个类别,则需要训练 N × (N - 1) / 2 个分类器。对于 MNIST 问题,这意味着要训练 45 个二进制分类器!当你想对一幅图像进行分类时,你必须让图像通过所有 45 个分类器,看看哪个分类器赢得