一类分类器与二元分类器

机器算法验证 分类
2022-04-06 21:45:38

当我们有两个 A、B 类时,我们可以使用一个分类器来训练 A 类样本并在 A 类、B 类样本上进行测试吗?

何时使用二元分类器和一类分类器?

我可以对任何类型的二进制类数据使用一类分类器吗?

  • 示例 1:故障和非故障机械数据。我可以实现一类分类器吗?

  • 示例 2:正面和负面情绪文本数据。我可以实现一类分类器吗?

2个回答

假设您正在尝试对故障和非故障机器数据执行两类分类,其中数据集中的每个示例都使用特征向量这可以如下所示完成:x=[x1 x2]T

在此处输入图像描述

此处,故障机械数据由橙色区域表示,非故障机械数据由蓝色区域表示。假设所讨论的机器很少有故障,因此有很多不同的非故障机械示例,但故障机械的示例很少。鉴于您已经对上面显示的数据进行了培训,您可能会观察到一个非故障机器的示例,但您将其误归类为故障:

在此处输入图像描述

同样,发生这种情况的原因是因为代表非故障机器的所有可能特征向量的集合太大了。不可能全部捕获并训练它们。您可能会争辩说您只需要收集更多数据并在此基础上进行训练,但您最终会做的是:

在此处输入图像描述

顺便说一句,这可以使用神经网络来完成,例如,绘制这些线的行为是判别建模背后的基本思想。

但是,当您可以像这样尝试绘制错误数据的形状时,为什么还要收集这么多数据并创建一个可以绘制所有这些线的非常复杂的模型呢?

在此处输入图像描述

在上图中,橙色区域是您收集的故障机器数据,而其余的特征空间被假定代表非故障机器。这是生成建模背后的基本思想,在这种情况下,您无需尝试绘制分割特征空间的线,而是尝试估计错误数据的分布以了解其外观。然后,给定一个新的测试向量,您需要做的就是测量错误数据的分布中心与这个新的测试向量之间的距离。如果该距离大于特定阈值,则测试向量被分类为无故障。否则,它被归类为故障。这也是执行异常检测的一种方式。xx

你可以,但你为什么要?通过在两个类上训练模型可以获得更多收益,以便您的模型可以从两个类中学习并更好地区分它们。想象一下,试图学习区分猫和狗,它会帮助你只看到猫的图像,然后尝试猜测哪个图像是狗,而你从未见过狗吗?

仅当您在此特定时间点没有来自其他类的任何示例时,使用一类分类器才有意义。或者如果“其他”类可以由许多未知的类组成,这些类不能轻易地归类为一个官方类。例如。在进行异常检测时,当您只有几个非常奇怪的情况时,这可能是许多非常不同的原因的原因。