Hay muchos métodos de clasificación multiclase. Dos opciones clásicas, que no son específicas de SVM son:
-
Clasificación de uno a uno (OVA):
Suponga que tiene las clases A, B, C y D. En lugar de hacer una clasificación de cuatro vías, entrene cuatro clasificadores binarios: A vs. no-A, B vs. no-B, C vs. no-C y D vs. no-D. A continuación, elija la clase positiva que sea "mejor" (por ejemplo, la más alejada del margen en las cuatro ejecuciones). Si ninguna de las clasificaciones es positiva (es decir, todas son no-X), elija la clase "opuesta" a la peor (por ejemplo, la más cercana al margen).
-
Todos contra todos:
Entrenar todos los pares de clasificaciones posibles. Clasifica las clases según algún factor (por ejemplo, el número de veces que se han seleccionado) y elige la mejor.
Cuál es la mejor opción ha sido controvertida: Duan y Keerthi tener un estudio empírico que sugiera un método específico de todos contra todos, mientras que Rifkin y Klautau argumentan a favor de un esquema de "uno contra todos". Incluso hay esquemas en los que se aprenden códigos de corrección de errores que describen las etiquetas de clase, en lugar de las propias etiquetas.
Buena suerte.
Editar: Lo que realmente quieres, sobre todo para OVA, es la probabilidad posterior de cada clase. Para algunos métodos, como Naive Bayes, que es trivial para salir. Los SVMs típicamente no le dan probabilidades, pero hay maneras de calcularlas. Véase el artículo de John Platt de 1999 "Probabilistic Outputs for Support Vector Machines..."
0 votos
¿Qué hace la variable
classes
en el código? Parece que es inútil.0 votos
Si ha llegado a un resultado adecuado, por favor, comparta su código de multiclasificación aquí.