Есть много методов для мультиклассовой классификации. Два классических варианта, которые не являются специфичными для SVM:
Классификация "все против всех" (OVA):
Предположим, у вас есть классы A, B, C и D. Вместо четырехсторонней классификации вы можете обучить четырем двоичным классификаторам: A против not-A, B против not-B , C против не-C, и D против не-D. Затем выберите положительный класс, который является «лучшим» (например, дальше от края на всех четырех участках). Если ни одна из классификаций не является положительной (т. Е. Все они не-X), выберите «противоположный» класс, который является наихудшим (например, ближайшим к краю).
Все-против-всего:
Обучите все возможные пары классификаций. Оцените классы по некоторому коэффициенту (например, количество выбранных раз) и выберите лучший.
То, что работает лучше всего, было спорным: у
Дуана и Керти есть эмпирическое исследование, которое предлагает конкретный метод «все против всех», в то время как Рифкин и Клаутау приводят доводы в пользу схемы «один против всех». Существуют даже схемы, в которых вместо кодов самих меток изучаются коды с исправлением ошибок, описывающие метки классов.
Удачи!
Изменить: что вы действительно хотите, особенно для OVA, это апостериорная вероятность каждого класса. Для некоторых методов, таких как Наивный Байес, это тривиально. SVM обычно не дают вам вероятности, но есть способы их вычислить. См. Статью Джона Платта 1999 года "Вероятностные результаты для машин опорных векторов ..."
classes
в коде? Это кажется бесполезным.