38 votos

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

Tengo un conjunto de datos en flujo, los ejemplos están disponibles de uno en uno. Necesito hacer una clasificación de varias clases con ellos. En cuanto introduzco un ejemplo de entrenamiento en el proceso de aprendizaje, tengo que descartar el ejemplo. Al mismo tiempo, también estoy utilizando el último modelo para realizar la predicción sobre los datos no etiquetados.

Por lo que sé, una red neuronal es capaz de realizar un aprendizaje en flujo alimentando los ejemplos de uno en uno y realizando la propagación hacia delante y la propogación hacia atrás en el ejemplo.

¿Puede una SVM realizar el aprendizaje en flujo de un ejemplo a la vez y descartar el ejemplo directamente?

23voto

Bruno Brant Puntos 177

El entorno de streaming en el aprendizaje automático se denomina "aprendizaje en línea". No existe una máquina de vectores de apoyo exacta en el entorno en línea (ya que la definición de la función objetivo es inherente al entorno por lotes). Probablemente la generalización más directa de la SVM al entorno 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 los datos como $(\mathbf{x},y)\in\mathbb{R}^d\times [k]$ pares con puntos de consulta $\mathbf{x}\in \mathbb{R}$ donde $k$ es el número de etiquetas. El algoritmo mantiene una matriz de pesos $W_t\in \mathbb{R}^{k\times d}$ en la iteración $t$ los algoritmos reciben un punto de datos $\mathbf{x}_t$ y luego da las puntuaciones previstas $\hat{\mathbf{y}}_t=W\mathbf{x}_t$ para cada una de las etiquetas y predice la etiqueta con mayor puntuación como la verdadera. Si la predicción es errónea, el algoritmo realiza el menor cambio en $W_t$ de manera que se evite ese error en el futuro. El cambio más pequeño se define aquí en términos de la norma de Frobenius.

11voto

RexE Puntos 181

Siempre me ha parecido 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 (por no mencionar que las actualizaciones implícitas pueden ser mucho más lentas que las explícitas, a menos que se disponga de una solución de forma cerrada para la actualización implícita).

Actualizaciones de la importancia del peso en línea es un ejemplo de un algoritmo de actualización explícito de última generación que es más sencillo, más rápido y más flexible (admite múltiples funciones de pérdida, múltiples penalizaciones, aprendizaje sensible a los costes, etc.) que sus homólogos implícitos. Sin embargo, el artículo trata sólo de modelos lineales (el 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 multiclase, un enfoque es utilizar la funcionalidad de "reducciones" de conejo vowpal (construido sobre el enfoque del papel) que no está bien documentado por desgracia.

8voto

Tony Eichelberger Puntos 1586

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

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

6voto

herohuyongtao Puntos 121

Consulte el documento Aprendizaje incremental, adaptación y optimización de SVM que propuso una SVM en línea para la clasificación binaria.

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

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

Volviendo a su pregunta, la respuesta es obviamente SI para el aprendizaje de la corriente un ejemplo a la vez. Y el código también puede gestionar el desaprendizaje (descarte) de un ejemplo, es decir, la estimación exacta y aproximada del error de exclusión (LOO): la estimación exacta del error LOO puede calcularse de forma eficiente desaprendiendo exactamente un ejemplo a la vez y probando el clasificador en el ejemplo.

0voto

Sean B. Durkin Puntos 7723

Aprendizaje en línea con Kernels analiza el aprendizaje en línea en entornos de núcleos generales.

Extracto del resumen -

" Los algoritmos basados en núcleos, como las máquinas de vectores de soporte, han logrado un éxito considerable en varios problemas en el entorno de lotes, donde todos los datos de entrenamiento están disponibles por adelantado. Las máquinas de vectores de soporte combinan el llamado truco del kernel con la idea del gran margen. Estos métodos se han utilizado poco en un entorno en línea adecuado para aplicaciones en tiempo real. En este trabajo consideramos el aprendizaje en línea en un espacio de Hilbert de núcleos reproductores. Considerando el descenso de gradiente estocástico clásico dentro de un espacio de características, y el uso de algunos trucos sencillos, 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. "

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X