代码之家  ›  专栏  ›  技术社区  ›  sanity_overflow

在机器学习的多类分类中,“一对一”和“一对一”策略有什么区别?

  •  3
  • sanity_overflow  · 技术社区  · 6 年前

    我查看了维基百科页面,但找不到它们之间的区别,两者似乎都在将多个类转换为多个线性分类器。

    2 回复  |  直到 6 年前
        1
  •  4
  •   mahesh    6 年前

    这是关于为培训拆分数据的策略。假设有N个C类的数据样本。

    一对一:在这里,您一次选择两个类,并使用来自 只选了两门课 (此步骤中忽略其他示例)。对所有两个类组合重复此操作。所以你最终得到了N(N-1)/2个分类器。在测试时,你可以在这些分类器中进行投票。

    一对一:在这里,你选择一个类,训练一个两类分类器,一边是所选类的样本,另一边是所有其他样本。因此,最终得到N个分类器。测试时,只需将样本分类为属于N个分类器中得分最高的类。

    例如,假设我们有一个3类问题,类标签为c1、c2和c3。让样本为x1,x2。。。。让分类器为f1,f2。。。。 假设你的训练数据是{x1,c1},{x2,c1},{x3,c2},{x4,c1},{x5,c2},{x6,c3},{x7,c3}。 然后:

    一对一: f1:用子集{x1,c1},{x2,c1},{x3,c2},{x4,c1},{x5,c2}训练c1和c2类 f2:针对c2和c3类,使用子集{x3,c2},{x5,c2},{x6,c3},{x7,c3}进行训练。 f3:用子集{x1,c1},{x2,c1},{x4,c1},{x6,c3},{x7,c3}训练c2和c3类。

    一对一: f1:用{x1,c1},{x2,c1},{x3,~c1},{x4,c1},{x5,~c1},{x6,~c1},{x7,~c1}训练c1类和其他(~c1,即不是c1)。 f2:用{x1,~c2},{x2,~c2},{x3,c2},{x4,~c2},{x5,c2},{x6,~c2},{x7,~c2}训练c2类和其他(~c2,即不是c2)。 f3:用{x1,~c3},{x2,~c3},{x3,~c3},{x4,~c3},{x5,~c3},{x6,c3},{x7,c3}训练c3类和其他(~c3,即不是c3)。

        2
  •  0
  •   Shivam B    2 年前

    就像one vs rest一样,one vs one将多类分类数据集拆分为二进制分类问题。与“一对一”方法不同,“一对一”方法将每个类的数据集拆分为一个二进制数据集,而“一对一”方法将每个类的数据集拆分为一个数据集,而不是其他所有类。

    根据eg,我们假设我们有3个类别A,B,C

    在one vs rest技术中,我们制作了一个数据集,比如a和rest all,B和rest all,C和rest all。

    对于一对一,我们可以做出一个不同的组合,就像这样 A和B A和C B和C