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: