返回

SVC 处理多分类问题:重要的 `decision_function_shape` 参数

人工智能

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 在处理多分类问题时的一个重要考虑因素。通过理解不同的形状及其应用,我们可以优化分类模型的性能。

补充信息