Por lo tanto, no he podido encontrar ninguna literatura sobre este tema, pero parece algo que vale la pena pensar:
¿Cuáles son las mejores prácticas en capacitación y optimización de modelos si hay nuevas observaciones disponibles?
¿Hay alguna forma de determinar el período / frecuencia de volver a entrenar un modelo antes de que las predicciones comiencen a degradarse?
¿Es demasiado adecuado si los parámetros se vuelven a optimizar para los datos agregados?
Tenga en cuenta que el aprendizaje puede no ser necesariamente en línea. Es posible que desee actualizar un modelo existente después de observar una variación significativa en las predicciones más recientes.
machine-learning
predictive-modeling
optimization
training
usuario140323
fuente
fuente
Respuestas:
.pickle
archivo y cargarlo y entrenarlo más cuando haya nuevos datos disponibles. Ten en cuenta que para el modelo para predecir correctamentethe new training data should have a similar distribution as the past data
.The frequency will be dependent on dataset
y no hay un tiempo específico para declarar como tal.If you observe that your new incoming data is deviating vastly, then it is a good practise to retrain the model
.fuente
Cuando hay nuevas observaciones disponibles, hay tres formas de reentrenar su modelo:
La mayoría de los modelos actuales usarán lotes / mini lotes y la elección del tamaño del lote depende de su aplicación y modelo. Elegir el lote de tamaño correcto es equivalente a elegir la frecuencia correcta con la que volver a entrenar su modelo. Si su nueva observación tiene una baja variación con sus datos existentes, sugeriría lotes más grandes (256-512 tal vez) y si, por el contrario, las nuevas observaciones tienden a variar mucho con sus datos existentes, use lotes pequeños (8-256). Al final del día, el tamaño del lote es como otro hiperparámetro que necesita ajustar y que es específico para sus datos
fuente
Su problema se incluye en los métodos de aprendizaje en línea. Suponiendo que llegue un flujo de datos, puede usar el método de Descenso de gradiente estocástico para actualizar los parámetros de su modelo utilizando ese único ejemplo.
Si su función de costo es:
donde es el vector de parámetros, luego, suponiendo una transmisión de datos de forma ( ), puede actualizar su vector de parámetros usando SGD con la siguiente ecuación de actualización:x i , y iθ xi,yi
Esto es esencialmente SGD con tamaño de lote 1.
Hay otro truco, puede adoptar un método basado en ventana / búfer, donde almacena algunos ejemplos del flujo y lo trata como un lote y usa el SGD por lotes. En ese caso, la ecuación de actualización se convertirá en:
Esto es esencialmente SGD mini-lote.
fuente
La pregunta: ¿DEBERÍAS volver a entrenar?
La respuesta depende de lo que intente hacer su modelo y en qué entorno se aplique.
Déjame explicarte con un par de ejemplos:
Suponga que su modelo intenta predecir el comportamiento de los clientes, por ejemplo, qué tan probable es que un cliente compre su producto dada una oferta personalizada para él. Claramente, el mercado cambia con el tiempo, las preferencias de los clientes cambian y sus competidores se ajustan. También debe ajustar, por lo que debe volver a entrenar periódicamente. En tal caso, recomendaría agregar datos nuevos, pero también omitir datos antiguos que ya no son relevantes. Si el mercado está cambiando rápidamente, incluso debería considerar volver a capacitarse periódicamente basándose solo en datos nuevos.
Por otro lado, si su modelo clasifica algunas imágenes (por ejemplo, rayos X o resonancia magnética) en condiciones médicas, y el modelo funciona bien, no necesita volver a entrenar si no hay cambios en la tecnología o en el conocimiento médico . Agregar más datos no mejorará mucho.
fuente