Multi-class One vs All 和 Multilabel Classification 有什么区别?

数据挖掘 机器学习 Python scikit-学习
2021-10-09 15:48:52

尽管 Multi-class 与 Multi-label 分类不同,但在 Multi-class 中添加 One vs All 有什么区别。

编辑 1: http ://scikit-learn.org/stable/modules/multiclass.html#multilabel-learning

在此链接中,它在 Multiclass 的项目符号下提到支持的分类器为 One-Vs-All 和 Support Multilabel 的部分令人困惑。

3个回答

在多类分类中,每个类都是互斥的,但在多标签分类中,每个类基本上代表不同的二元分类任务。

一个例子。

类:可能包含狗、猫或青蛙的图像。每个图像仅包含一种动物。

对比

多标签:基于海报图像的电影类型分类。您有电影的海报图像,并想确定该电影是戏剧、动作片还是惊悚片等。一部电影可能属于这些类型中的多个。

因此,为了回答您的问题,多标签分类中的一对多策略基本上将 k 个二元分类任务分开。因此,使用上面的示例,您将有 k 个二进制分类器,其中每个分类器基本上代表每种类型。所以你会有一个用于戏剧的二元分类器,一个用于动作,一个用于惊悚等。

假设您有 K 个类别,您的多标签分类模型输出输入属于每个 K 个类别的概率:

p(X)=(p1(X)=p(是的=ķ|X),...,pķ(X)=p(是的=ķ|X))

另一种方法是训练 K 个二元分类器并将它们专门用于识别一个类,因此一个仅识别类 k 的分类器,其输出将是一个唯一概率:

qķ(X)=(q1ķ(X)=p(是的=1|X))

该方法在以下方面有所不同:

  • 一对一你训练 K 个分类器,在多标签方法中你训练 1 个分类器。

  • 当您看到第 k 类的标签时,您将拥有 K 个不同的训练数据集,一个与所有分类器作为带有标签的输入数据:“k”或“not k”。

您在 one vs all 方法中的最终分类结果是:

是的(X)=一个rG一个Xķ(qķ1(X))

在多类分类中,您可以训练一个分类器来预测一组可能的类中的类。

但是,您也可以为每个类训练一个二元分类器,其中每个分类器都经过训练以预测元素是否属于关联的类。在推理时,您使用所有二元分类器进行预测,然后将信息组合到一个预测中。这是多类一对全它允许将任何二进制分类算法转换为多类分类算法。