分类任务的种类

本文最后更新于:2022年5月21日 凌晨

分类任务是机器学习中的常见基本任务,而分类本身也存在着多种类别,本文对相关内容进行整理。

分类的维度

  • 分类任务是机器学习中的基础任务,是指针对输入数据中的给定示例预测其类别标签的预测性建模问题,即为输入数据分配已知的标签。
  • 对于分类任务主要有两个维度:标签类别
  • 以水果分类为例:

标签

标签为某个分类域,定义一组标签需要同时确定标签内的类别数量,分类时在标签内的类别是互斥但必须选择一个的

例如:

水果分类中的: 颜色水果种类 为标签

类别

类别为标签内的子项,定义一组标签需要其中定义若干(至少为2)个类别,类别之间互斥,分类时必须选择一个

例如:

水果分类中的:

颜色中: 黄色绿色红色 … 等颜色均为类别

水果中: 苹果葡萄香蕉 … 等种类均为类别

分类的种类

在确定了维度后,根据维度数量我们可以对常见的分类任务区分四个种类

Category = 2 Category > 2
Label = 1 Binary Classification Multi-Class Classification
Label > 1 Multi-Label Classification Multi-Task Classification

二分类 (Binary Classification)

  • 二分类任务,从贴标签的角度可以理解为为数据分类,确定是否贴当前这个标签;

  • 也可以从分类的角度,有两个类别,必须确定数据属于哪一种

  • 根据二分类任务的结果可以画出统计结果混淆矩阵

  • 神经网络中常用 Sigmoid 激活函数生成结果
  • 损失函数常用 Binary Cross Entropy Loss
  • 可以直接绘制 ROC 曲线、 AP 曲线等来评估模型性能
  • 存在虚警、漏警概率

多分类 (Multi-Class Classification)

  • 多分类的目标是将数据划分到事先确定好的一个类别种类

    注意:多分类在训练模型之前,必须确定所有的类别

  • 多分类任务已经脱离了是否有标签的范畴,已经不是 “有” 或者 “没有”这1 bit 信息可以表示的了,类别数越多分类结果代表的信息量越大,相应分类任务应该会更加趋于困难

  • 多分类由于结果类别唯一确定,GT类别唯一确定,因此分类结果可以绘制漂亮的混淆矩阵:

  • 神经网络训练多分类时一般使用 Softmax 处理最终一层特征,得到和为 1 的概率输出
  • 损失函数一般使用 多分类的 Cross Entropy Loss
  • 不适合直接使用ROC、AP等评估标准,将多分类结果综合后可以得到各个类别的 AP、ROC 曲线
  • 没有虚警、漏警的概念,分类正确率是常用的评价指标

多标签 (Multi-Label Classification)

  • 多标签分类可以理解为多个二分类任务的结合,模型需要为数据做出多个“是\否”的判断

  • 多标签数据难以绘制多类别混淆矩阵,但可以绘制多个二分类混淆矩阵

    有的刚接触多标签、多分类的同学可能会尝试为多标签分类任务绘制混淆矩阵,但是尝试后经常会发现错误的类别不知道该画到哪个格子里,漏检的数据很可能在矩阵中无处安放;

    想要尝试绘制混淆矩阵因为这些标签可能在含义上有一些多分类的性质,让我们想要套用多分类漂亮的评估方法;

    但事实上多标签与多分类存在本质上的不同,多标签的本质是多个独立的二分类任务,任务之间没有关联性,而混淆矩阵尝试寻找的正是类别之间的关联;在一个多分类的类别组里可能相关,多标签则不然。

  • 在神经网络训练多标签网络时,激活函数类似二分类,使用 Sigmoid 函数输出 L 个结果

  • infer 时,模型开发人员需要为每组标签确定阈值,不同标签之间的分值没有可比性

  • 损失函数一般使用 L 个 Binary Cross Entropy Loss

  • 可以用多个 ROC、AP曲线评估不同标签上的分类性能

多任务 (Multi-Task Classification)

  • 多任务为多分类与多标签分类的结合,任务中有多于1个分类需求,至少有一个分类任务是多分类
  • 任务比较复杂,但是可以拆解为多个二分类\多分类进行评估
  • 神经网络实现时常用多个分类头,以适应不同的任务
  • 损失函数与激活函数与二分类、多分类相同

参考资料