Integración de una estimación inicial (heurística) en un modelo predictivo (aprendizaje automático)Estoy intentando desarrollar una herramienta que llamo Blend Search. Funciona bien, pero tengo en mente una mejora que aún no sé cómo implementar técnicamente.
Qué hace Blend Search:
>> input es una colección de componentes con sus propiedades
>> generación de una matriz de composición
>> Aplicación de heurísticas (modelos simples) para calcular las propiedades de las mezclas
>> aplicación de un modelo más complejo, actualmente un Árbol Potenciado. Sus predictores son las propiedades de las mezclas estimadas por heurísticas, y su salida también es una propiedad de la mezcla.
He creado una visualización de Boosted Tree (ver vídeo adjunto).
Uno de los predictores (Predictor 3) ya proporciona una estimación inicial de la propiedad objetivo (Predicha). En mi idea original, los otros dos predictores tenían como objetivo refinar esta primera estimación. Actualmente, el modelo ofrece predicciones consistentes; rara vez nos desviamos del rango previsto.
Pero en realidad, no estoy corrigiendo mi estimación inicial; estoy corrigiendo el promedio de los valores Y en el conjunto de entrenamiento (la intersección predeterminada del árbol potenciado). Si quiero ampliar mi búsqueda combinada, este enfoque ya no será suficientemente robusto.
Me gustaría poder hacer predicciones corrigiendo mi estimación inicial. Por ejemplo, me gustaría mucho tener un tipo de intercepto variable para mi árbol potenciado. No logro visualizar la solución adecuada, pero estoy bastante seguro de que ya existen algunas técnicas. Si tienes alguna idea, me encantaría escucharla.
Modelado predictivo y aprendizaje automáticoRe: Integración de una estimación inicial (heurística) en un modelo predictivo (aprendizaje automático)Hola @RikkiTikkiTavi ,
No estoy seguro de comprender completamente la cadena de modelado algorítmico, pero tal vez tenga una idea. Existen dos enfoques posibles para mejorar las predicciones: un enfoque de potenciación (para reducir el sesgo de predicción) y un enfoque de agregación/promedio de modelos (para reducir la varianza de predicción).
- Enfoque de refuerzo: Si el objetivo es mejorar las predicciones de la propiedad objetivo corrigiendo un sesgo (respuesta media predicha frente a respuesta media medida), se podría entrenar un modelo de aprendizaje automático para predecir los residuos de esta propiedad objetivo a partir de los datos brutos y/o estimados, así como de las predicciones de la propiedad objetivo (para modelar los errores basados en las variables y predicciones originales). Esto daría como resultado un modelo que predice errores en el árbol reforzado y sirve como capa de corrección para dicho árbol (sumando o restando las predicciones residuales a las predicciones del árbol reforzado).
He utilizado este enfoque varias veces y las mejoras en el rendimiento pueden ser bastante significativas. Podría ser conveniente usar un tipo de modelo diferente para el modelado de errores que el utilizado para las predicciones (es decir, algo distinto a Boosted Tree en su caso). Además, asegúrese de validar exhaustivamente este nuevo modelo, evitando el sobreajuste, con una estrategia de validación adecuada (para compararlo únicamente con el modelo Boosted Tree) y una estrategia de prueba (para evaluar el rendimiento en condiciones reales). Evite cualquier riesgo de fuga de datos utilizando solo los datos disponibles en el momento de la predicción de errores: predictores más predicciones de la propiedad objetivo.
- Enfoque de bagging/promedio de modelos: Otra opción para reducir la varianza de las predicciones es entrenar un conjunto de modelos en paralelo (además del modelo Boosted Tree) y calcular la media o la mediana de sus predicciones. Sin embargo, con este enfoque, es fundamental implementar una estrategia de validación y prueba adecuada.
La elección entre estas opciones depende del rendimiento de su modelo Boosted Tree inicial y del ruido en los datos: si el Boosted Tree tiende a sobreajustarse o si los datos utilizados son ruidosos, se recomienda un enfoque de bagging. Si el Boosted Tree tiene un rendimiento inferior y un sesgo elevado (lo cual parece bastante improbable dado el comportamiento del modelo, a menos que se utilicen parámetros específicos), el enfoque de Boosting será más efectivo. Podría priorizar la prueba del enfoque de conjuntos tipo bagging, ya que el modelo de predicción utilizado (Boosted Tree) ya emplea un enfoque de tipo Boosting.
Esperemos que estas opciones te inspiren,
Re: Integración de una estimación inicial (heurística) en un modelo predictivo (aprendizaje automático)Hola @Victor_G ,
Ya había intentado predecir los residuos (la diferencia entre el valor real de mi propiedad objetivo y su estimación inicial). Obtuve una ligera mejora en el conjunto de entrenamiento, pero falló en el conjunto de prueba (el RMSE se duplicó). Mi conjunto de prueba representa la escalabilidad que busco; es un subgrupo de composiciones muy diferentes, pero las propiedades de estas mezclas están casi en el mismo rango que las del conjunto de entrenamiento. Mi actual árbol potenciado predice bastante bien en el conjunto de prueba.
La idea del promedio de modelos es interesante. ¿Necesito encontrar modelos con errores suficientemente diferentes para probar el método? Creo que primero intentaré con el método bagging. Sé que mis datos son ruidosos, e imagino que este tipo de modelo también será más fácil de integrar en mi herramienta Blend Search que un conjunto de 2, 3, 4... modelos diferentes.
Muchas gracias por sus ideas;
Re: Integración de una estimación inicial (heurística) en un modelo predictivo (aprendizaje automático)Hola @RikkiTikkiTavi ,
Sí, la dificultad de este enfoque radica en la estrategia de validación adecuada para evitar el sobreajuste (mejora en el conjunto de entrenamiento, pero rendimiento estable o incluso decreciente en el conjunto de datos de validación).
Me preocupa un poco que, según tu descripción de los datos de prueba, puedas tener un cambio de dominio : corres el riesgo de que las relaciones entre las entradas y salidas aprendidas por el modelo durante el entrenamiento sean diferentes a las existentes para la prueba. ¿Sería posible mezclar/ estratificar los datos de entrenamiento, validación y prueba para evitar este cambio (y tener solo datos de escalado en la prueba)? Esto permitiría que el modelo también tuviera información sobre el escalado, tal vez indicándola en una nueva variable utilizada durante el entrenamiento (por ejemplo, `experiment_type: R&D / scale-up / Prod`; dependería de si las diferentes etapas tienen diferentes interceptos y, por lo tanto, requieren esta variable).
Respecto al resto del proceso, aquí hay algunas observaciones/ideas:
- Comience por establecer la estrategia de entrenamiento/validación/prueba , si es posible realizando una división estratificada con respecto a las variables para garantizar que se vea todo el espacio experimental en cada uno de los conjuntos (para asegurar un entrenamiento relevante y una buena generalización del rendimiento).
- Antes de entrenar el Boosted Tree (u otro modelo), configure modelos comparativos: un modelo de referencia (recomiendo el Bosque aleatorio ) para superar a los demás modelos en la validación, y un modelo para evaluar los límites inferiores de rendimiento de los modelos probados: por ejemplo, un modelo ingenuo que solo "predice" la respuesta promedio del conjunto de entrenamiento en todos los demás conjuntos (validación y prueba). Si los demás modelos son peores o equivalentes a este modelo (por ejemplo, con un RMSE cercano o superior al del modelo ingenuo), esto puede indicar un ruido excesivo en los datos en relación con la señal, una falta de información de los factores o una variabilidad insuficiente en la respuesta.
- También recomiendo probar diferentes modelos, por ejemplo con la plataforma Selección de modelos , realizando una validación cruzada únicamente en el conjunto de entrenamiento. A partir de ahí, es posible seleccionar los modelos más prometedores y continuar.
- Dependiendo del rendimiento de los modelos, es posible reentrenarlos en el conjunto de entrenamiento, lo que permite comparar su rendimiento en el conjunto de validación para seleccionar el modelo con mejor desempeño. Paralelamente, es posible tomar los modelos seleccionados, ya entrenados con la validación cruzada previa, y realizar un promedio de modelos utilizando la plataforma de comparación de modelos . El aspecto interesante del promedio de modelos es combinar modelos con diferentes "tipos de construcción" (sesgos inductivos), como modelos basados en árboles como Boosted Tree, Random Forest o XGBoost , con otros modelos como regresión multivariante, SVM, procesos gaussianos o pequeñas redes neuronales, según su rendimiento. Estos modelos deben tener un buen rendimiento individual (deben haber capturado la señal en los datos) e, idealmente, tasas de error ligeramente diferentes (algunos sobreestiman ciertas observaciones, mientras que otros las subestiman). La comparación de este macromodelo con modelos individuales reentrenados en el conjunto de entrenamiento se puede realizar utilizando la misma plataforma de comparación de modelos, comparando los resultados de rendimiento en el conjunto de validación.
- Una vez seleccionada la mejor opción (macromodelo o modelo individual), se estima el rendimiento en el conjunto de prueba para evaluar el comportamiento del modelo una vez implementado.
También es posible aplicar el método bootstrap a modelos de aprendizaje automático distintos del bagging natural del Random Forest, para mejorar la robustez de los modelos durante el entrenamiento.
Esperemos que estas sugerencias te sean de ayuda.