返回
SVC 处理多分类问题:重要的 `decision_function_shape` 参数
人工智能
2023-10-27 14:39:47
SVM 多分类问题(九):
引言
在之前探索支持向量机 (SVM) 的世界时,我们一直关注二分类问题。这是因为 SVM 在本质上是一个二分类模型。然而,通过巧妙的技术,我们可以扩展它的能力,使其处理多分类问题。在本篇文章中,我们将深入探究 SVC(支持向量分类器)在多分类中的应用,重点关注一个至关重要的参数:decision_function_shape
。
SVC 与多分类
SVC 通过将多分类问题分解为一系列二分类问题来处理多分类问题。最常见的方法是“一对一”和“一对多”。
- 一对一: 将每个类别与其他所有类别配对,生成一系列二分类问题。这会导致 N*(N-1)/2 个二分类器,其中 N 是类别的数量。
- 一对多: 为每个类别创建一个二分类器,将该类别与所有其他类别组合起来。这将产生 N 个二分类器。
decision_function_shape
参数
decision_function_shape
参数指定 SVC 在处理多分类问题时输出的决策函数的形状。它可以采用以下两个值:
- ovr(一对多): 决策函数的形状为 (N, N-1),其中 N 是类别的数量。每一行对应一个类别,并包含该类别与所有其他类别的决策函数值。
- ovo(一对一): 决策函数的形状为 (N*(N-1)/2),其中 N 是类别的数量。每个决策函数值对应于一对类别之间的决策函数。
何时使用哪种形状?
选择正确的 decision_function_shape
取决于具体问题。以下是一些指导原则:
- ovr(一对多): 如果类别之间存在明显的层次结构或顺序,则使用 ovr。例如,在区分水果和蔬菜时,水果可以是超类,而苹果、香蕉和橙子是子类。
- ovo(一对一): 如果类别之间没有明确的层次结构,则使用 ovo。例如,在识别手写数字时,0、1、2 和 3 等数字是平级的。
实践示例
考虑一个使用 SVC 进行手写数字识别的示例。我们有 10 个类别(0-9),并且正在使用“一对一”方法。在这种情况下,decision_function_shape
将为 (10*(10-1)/2) = 45。
决策函数将是一个 45 行的矩阵,每一行对应一对类别之间的决策函数值。例如,第 1 行可能包含 0 和 1 之间的决策函数值,而第 21 行可能包含 5 和 6 之间的决策函数值。
结论
decision_function_shape
参数是 SVC 在处理多分类问题时的一个重要考虑因素。通过理解不同的形状及其应用,我们可以优化分类模型的性能。