¿Puede SVM hacer streaming de aprendizaje un ejemplo a la vez?

33

Tengo un conjunto de datos de transmisión, los ejemplos están disponibles uno a la vez. Tendría que hacer una clasificación de clases múltiples en ellos. Tan pronto como introduje un ejemplo de capacitación en el proceso de aprendizaje, tengo que descartar el ejemplo. Al mismo tiempo, también estoy usando el último modelo para realizar predicciones sobre datos no etiquetados.

Hasta donde yo sé, una red neuronal es capaz de hacer un flujo de aprendizaje al alimentar ejemplos uno a la vez y realizar propagación hacia adelante y propagación hacia atrás en el ejemplo.

¿Puede un SVM realizar la transmisión de aprendizaje de un ejemplo a la vez y descartar el ejemplo inmediatamente?

siamii
fuente
2
La respuesta aceptada debe actualizarse. Parece que en este momento hay varias bibliotecas que admiten algoritmos de aprendizaje en línea SVM. Vowpal wabbit tiene una reducción para svm , otras alternativas son: scikit-learn, sofia-ml y el paquete kernlab de R tiene algunas opciones para el aprendizaje en línea.
marbel

Respuestas:

22

La configuración de transmisión en el aprendizaje automático se denomina "aprendizaje en línea". No existe una máquina de vectores de soporte exactos en la configuración en línea (ya que la definición de la función objetivo es inherentemente para la configuración por lotes). Probablemente la generalización más directa de la SVM a la configuración en línea son los algoritmos pasivo-agresivos. El código está aquí http://webee.technion.ac.il/people/koby/code-index.html y un documento asociado está aquí http://eprints.pascal-network.org/archive/00002147/01/CrammerDeKeShSi06. pdf

La idea básica es que uno recibe datos como pares con puntos de consulta xR donde k es el número de etiquetas. El algoritmo mantiene una matriz de ponderación W tR k × d en la iteración t Obra los algoritmos recieves un punto de datos x t y anota da entonces predichos y t = W x t(X,y)Rre×[k]XRkWtRk×retXty^t=WXtpara cada una de las etiquetas y predice la etiqueta con la puntuación más alta como la etiqueta verdadera. Si la predicción es incorrecta, entonces el algoritmo realiza el cambio más pequeño a modo que evitará ese error en el futuro. El cambio más pequeño se define aquí en términos de la norma Frobenius.Wt

Marcas
fuente
1
(+1) Bienvenido al sitio, Mark.
cardenal
11

Siempre he encontrado que el marco de actualizaciones implícitas (que incluye los algoritmos pasivo-agresivos mencionados en otra respuesta aquí) es innecesariamente más complejo que el marco de actualizaciones explícitas (sin mencionar que las actualizaciones implícitas pueden ser mucho más lentas que las explícitas a menos que La solución de forma cerrada para la actualización implícita está disponible).

Las actualizaciones en línea de importancia de peso son un ejemplo de un algoritmo de actualización explícito de vanguardia que es más simple, más rápido y más flexible (soporta múltiples funciones de pérdida, multas múltiples, aprendizaje sensible al costo, etc.) que sus contrapartes implícitas. Sin embargo, el documento trata con modelos lineales (svm lineal corresponde al caso de la función de pérdida de bisagra con penalización cuadrática)

Dado que necesita una clasificación de varias clases, un enfoque es utilizar la funcionalidad de "reducciones" de votepal wabbit (construida en la parte superior del enfoque del documento) que desafortunadamente no está bien documentada.

Yevgeny
fuente
8

LASVM es una de las variantes de aprendizaje en línea más populares de SVM.

Los SVM lineales también se pueden entrenar utilizando el descenso de gradiente estocástico, al igual que cualquier modelo lineal.

Fred Foo
fuente
Sólo para dejar las cosas claras, no cualquier modelo lineal puede ser entrenado usando SGD, uno tiene que asumir al menos una forma particular de la (pérdida de la función aditiva) objetivo
lejlot
6

Consulte el documento SVM Incremental Learning, Adaptation, and Optimization , que propuso un SVM en línea para la clasificación binaria.

El código del documento anterior se puede encontrar aquí . En el código, se presentan dos formas de capacitación en línea:

  1. entrenar el SVM de forma incremental en un ejemplo a la vez llamando svmtrain(), y
  2. realice un entrenamiento por lotes, incrementando todos los ejemplos de entrenamiento en la solución simultáneamente llamando svmtrain2().

Volviendo a su pregunta, la respuesta es obviamente para el aprendizaje continuo de un ejemplo a la vez. Y el código también puede manejar desaprender (descartar) un ejemplo, es decir, una estimación de error de omisión exacta y aproximada (LOO): la estimación exacta del error de LOO se puede calcular eficientemente desaprendiendo exactamente un ejemplo a la vez y probando el clasificador en el ejemplo.

herohuyongtao
fuente
(+1) ¡Bienvenido a nuestro sitio!
whuber
0

Aprendizaje en línea con Kernels analiza el aprendizaje en línea en la configuración general del kernel.

Extracto del resumen:

"Los algoritmos basados ​​en el núcleo, como las máquinas de vectores de soporte, han logrado un éxito considerable en varios problemas en la configuración de lotes, donde todos los datos de entrenamiento están disponibles de antemano. Las máquinas de vectores de soporte combinan el llamado truco del núcleo con la idea de gran margen. Ha habido poco uso de estos métodos en un entorno en línea adecuado para aplicaciones en tiempo real. En este artículo consideramos el aprendizaje en línea en un espacio de reproducción del núcleo de Hilbert. Al considerar el descenso de gradiente estocástico clásico dentro de un espacio de características, y el uso de algunos trucos directos , desarrollamos algoritmos simples y computacionalmente eficientes para una amplia gama de problemas, como la clasificación, la regresión y la detección de novedades " .

TenaliRaman
fuente