一对一多类

本文介绍如何在 Azure 机器学习设计器中使用“一对一多类”组件。 目的是创建一个分类模型,该模型可以使用“一对一”方法对多类分类进行预测。

此组件可用于创建能够预测三个或多个可能结果的模型,具体结果取决于连续或分类预测器变量。 使用此方法还能对需要多个输出类的问题使用二元分类方法。

有关一对一模型的详细信息

某些分类算法允许在设计中使用两个以上的类。 其他分类算法会将可能的结果限制为两个值中的一个(二进制或双类模型)。 但即使是二元分类算法也可以通过各种策略应用于多类分类任务。

此组件实现了一对一方法,在此方法中,将为每个类对创建一个二进制模型。 在预测时,选择得票最多的类。 由于它需要适应 n_classes * (n_classes - 1) / 2 分类器,因此该方法通常比“一对多”慢,这是因为它的 O(n_classes^2) 复杂性。 但是,此方法可能有利于算法,如内核算法,该算法在用于 n_samples 时无法很好的进行缩放。 这是因为每个单独的学习问题只涉及一小部分数据,而使用“一对多”时,会将整个数据集使用 n_classes 次。

从本质上讲,此组件将创建单个模型的系综,然后合并结果,以创建用于预测所有类的单个模型。 任何二元分类器均可用作一对一模型的基础。

例如,假设你配置一个双类支持向量机模型,并将其作为输入提供给“一对一多类”组件。 组件会为输出类的所有成员创建双类支持向量机模型。 然后它将应用一对一方法来合并所有类的结果。

组件使用 sklearn 的 OneVsOneClassifier,你可以在此处了解更多详细信息。

如何配置“一对一”多类分类分类器

此组件创建二元分类模型的系综来分析多个类。 若要使用此组件,需要先配置并训练二元分类模型。

将二进制模型连接到“一对一多类”组件。 然后通过使用带标记的训练数据集的训练模型来训练这组模型。

组合模型时,“一对一”多类分类会创建多个二元分类模型,为每个类优化算法,然后合并这些模型。 即使训练数据集可能有多个类值,组件也执行这些任务。

  1. 将“一对一多类”组件添加到设计器中的管道。 可以在“机器学习 - 初始化”下的“分类”类别中找到此组件。

    “一对一”多类分类分类器没有自己的可配置参数。 任何自定义操作都必须在作为输入提供的二元分类模型中完成。

  2. 将二元分类模型添加到管道,并配置该模型。 例如,可以使用双类支持向量机双类提升决策树

  3. 训练模型组件添加到管道。 连接作为“一对一”多类分类的输出的未训练分类器。

  4. 训练模型的其他输入上,连接包含多个类值的带标记的训练数据集。

  5. 提交管道。

结果

训练完成后,可以使用模型进行多类分类预测。

另外,还可以将未训练的分类器传递给交叉验证模型,以针对带标记的验证数据集进行交叉验证。

后续步骤

请参阅 Azure 机器学习可用的组件集