Bienvenido de nuevo a Analytics with Confidence. En esta serie, exploro la clave del éxito del análisis de datos moderno: la validación. En la primera y segunda publicación discutimos la generalización y vimos cómo construir modelos problemáticos que no se generalicen. En esta publicación, continuamos con el estudio de caso sobre recetas de reacción e presentamos la validación de retención como una herramienta simple para construir modelos en los que puede confiar.
Recuerde que en este caso de estudio estamos analizando recetas para elaborar un producto químico de alto valor [1]. Hay 4.608 variaciones posibles de opciones de ingredientes (4 electrófilos x 3 nucleófilos x 12 ligandos x 8 bases x 4 disolventes). Queremos utilizar los datos de sólo 150 de las recetas posibles para construir un modelo que prediga el rendimiento de cualquier receta y encuentre las mejores combinaciones de ingredientes.
El modelo de partición que construimos la última vez parecía excelente a primera vista, con un RSquare de 0,985 y un gráfico Real versus Predicho que mostró un ajuste excelente con los datos. Pero luego analizamos cómo se compararon las predicciones del modelo con los rendimientos reales de las 4458 recetas que no estaban en los datos de entrenamiento. ¡El modelo predijo rendimientos cercanos al 100% para varias recetas que en realidad tuvieron rendimientos cercanos a 0!
Actual versus Predicted plots for the data that was used to train the model (left) and the data for all the other recipes that were not used to train the model (right). This is an example of an "overfit" model that does not generalize.Actual versus Predicted plots for the data that was used to train the model (left) and the data for all the other recipes that were not used to train the model (right). This is an example of an "overfit" model that does not generalize.Actual versus Predicted plots for the data that was used to train the model (left) and the data for all the other recipes that were not used to train the model (right). This is an example of an "overfit" model that does not generalize.Gráficos reales versus previstos para los datos que se usaron para entrenar el modelo (izquierda) y los datos de todas las demás recetas que no se usaron para entrenar el modelo (derecha). Este es un ejemplo de un modelo "sobreajustado" que no generaliza.
¿Cómo podemos evitar construir tipos de modelos que se ven bien con los datos de entrenamiento, sólo para descubrir que no se generalizan cuando se prueban con datos invisibles? ¿Y cómo nos aseguramos de que nuestros modelos no sean innecesariamente complejos?
Una idea que se le podría haber ocurrido sería validar el modelo con datos invisibles en cada paso del proceso de construcción. Podríamos habernos detenido después de cada división en el árbol de decisión para verificar lo real versus lo previsto (y el RSquare) para las 4458 recetas que no se usaron para entrenar el modelo. Podríamos seleccionar el mejor modelo como aquel en el que el ajuste a los datos invisibles es mejor. Y sabríamos qué tan bien podemos esperar que funcione.
Por supuesto, esto es en una situación artificial. Si tenemos los datos para todas las recetas posibles, no retendríamos la mayor parte para validar el modelo. ¿Podemos usar la misma idea pero utilizando los datos solo de las 150 recetas?
Presentamos... Crear columna de validación
Sí, existe una herramienta para esto. Crear columna de validación en JMP Pro marcará una parte de las filas de su tabla de datos que se retendrán y utilizarán como validación en cada paso del proceso de creación del modelo. Hay varias opciones útiles que exploraremos en publicaciones posteriores, pero para este ejemplo, lo mantendremos simple y nos ceñiremos a los valores predeterminados.
The Make Validation Column tool in JMP Pro (Analyze > Predictive Modeling). In this example, we stick with the defaults to make a Random Validation Column and click OK.The Make Validation Column tool in JMP Pro (Analyze > Predictive Modeling). In this example, we stick with the defaults to make a Random Validation Column and click OK.The Make Validation Column tool in JMP Pro (Analyze > Predictive Modeling). In this example, we stick with the defaults to make a Random Validation Column and click OK.La herramienta Crear columna de validación en JMP Pro (Analizar > Modelado predictivo). En este ejemplo, nos atenemos a los valores predeterminados para crear una columna de validación aleatoria y hacemos clic en Aceptar.
Iremos con el sugerido 0,75/0,25.división de entrenamiento/validación, lo que significa que 37 de las 150 filas de datos se retendrán para su validación.
The default 0.75/0.25 training/validation split in Make Validation Column. Enter “1234” as the Random Seed if you want to follow along in JMP Pro and get the same results.The default 0.75/0.25 training/validation split in Make Validation Column. Enter “1234” as the Random Seed if you want to follow along in JMP Pro and get the same results.The default 0.75/0.25 training/validation split in Make Validation Column. Enter “1234” as the Random Seed if you want to follow along in JMP Pro and get the same results.La división predeterminada de entrenamiento/validación de 0,75/0,25 en la columna Realizar validación. Ingrese "1234" como semilla aleatoria si desea seguirlo en JMP Pro y obtener los mismos resultados.
Ahora tenemos una columna de Validación en nuestra tabla de datos que marca 37 de las filas para validación y las demás para entrenamiento:
Validation column in our data table that marks 37 of the rows for validation and the others for trainingValidation column in our data table that marks 37 of the rows for validation and the others for trainingValidation column in our data table that marks 37 of the rows for validation and the others for trainingColumna de validación en nuestra tabla de datos que marca 37 de las filas para validación y las demás para entrenamiento
Ahora, repitamos el modelo de partición que creamos en la publicación n.° 2, pero con validación. El paso clave aquí es agregar la columna Validación en la función de Validación cuando inicia la Partición.
Partition model with validationPartition model with validationPartition model with validationModelo de partición con validación.
La primera división es la misma que para nuestro modelo sin validación. Pero ahora podemos ver el RSquare tanto para los datos de entrenamiento como para los datos de validación. El ajuste a los datos de validación no es tan bueno para los datos de entrenamiento (RSquare = 0,133 frente a 0,224).

