Como salvar un modelo para continuar entrenándolo


#1

Necesitaría saber cómo poder entrenar un modelo, es decir, tengo hoy un set de datos con el cual entreno a mi modelo, por ej basado en regresión lineal o random forest, y luego en algún otro momento, o día, quisiera poder seguir entrenando mi modelo con un set de datos nuevos… cosa de poder actualizar el modelo, y que aprenda de nuevos resultados.

Entonces, como hago por un lado para guardar el modelo y por el otro, como hago para continuar entrenando el mismo modelo?

Tendrás algún código de ejemplo que puedas compartir?


#2

h2o tiene esta funcionalidad, pero solo para algunos algoritmos y con ciertas restricciones.

Aquí puedes encontrar más información al respecto.

http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/checkpoint.html


#3

Me parece que hay un error conceptual, si el modelo pierde performance por cambio en valores de los datos, ejemplo datos que son afectados por inflación, quizás lo que te conviene es escalar los datos:

X′=X−Xmin/Xmax−Xmin

Para evitar con los datos numéricos, para evitar el tener que reentrenar por algo que te afecte de ese tipo.

Si igualmente los datos varían mucho, quizás hay algo que no está pudiendo generalizar bien el modelo.


#4

El workflow que uso es el siguiente:

# Creo modelo con los primeros 20 registros
modelo=lm(mtcars[1:20], formula = hp ~ cyl)

modelo

# guardo el modelo
saveRDS(modelo, "modelo.rds")

####################
# Esto iria en otro script que correrias para datos nuevos
####################
# lo restauro 
modelo_bkp=readRDS("modelo.rds")

# lo aplico con datos "nuevos"
res_datos_nuevos=predict.lm(modelo_bkp,newdata = mtcars[21:32,])

El tema de entrenar el modelo es depende de cuan seguido cambian tus datos. No hay una respuesta universal.

Generalmente se crea un dia, y luego se usa… semanas/meses hasta que se cambia de nuevo.

¿Cuando hay que cambiarlo? Cuando cambio la distribución de las variables con las que se creó el modelo. Por ejemplo, si la variable edad paso de tener promedio 30 a promedio 45. Si las distribuciones son similares, entonces podemos seguir usando el modelo.

Tambien hay que tener en cuenta que las metricas de error sean constantes a lo largo del tiempo, por ejemplo que el R2 (r cuadrado) no se “dispare”, de un momento a otro. En este caso, también hay que crear el modelo de nuevo.

Espero te sea útil, sino volvé a consultar :slight_smile: