永发信息网

one-versus-rest和one-versus-one的不同

答案:2  悬赏:0  手机版
解决时间 2021-02-26 17:39
  • 提问者网友:遮云壑
  • 2021-02-26 12:05
one-versus-rest和one-versus-one的不同
最佳答案
  • 五星知识达人网友:平生事
  • 2021-02-26 12:39
one-versus-rest和one-versus-one的不同
  SVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器。
  目前,构造SVM多类分类器的方法主要有两类:一类是直接法,直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多类分类。这种方法看似简单,但其计算复杂度比较高,实现起来比较困难,只适合用于小型问题中;另一类是间接法,主要是通过组合多个二分类器来实现多分类器的构造,常见的方法有one-against-one和one-against-all两种。
  a.一对多法(one-versus-rest,简称1-v-r SVMs, OVR SVMs)。训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。
  假如我有四类要划分(也就是4个Label),它们是A、B、C、D。于是我在抽取训练集的时候,分别抽取A所对应的向量作为正集,B,C,D所对应的向量作为负集;B所对应的向量作为正集,A,C,D所对应的向量作为负集;C所对应的向量作为正集, A,B,D所对应的向量作为负集;D所对应的向量作为正集,A,B,C所对应的向量作为负集,这四个训练集分别进行训练,然后的得到四个训练结果文件,在测试的时候,把对应的测试向量分别利用这四个训练结果文件进行测试,最后每个测试都有一个结果f1(x),f2(x),f3(x),f4(x).于是最终的结果便是这四个值中最大的一个。
  p.s.: 这种方法有种缺陷,因为训练集是1:M,这种情况下存在biased.因而不是很实用.
  b.一对一法(one-versus-one,简称1-v-1 SVMs, OVO SVMs, pairwise)。其做法是在任意两类样本之间设计一个SVM,因此k个类别的样本就需要设计k(k-1)/2个SVM。当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。Libsvm中的多类分类就是根据这个方法实现的。
全部回答
  • 1楼网友:西岸风
  • 2021-02-26 12:54
svm算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器。 目前,构造svm多类分类器的方法主要有两类:一类是直接法,直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多类分类。这种方法看似简单,但其计算复杂度比较高,实现起来比较困难,只适合用于小型问题中;另一类是间接法,主要是通过组合多个二分类器来实现多分类器的构造,常见的方法有one-against-one和one-against-all两种。 a.一对多法(one-versus-rest,简称1-v-r svms, ovr svms)。训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个svm。分类时将未知样本分类为具有最大分类函数值的那类。 假如我有四类要划分(也就是4个label),它们是a、b、c、d。于是我在抽取训练集的时候,分别抽取a所对应的向量作为正集,b,c,d所对应的向量作为负集;b所对应的向量作为正集,a,c,d所对应的向量作为负集;c所对应的向量作为正集, a,b,d所对应的向量作为负集;d所对应的向量作为正集,a,b,c所对应的向量作为负集,这四个训练集分别进行训练,然后的得到四个训练结果文件,在测试的时候,把对应的测试向量分别利用这四个训练结果文件进行测试,最后每个测试都有一个结果f1(x),f2(x),f3(x),f4(x).于是最终的结果便是这四个值中最大的一个。 p.s.: 这种方法有种缺陷,因为训练集是1:m,这种情况下存在biased.因而不是很实用. b.一对一法(one-versus-one,简称1-v-1 svms, ovo svms, pairwise)。其做法是在任意两类样本之间设计一个svm,因此k个类别的样本就需要设计k(k-1)/2个svm。当对一个未知样本进行分类时,最后得票最多的类别即为该未知样本的类别。libsvm中的多类分类就是根据这个方法实现的。 投票是这样进行的. a=b=c=d=0; (a, b)-classifier 如果是a win,则a=a+1;otherwise,b=b+1; (a,c)-classifer 如果是a win,则a=a+1;otherwise, c=c+1; ... (c,d)-classifer 如果是a win,则c=c+1;otherwise,d=d+1; the decision is the max(a,b,c,d) p.s.: 这种方法虽然好,但是当类别很多的时候,model的个数是n*(n-1)/2,代价还是相当大的. c.层次支持向量机(h-svms)。层次分类法首先将所有类别分成两个子类,再将子类进一步划分成两个次级子类,如此循环,直到得到一个单独的类别为止。 d.其他多类分类方法。除了以上几种方法外,还有有向无环图svm(directed acyclic graph svms,简称dag-svms)和对类别进行二进制编码的纠错编码svms。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