Podemos presionar Ir y el algoritmo explorará una cantidad de divisiones y luego podará nuevamente hasta el árbol que tenía el RSquare de validación máximo, es decir, el modelo que mejor predice los datos que hemos retenido. En este caso, Validation RSquare (en rojo) alcanzó su punto máximo con cinco divisiones. Más allá de ese punto, el modelo se estaba volviendo más complejo y se ajustaba mejor a los datos de entrenamiento, pero se estaba sobreajustando al ruido en lugar de encontrar patrones que se generalizaran a datos invisibles. Incluso podemos reducirlo a cuatro divisiones ya que el RSquare de Validación es el mismo y el modelo es más simple.

¿Qué pasa con otros modelos?
Existe una variedad de otros tipos de modelos estadísticos y de aprendizaje automático que podríamos utilizar. Otra ventaja de la validación de retención es que nos permite crear y comparar rápidamente modelos validados y descubrir cuál funciona mejor. La plataforma Model Screening de JMP Pro lo hace muy fácil. En este caso, encontramos que un modelo de Árbol Impulsado tiene el RSquare de Validación más alto:
Model Screening report showing the Boosted Tree has a slightly better Validation RSquare than the Decision Tree and the other statistical and machine learning methods.Model Screening report showing the Boosted Tree has a slightly better Validation RSquare than the Decision Tree and the other statistical and machine learning methods.Model Screening report showing the Boosted Tree has a slightly better Validation RSquare than the Decision Tree and the other statistical and machine learning methods.Informe de selección de modelos que muestra que el árbol impulsado tiene un RSquare de validación ligeramente mejor que el árbol de decisión y otros métodos estadísticos y de aprendizaje automático.
Ahora, cuando observamos cómo funciona este modelo de árbol arrancado, vemos que hay una concordancia mucho mejor entre las predicciones y los rendimientos reales de las 4458 recetas que no se utilizaron para entrenar o validar el modelo:

Aprende más:
[1] Datos de Perera D, Tucker JW, Brahmbhatt S, Helal CJ, Chong A, Farrell W, Richardson P, Sach NW. Una plataforma para la detección automatizada de reacciones a escala nanomol y la síntesis en flujo a escala micromol. Ciencia. 26 de enero de 2018; 359 (6374): 429-434. doi: 10.1126/science.aap9112. PMID: 29371464. Los conjuntos de datos completos y muestreados se adjuntan como tablas de datos JMP.
¡Excelente explicación Phil! Me acaban de conceder acceso a la versión PRO a partir de agosto como primera persona en Arla Foods 
Tengo muchas ganas de empezar a validar los modelos que construyo.
Tengo dos preguntas de seguimiento relacionadas con su publicación: digamos que he creado un diseño DoE personalizado con una aplicación. 20-30 carreras.
¿El entrenamiento, la validación y las pruebas del modelo todavía funcionan o se necesitan más de 100 ejecuciones para obtener algo de esto?
¿Si luego comienzas a aumentar ese mismo diseño (probando los mismos factores) a nuevos niveles? ¿JMP distribuiría entonces estas ejecuciones nuevamente como entrenamiento y validación?
Gracias.
Atentamente
Kristian Bertelsen