补充:二分类器实现多分类 --- 一对一与一对多策略

发布于:2024-06-30 ⋅ 阅读:(12) ⋅ 点赞:(0)


前言

我在大三刚接触到机器学习课程的时候,回归问题很自然就能跨过这个坎。但在分类这个问题上,遇到的疑问一个接一个,本博客就是为了解答我本科学习期间的一个二分类器的疑问所作出的解答。

刚开始学习机器学习时,我们学习的最简单的例子就是二分类的案例。这也就导致了我们学习了很多的二分类器,例如逻辑回归二分类器、支持向量机二分类器等等。当时我就一个疑问,那不是二分类问题怎么办,那这些二分类器就显得很作用受限,后来随着知识量的增多。我了解到这个问题有两种解决方案:
(1)用softmax回归进行多分类(其实是逻辑回归的推广)
该方法本质上是将二分类器 ----> 推广为 多分类器

(2)一对多(One-vs-Rest, OvR)或一对全(One-vs-All, OvA)
这种本质上训练多个二分类器组合进行多分类的方法我一直不明白其中的具体原理是什么,下面本博客就主要是这种特殊的多分类技术的详细说明 ---- 顺便说一下,在我写这篇博客的时候,以前的疑问自然就已经解决了才会开始写;所以读者不必担心看不懂。其实我当成为了这个问题找了一些网上资料,但都不是很满意,都写的很模糊,今天在这里给这种技术做一个详细的说明。
【注】:本文会以鸢尾花的多分类数据集用SVM二分类器进行演示。

支持向量机(Support Vector Machine, SVM)本质上是一个二分类模型,但是在实际应用中,往往需要处理多分类问题。为了解决多分类问题,可以将多个二分类SVM组合在一起。常用的两种策略是一下两种:

一、一对多(One-vs-Rest, OvR)

1 理论

这种方法也称为“二分之一”法。基本思路是将一个多分类问题拆解成多个二分类问题。具体步骤如下:

  • 假设有 K K K个类别。
  • 对于每个类别 k k k,训练一个二分类SVM来区分类别 k k k 和其他 K − 1 K-1 K1 个类别。即,每个SVM的目标是将该类别的数据点与所有其他类别的数据点分开。并规定 k k k类为正类,其他 K − 1 K-1 K1 个类别为负类。
  • 对于每个类别 k k k,标记为1,如果是该类别的数据点,否则标记为-1。
  • 最终,训练 K K K个二分类SVM。

2 决策原则(这里给出的是SVM的,其他的二分类器也类似)

在预测时,将输入数据点输入到所有 K K K 个分类器中,选择得分最高的分类器对应的类别作为最终预测结果。
这句话怎么理解,这个得分究竟怎么计算的,我一直有一个疑惑,没关系,下面给出详细解释:
得分最高分类器的理解:
在“一对多”(One-vs-Rest, OvR)策略中,“得分最高的分类器”是指在预测过程中,将输入数据点送入每个分类器后,选择输出得分最高的那个分类器对应的类别作为最终的预测结果。为了更好地理解这一过程,我们可以深入探讨以下几个关键点:

(1) 一对多策略的分类器得分
在一对多策略中,对于一个 K K K类问题,我们会训练 K K K个二分类支持向量机(SVM)。每个SVM k k k的任务是区分类别 k k k 和其他所有类别。训练过程中,类别 k k k的数据点被标记为正类(+1),而其他类别的数据点被标记为负类(-1)。
每个分类器在预测时会计算一个决策函数值或得分,表示该数据点属于正类的程度。这个得分可以理解为到分类平面的距离(考虑符号)。

(2) 决策函数值的含义
对于SVM,决策函数 f ( x ) f(x) f(x) 的值可以表示输入数据点 x x x 到分类超平面的距离。通常,正的得分表示数据点更接近于正类,负的得分表示更接近于负类。决策函数的值越大,模型越自信该数据点属于正类。
例如,对于一个数据点 x x x,SVM的决策函数值 f k ( x ) f_k(x) fk(x)可以用来表示数据点 x x


网站公告

今日签到

点亮在社区的每一天
去签到