Bayes opta con descriptores continuos de una entrada categóricaHola,
Un cliente preguntó sobre el uso de la optimización bayesiana en una situación en la que dispone de una única variable categórica (por ejemplo, tipo de catalizador) que puede describir mediante múltiples variables continuas (por ejemplo, descriptores químicos).
Sé que podrían hacerlo usando la tabla de descriptores como conjunto de candidatos. ¿Alguien ha visto ejemplos de clientes que lo hayan hecho? ¿O algún ingeniero de sistemas ha experimentado con ejemplos simulados?
Gracias
Phil
Re: Opción bayesiana con descriptores continuos de una entrada categóricaHola @Phil_Kay ,
¿Están intentando averiguar qué efecto tiene la composición del catalizador en el proceso general (construir un modelo) con el objetivo de controlar/adaptar la composición del catalizador?
He tenido casos similares con clientes (por ejemplo, en el desarrollo de perfumes): pueden usar el compuesto A, B o C, conocen su composición (por ejemplo, 10 % de aceite, 5 % de alcohol), pero no pueden experimentar con él de forma intencionada porque no pueden modificar las proporciones, lo que significaba que BayesOpt era de poca utilidad.
Salud,
Ben
Re: Opción bayesiana con descriptores continuos de una entrada categóricaHola @Phil_Kay , por si te sirve de ayuda, la tabla adjunta es de Assistant con la siguiente instrucción: "Simula datos QSAR para predecir el tipo de catalizador usando descriptores químicos. Usa relaciones químicas realistas y asegúrate de que algunos descriptores sean significativos".
También existe un script para un modelo XGBoost, que parece funcionar bien.
Re: Opción bayesiana con descriptores continuos de una entrada categóricaGracias, Ben. Creo que lo que pretenden es seleccionar el mejor catalizador para obtener un rendimiento óptimo. Podría haber hasta 50 catalizadores entre los que elegir. Cada catalizador tendrá valores únicos para las variables descriptivas, que reflejan sus diferentes propiedades químicas. No pueden probarlos todos, ya que eso implicaría demasiadas repeticiones de la reacción, así que la idea sería usar las variables descriptivas como factores en la optimización bayesiana, como una forma racional de explorar el espacio de propiedades del catalizador y acercarse al catalizador óptimo.
Re: Opción bayesiana con descriptores continuos de una entrada categóricaGracias, @russ_wolfinger . Se ve bastante bien. Pero el caso que tengo en mente es un conjunto de candidatos con 50 catalizadores únicos. Disculpa, creo que mi redacción sobre "tipo de catalizador" no fue la mejor. Cada catalizador tendría valores únicos para los descriptores.
Re: Opción bayesiana con descriptores continuos de una entrada categóricaGracias por la aclaración, Phil.
¿Existe acaso un valor objetivo continuo Y (por ejemplo, el rendimiento) que deba optimizarse en función de los descriptores? ¿El nombre del catalizador serviría entonces como etiqueta de fila?
Suponiendo que esto sea así, los datos podrían procesarse con BayesOpt para encontrar valores de descriptores que optimicen Y. Una vez encontrados, creo que esto requeriría la capacidad de sintetizar un catalizador con la combinación óptima de descriptores (o al menos una aproximación cercana).
Como alternativa, el modelado QSAR (Relación Cuantitativa Estructura-Actividad) ajusta un modelo predictivo de Y en función de los descriptores. XGBoost o Torch son buenas opciones, y luego se puede usar el perfilador para optimizar Y o usar el modelo ajustado para predecir catalizadores aún no medidos con descriptores conocidos.
Si dispones de cadenas SMILES para los catalizadores, Torch cuenta con modelos de redes neuronales gráficas que suelen funcionar muy bien.
Procedí a añadir una columna de Rendimiento a los datos simulados.
Russ
Re: Opción bayesiana con descriptores continuos de una entrada categóricaSí, el rendimiento sería con mayor frecuencia la variable de respuesta, aunque los niveles de impurezas y el costo podrían ser variables adicionales. El rendimiento es desconocido y solo se determina al ejecutar la reacción. Y no es viable ejecutar la reacción con los 50 catalizadores. Por lo tanto, se utilizaría el método de Bayes para explorar (con suerte) de manera eficiente el espacio de propiedades del catalizador. Creo que simplemente se optaría por usar el catalizador que mejor funcionó, aunque si el modelo sugiere propiedades óptimas que no son similares a las de uno de los catalizadores, se podrían agregar más al conjunto de candidatos para su consideración.
Creo que esto debería ser posible y bastante sencillo.
Pero no estoy seguro de que sea posible incluir variables de proceso adicionales, como la temperatura o el pH, por ejemplo. Supongo que esto sería importante. Creo que la única forma de hacerlo sería crear un conjunto de candidatos para los descriptores del catalizador y otro para los factores del proceso (por ejemplo, un diseño de relleno espacial), y luego calcular el producto de ambos. Así, se obtendría un conjunto de candidatos enorme con múltiples tratamientos de factores del proceso para cada catalizador y sus descriptores.
Re: Opción bayesiana con descriptores continuos de una entrada categóricaUn aspecto que he observado y que conviene tener en cuenta al usar el rendimiento como respuesta en BayesOpt es el siguiente: si el objetivo del rendimiento es "maximizar" y se expresa como porcentaje en lugar de unidades absolutas (como g/L), el algoritmo puede empezar a predecir resultados no físicos, como lo hace MCO (por ejemplo, rendimientos del 103 %). Esto podría generar sugerencias extrañas para los experimentos.Re: Opción bayesiana con descriptores continuos de una entrada categóricaHola @Phil_Kay ,
Existen algunos datos públicos que podrían ajustarse a tu caso: https://github.com/SigmanGroup/Threshold/tree/main/examples
Acabo de descargar rápidamente el conjunto de datos y lo he probado usándolo como conjunto de candidatos y tabla de consulta. (Parece ser una publicación relacionada : https://www.science.org/doi/10.1126/science.abj4213?referrer=https%3A%2F%2Fgithub.com%2FSigmanGroup%2FThreshold%2Ftree%2Fmain )
El inconveniente de mi prueba inicial rápida es que BayesOpt aparentemente se quedó atascado en una recomendación (que, por cierto, fue acertada en una respuesta).
Quizás los datos sintéticos sean la opción "más segura" para las demostraciones...
Espero que esto ayude.
Florián
Re: Opción bayesiana con descriptores continuos de una entrada categóricaBueno, ¡creo que encontró el óptimo de forma muy eficaz! Debería ser más interesante si también se incluyen variables de proceso, con interacciones entre estas y los descriptores del catalizador. Pero, como ya he dicho, creo que actualmente será un flujo de trabajo complicado.
Re: Opción bayesiana con descriptores continuos de una entrada categóricaEn efecto 
Sí, en ese caso un conjunto de datos sintéticos podría ser la mejor opción.
Unilever ha afirmado que BayesOpt funciona bastante bien en este aspecto (desarrollo de producto + proceso) (solo que utilizan las propiedades químicas de los ingredientes, en lugar de catalizadores/QSAR y posiblemente otros parámetros del proceso como la agitación, etc.). Actualmente están evaluando el sistema y no han compartido información al respecto, pero quizás a finales de octubre obtenga detalles más precisos, incluso un estudio de caso público.
Re: Opción bayesiana con descriptores continuos de una entrada categóricaEso sería estupendo. Creo que empezaremos a ver cada vez más casos de éxito de clientes que nos ayudarán a demostrar el valor de nuestro producto.
Re: Opción bayesiana con descriptores continuos de una entrada categóricaExcelentes datos, Florian, gracias por compartirlos. Tenemos una historia muy sólida para este tipo de datos desde la perspectiva del modelado predictivo:
1. Proceso Gaussiano y las ventajas iterativas que ofrece BayesOpt. GP probablemente sea la mejor opción para sistemas suaves. MixedModel en Torch es similar.
2. XGBoost / LightGBM / Árboles potenciados: Ideales para sistemas de interacción no lineales con cambios bruscos o incluso discontinuidades.
3. Redes neuronales en Torch y JMP: Ideales para sistemas con suavidad moderada, entre GP y árboles potenciados. Amplia riqueza estructural.
4. Redes neuronales gráficas en SMILES en Torch: La más fiel a la estructura química, potencialmente la mejor de todas.
Los modelos 3 y 4 se pueden combinar fácilmente en un solo modelo, y las mejores predicciones posibles se obtienen al combinarlos todos.
Re: Opción bayesiana con descriptores continuos de una entrada categórica@MikeD_Anderson ¿Algún buen consejo para lidiar con el problema del % como respuesta? Me lo he encontrado mucho con clientes (por ejemplo, en el %) de disolución, donde las únicas medidas son %, me ha resultado difícil entender cómo agregar un límite máximo estricto, ya que al ejecutar simulaciones, BayesOpt aún puede excederlo.
Re: Opción bayesiana con descriptores continuos de una entrada categórica@Ben_BarrIngh : la respuesta correcta es que necesitamos el equivalente de GenReg para procesos estocásticos (el modelo sustituto que utiliza nuestra implementación de BayesOpt). Esto nos permitiría incorporar la distribución beta (es decir, modelado BeSP en lugar de GaSP). Existen cálculos matemáticos para esto, pero alguien del equipo de desarrollo o de gestión de producto tendría que confirmar si existe una hoja de ruta para esta funcionalidad.
Por ahora, la mejor solución que se me ocurre es cambiar términos como "Rendimiento %" de un objetivo de maximización a un objetivo objetivo y establecer algo como el 99,5 % como objetivo. Luego, puedes ajustar los límites superior e inferior de la curva de deseabilidad para forzar que ignore los valores superiores al 100 %. Dado que Bayes Opt es un poco complicado para hacer esto en la plataforma actualmente, tendrías que configurar estos ajustes en la propiedad de la columna de respuesta. Esto parece funcionar bien, pero es una solución provisional.

Re: Opción bayesiana con descriptores continuos de una entrada categóricaMuy útil, gracias @MikeD_Anderson
Re: Opción bayesiana con descriptores continuos de una entrada categóricaTambién puedes intentar calcular el logit de la respuesta proporcional. Así es como la regresión logística convierte los resultados de aprobado/suspenso en datos en el intervalo (–∞, +∞). Luego, aplica la función logística a las predicciones para transformarlas de nuevo en unidades proporcionales. (Creo que JMP tiene una función de porcentaje logit; así no tendrás que cargar con el 100).