Cómo actualizar un modelo SVM con nuevos datos.

Tengo dos conjuntos de datos con diferente tamaño.

1) El conjunto de datos 1 es de 4500 muestras (esbozos) de altas dimensiones.

2) El conjunto de datos 2 es con muestras de baja dimensión 1000 (datos reales). Supongo que “ambos conjuntos de datos tienen la misma distribución”

Quiero entrenar un modelo SVM no lineal utilizando sklearn en el primer conjunto de datos (como sklearn ), y luego deseo actualizar el modelo en una parte del segundo conjunto de datos (para que se ajuste al modelo). ¿Cómo puedo desarrollar un tipo de actualización en sklearn. ¿Cómo puedo actualizar un modelo SVM?

    En sklearn, puede hacer esto solo para kernel lineal y usar SGDClassifier (con la selección SGDClassifier de términos de pérdida / penalización, la pérdida debe ser de bisagra y penalización L2). El aprendizaje incremental se admite a través de métodos partial_fit , y esto no se implementa ni para SVC ni para LinearSVC .

    Desafortunadamente, en la práctica, ajustar SVM de manera incremental para conjuntos de datos tan pequeños es bastante inútil. SVM tiene una solución global fácil de obtener, por lo que no necesita un entrenamiento previo de ninguna forma , de hecho, no debería importar en absoluto , si está pensando en un entrenamiento previo en el sentido de la neural network. Si se implementa correctamente, SVM debe olvidar por completo el conjunto de datos anterior. ¿Por qué no aprender sobre todos los datos en una sola pasada? Esto es lo que se supone que hace SVM. A menos que esté trabajando con alguna modificación no convexa de la SVM (entonces el entrenamiento previo tiene sentido).

    Para resumir:

    • Desde el punto de vista teórico y práctico, no hay ningún punto en el entrenamiento previo de SVM. Puede aprender solo en el segundo conjunto de datos, o en ambos al mismo tiempo. La formación previa solo es razonable para los métodos que sufren de mínimos locales (o convergencias difíciles de cualquier tipo), por lo tanto, es necesario comenzar cerca de la solución real para poder encontrar un modelo razonable (como las redes neuronales). SVM no es uno de ellos .
    • Puede usar el ajuste incremental (aunque en Sklearn es muy limitado) por razones de eficiencia, pero para un conjunto de datos tan pequeño, se ajustará perfectamente al conjunto de datos completo a la vez.