Я хочу выполнить классификацию нескольких классов, используя функцию svm
пакета e1071
. Но из того, что я узнал из документации svm
, он может выполнять только двоичную классификацию. Документ vignettes сообщает об этом для классификации по нескольким классам: "Чтобы разрешить многоклассовое классифицирование, libsvm
использует метод" один против одного ", устанавливая все двоичные подклассы и находим правильный класс механизмом голосования". < ш > Что я до сих пор не понимаю, так это, если мы можем выполнить классификацию с несколькими классами с svm
of e1071
в R? Если да, пожалуйста, объясните, как мы можем сделать это с помощью набора данных iris
.
Как выполнить классификацию нескольких классов, используя 'svm' пакета e1071 в R
Ответ 1
Набор диафрагмы содержит три метки класса: "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 )
Ответ 2
R-документ гласит, что "для многоклассовой классификации с k уровнями k > 2 libsvm использует метод" один против одного ", в котором обучаются бинарные классификаторы k (k-1)/2, соответствующий класс определяется схемой голосования.