support significado machine for example dummies c# machine-learning svm accord.net

c# - significado - Encuentra funciones correctas en multiclass svm sin PCA



support vector machine regression (2)

En una SVM multi-clase que usa la estrategia de uno contra uno, el problema se divide en un conjunto de problemas binarios más pequeños. Por ejemplo, si tiene tres clases posibles, el uso de la estrategia de uno contra uno requiere la creación de (n (n-1)) / n clasificadores binarios. En tu ejemplo, esto sería

(n(n-1))/n = (3(3-1))/2 = (3*2)/2 = 3

Cada uno de ellos estará especializado en los siguientes problemas:

  • Distinguiendo entre clase 1 y clase 2 (llamémoslo svm a ).
  • Distinguiendo entre clase 1 y clase 3 (llamémoslo svm b )
  • Distinguiendo entre clase 2 y clase 3 (llamémoslo svm c )

Ahora, veo que en realidad has hecho varias preguntas en tu publicación original, por lo que las preguntaré por separado. Primero aclararé cómo funciona el proceso de decisión, y luego contaré cómo podría detectar qué características son las más importantes.

Como mencionó Accord.NET, este marco puede estar computando la decisión de varias clases de dos maneras. El predeterminado es usar un Gráfico acíclico dirigido por decisión (DDAG), que no es más que la eliminación secuencial de clases. La otra forma es resolviendo todos los problemas binarios y tomando la clase que ganó la mayor parte del tiempo. Puede configurarlos en el momento en que está clasificando una nueva muestra estableciendo el parámetro de método del método Compute de la SVM .

Como la versión ganadora de la mayoría de las veces es fácil de entender, explicaré un poco más sobre el enfoque predeterminado, el DDAG.

Decisión utilizando gráficos acíclicos dirigidos

En este algoritmo, probamos cada uno de los SVM y eliminamos la clase que perdió en cada ronda. Entonces, por ejemplo, el algoritmo comienza con todas las clases posibles:

Candidate classes: [1, 2, 3]

Ahora le pide a svm a que clasifique x, decide para la clase 2. Por lo tanto, la clase 1 se perdió y ya no se considera en pruebas posteriores:

Candidate classes: [2, 3]

Ahora le pide a svm b que clasifique x, decide para la clase 2. Por lo tanto, la clase 3 se perdió y ya no se considera en pruebas adicionales:

Candidate classes: [2]

La respuesta final es por lo tanto 2.

Detectar qué características son las más útiles

Ahora, dado que el SVM uno-a-uno se descompone en (n (n-1) / 2) problemas binarios, la forma más directa de analizar qué características son las más importantes es considerar cada problema binario por separado. Desafortunadamente, puede ser difícil determinar globalmente cuáles son los más importantes para todo el problema, pero será posible detectar cuáles son los más importantes para discriminar entre la clase 1 y 2, o clase 1 y 3, o clase 2 y 3. .

Sin embargo, aquí puedo ofrecer una sugerencia si estás usando DDAG. Con los DDAG, es posible extraer la ruta de decisión que conduce a una decisión particular . Esto significa que es posible estimar cuántas veces se utilizó cada una de las máquinas binarias al clasificar su base de datos completa. Si puede estimar la importancia de una característica para cada una de las máquinas binarias y calcular cuántas veces se utiliza una máquina durante el proceso de decisión en su base de datos, quizás podría tomar su suma ponderada como un indicador de cuán útil es una característica en su proceso de decisión.

Por cierto, también podría estar interesado en probar una de las Máquinas de vectores de soporte de regresión logística utilizando la regularización L1 con una C alta para realizar la selección de características dispersas:

// Create a new linear machine var svm = new SupportVectorMachine(inputs: 2); // Creates a new instance of the sparse logistic learning algorithm var smo = new ProbabilisticCoordinateDescent(svm, inputs, outputs) { // Set learning parameters Complexity = 100, };

Estoy clasificando usuarios con un multiclass svm (one-against-on), 3 clases. En binario, podría trazar la distribución del peso de cada característica en la ecuación de hiperplan para diferentes conjuntos de entrenamiento. En este caso, realmente no necesito una PCA para ver la estabilidad del hiperplan y la importancia relativa de las características (rejuvenecido centrado por cierto). ¿Cuál sería la alternativa en multiclass svm, ya que para cada conjunto de entrenamiento tienes 3 clasificadores y eliges una clase de acuerdo con el resultado de los tres clasificadores (¿qué es lo que ya es? La clase que aparece el número máximo de veces o el discriminante mayor ? lo que realmente no importa aquí). Alguien tiene una idea.

Y si importa, estoy escribiendo en C # con Accord. Gracias !


No soy un experto en ML o SVM. Soy un autodidacta. Sin embargo, mi prototipo sobre-ejecutó algo de software comercial o académico similar en precisión, mientras que el tiempo de entrenamiento es de aproximadamente 2 horas en contraste de días y semanas (!) De algunos competidores.

Mi sistema de reconocimiento (patrones en biocélulas) utiliza el siguiente enfoque para seleccionar las mejores características:

1) Extraiga las características y calcule la media y la varianza para todas las clases 2) Seleccione esas características, donde los medios de las clases están más distanciados y las variaciones son mínimas. 3) Eliminar las características redundantes - aquellas que significan - histogramas sobre clases son similares

En mi prototipo estoy usando características paramétricas, por ejemplo, la función "círculo" con parámetros de diámetro, umbral, etc. La capacitación está controlada por scripts que definen qué funciones usar con rangos de argumentos. Entonces el software prueba todas las combinaciones posibles.

Para cierta optimización del tiempo de entrenamiento: el software comienza con 5 instancias por clase para extraer las características y aumenta el número cuando se cumple la 2ª condición.

Probablemente hay algunos nombres académicos para algunos de los pasos. Desafortunadamente no los conozco, he "inventado la rueda" yo mismo.