如何在R中使用e1071包的'svm'进行多类分类

时间:2014-02-25 09:30:26

标签: r classification svm libsvm

我想使用svm包的e1071函数执行多类分类。但是从我从svm的文档中了解到的,它只能执行二进制分类。 vignettes文档告诉它多类分类:“为了允许多类分类,libsvm通过拟合所有二元子分类器并通过投票机制找到正确的类来使用一对一技术”。
我还不明白的是,我们是否可以在R中使用svm e1071执行多类分类?如果是,请解释我们如何在iris数据集上执行此操作。

2 个答案:

答案 0 :(得分:21)

虹膜数据集包含三个类别标签:“Iris setosa”,“Iris virginica”和“Iris versicolor”。要使用svm采用平衡的一对一分类策略,您可以训练三个二元分类器:

第一个分类器的训练集仅包含“Iris setosa”和“Iris virginica”实例。第二个分类器的训练集仅包含“Iris setosa”和“Iris versicolor”实例。第三个分类器的训练集 - 我想现在你已经知道了 - 只包含“Iris virginica”和“Iris versicolor”实例。

要对未知实例进行分类,请应用所有三个分类器。然后,一个简单的投票策略可以选择最频繁分配的类别标签,更复杂的投票策略也可以考虑每个指定的类别标签的svm置信度分数。

编辑(此原则开箱即用svm):

# install.packages( 'e1071' )
library( 'e1071' )
data( iris )
model <- svm( iris$Species~., iris )
res <- predict( model, newdata=iris )

答案 1 :(得分:1)

R文件说&#34;对于k级的多类分类,k> 2,libsvm使用'一对一'方法,其中k(k-1)/ 2个二进制分类器被训练;通过投票方案找到合适的班级。&#34;