c# - funciones - redes neuronales ejemplos
Ejemplo de red neuronal para clasificar funciones multidimensionales en dos conjuntos (1)
Estoy buscando un buen ejemplo de código fuente de una red neuronal supervisada que acepte más de dos características (a diferencia de la mayoría de los ejemplos XY) y clasifique los datos en dos conjuntos. Por lo que he leído, ¿una Máquina de Vector de Soporte (SVM) podría ser una solución?
Todos los ejemplos de clasificación que he encontrado son bidimensionales. Aquí hay algunos:
- Peceptron de capa única
- SVM (Support Vector Machine) en CSharp
- SVM.NET : realmente agradable, pero la entrada sigue siendo bidimensional.
Intento distinguir los eventos raros de una cantidad de entradas que normalmente son estables. Las características son pares clave-valor donde el valor generalmente puede discretizarse como un número pequeño. Los datos de entrenamiento disponibles para la primera categoría son enormes, pero con pocos conjuntos de entrenamiento para la segunda categoría, si eso hace la diferencia.
Ejemplo de conjunto de entrenamiento
Categoría A
[2, 1, 0, 1, 4, 3] -> A
[1, 1, 2, 3, 3, 0] -> A
[0, 0, 1, 3, 2, 0] -> A
Categoría B
[0, 4, 4, 4, 4, 3] -> B
Ejemplo de clasificación
[1, 3, 4, 4, 4, 0] -> ??? (probably B)
Una calificación de confianza, ej. "85% seguro de B", sería útil para distinguir un umbral para un evento raro.
¿Es una red neuronal la mejor solución y hay bibliotecas .NET integradas?
En realidad, todas estas técnicas de aprendizaje automático tienen sus pros y sus contras. Al usar NN (perceptrón de capa única), debe considerar si tiene suficientes datos de capacitación. Técnicamente hablando, debe ser capaz de cubrir todas las celdas dentro de las dimensiones para tener un buen resultado.
Por otro lado, SVM intenta encontrar un borde que separe sus puntos de datos, de modo que si tiene espacios en las áreas que no están cerca de este borde, está bien.
Hay 5-6 clasificadores alrededor de +/- impulsar y para ser honesto, parece que la mayoría del tiempo el tipo de clasificador se elige subjetivamente. Por otro lado, algunas personas usan clasificadores múltiples y comparan el resultado.
Con OpenCV, es muy fácil conectar un clasificador diferente para que esté en el buen camino. Utilicé OpenCV en C ++ con clasificadores NN para mi proyecto y el resultado fue muy bueno: