Contenidos
El entrenamiento de modelos de machine learning se refiere al proceso mediante el cual se definen los parámetros e hiper parámetros de un algoritmo de forma que se ajuste bien a los datos, lo que implica minimizar alguna medida de error (función de costo). En algunas oportunidades, se puede optar por minimizar el error sujeto al cumplimiento de algún criterio específico del investigador.
Los algoritmos de machine learning se ajustan a los datos de entrenamiento de forma de minimizar una función de costo previamente establecida. Al entrenar un modelo, los parámetros que minimizan la función de costo del modelo se estiman de forma iterativa, hasta lograr un resultado satisfactorio para el investigador. Además de los parámetros, los modelos dependen de hiper parámetros, que son valores exógenos, es decir, valores que no se definen durante el proceso de optimización, sino que previamente deben ser entregados por el investigador. Seleccionar bien los hiper parámetros es fundamental para el buen desempeño del algoritmo. Asimismo, cabe mencionar que cada modelo tiene hiper parámetros más importantes que otros (su impacto en el desempeño es mayor).
Para determinar los hiper parámetros inicialmente se define cuáles parámetros son los más importantes para el algoritmo o problema específico. El valor de dichos parámetros debe ser determinado cuidadosamente, de forma de optimizar el desempeño del modelo para el problema que se quiere resolver. En el caso de los parámetros menos importantes se pueden usar los valores predefinidos, que son valores que generalmente funcionan bien para todo tipos de problemas. Luego, el algoritmo se ajusta en numerosas oportunidades, iterativamente, utilizando distintas combinaciones de parámetros, hasta encontrar la mejor combinación.
En algunos casos las combinaciones posibles de parámetros pueden ser demasiadas, por lo que el proceso de optimización puede ser muy lento, sobre todo en el caso de algoritmos complejos, que que se resuelven lentamente, o cuando se trabaja con grandes bases de datos. Para acelerar este proceso es recomendable acotar la búsqueda a rangos específicos de valores para los hiper parámetros, que se conozcan que producen buenos resultados. Para conocer cuáles son dichos rangos es bueno consultar la literatura académica y basarse en la experiencia.
La búsqueda de combinaciones óptimas de hiper parámetros puede hacerse mediante una búsqueda de grilla, en que cada punto de la grilla corresponde a una combinación de hiper parámetros. Sin embargo, cuando la cantidad de combinaciones es muy grande, es recomendable seleccionar las combinaciones al azar, ya que iterar sobre todos los valores de la grilla puede ser muy costoso en tiempo. Una vez que el algoritmo encuentre la mejor combinación al azar de parámetros, se realiza una segunda búsqueda, esta vez enfocada en combinaciones de valores en un espacio cercano a los hiper parámetros encontrados en la búsqueda anterior. En otras palabras, la búsqueda se va reduciendo a un espacio más pequeño de posibles valores, hasta encontrar un punto óptimo.
Para entrenar y evaluar los algoritmos de machine learning típicamente se divide la muestra en datos de entrenamiento (training set) y de testeo (test set). Es importante que la división sea al azar, para asegurar que ambos conjuntos de datos provengan de la misma distribución. Idealmente se debe dividir los datos en tres grupos: datos de entrenamiento (training set), datos de desarrollo (development set o dev set), y datos de testeo (test set). Lo anterior es deseable ya que, si vamos ajustando los parámetros e hiper parámetros del modelo en base a las medidas de desempeño calculadas en el test set, estaríamos sobreajustando el modelo a dicho conjunto de datos, por lo que las medidas de desempeño calculadas con el test set ya no serán representativas del error de predicción fuera de la muestra del modelo. Por lo tanto, es mejor ir mejorando el modelo en base a indicadores de error calculados en el Dev set, y una vez definida la versión final del modelo, se calcula el error de predicción fuera de la muestra con el Test set.
Tradicionalmente se ha usado la división 70% Training set y 30% Test set; o 60% Training set, 20% Dev set, y 20% Test set. Sin embargo, esta división es recomendable sólo en el caso de trabajar con datos pequeños, por ejemplo, bases de datos de hasta 10.000 observaciones. Si los datos son grandes, y si el algoritmo es complejo (e.g. una red neuronal) es mejor asignar un 98% de los datos al training set, un 1% al dev set y un 1% al test set. Por ejemplo, con 1 millón de datos se asignarían 980.000 datos al training set, 10.000 al dev set y 10.000 al test set.
El error de predicción es una medida que estima en qué magnitud difiere la predicción del modelo de los valores reales que se quieren predecir. El error de predicción se puede descomponer en dos fuentes: el sesgo y la varianza. El sesgo es una fuente de error que se produce debido a que el algoritmo no captura bien las relaciones que existen entre los predictores y la variable objetivo. Generalmente se produce cuando el modelo no es lo suficientemente complejo para capturar todos los patrones y relaciones existentes en los datos. Por otro lado, la varianza se produce cuando el modelo es demasiado sensible a pequeñas fluctuaciones en el training set, debido a que el algoritmo se estaría ajustando al ruido o componente aleatorio de los datos. Se produce cuando el modelo es demasiado complejo en relación a la cantidad de datos disponibles. Por último, se menciona que existe un tradeoff entre sesgo y varianza: al aumentar la complejidad de un modelo se reduce el sesgo y aumenta la varianza, y viceversa. Por lo tanto, se deduce que debería existir un punto óptimo.
Una forma de estimar el sesgo y varianza es comparar las medidas de error con el error de Bayes, que es el mínimo error posible que puede obtener cualquier modelo para cualquier conjunto de datos. Un modelo nunca podrá hacer predicciones perfectas, ya que existe un componente aleatorio en los datos, que hace que las predicciones no sean exactas, aun cuando se conozca la verdadera función que originó los datos (por ejemplo, al realizar una simulación). Una forma de estimar el error de Bayes es usar el error humano (human-level performance), ya que los humanos son muy buenos para realizar muchas tareas que para los algoritmos pueden ser complejas.
Para estimar el sesgo y varianza se comparan los errores obtenidos en el training set y dev set con el error humano:
El primer paso es dividir la muestra en tres grupos: training set, dev set y test set. Alternativamente se pueden usar sólo dos grupos: training set y test set. Luego, el algoritmo se ajusta a los datos, y se seleccionan los mejores hiper parámetros a través de una serie de búsquedas aleatorias. Finalmente, se realiza un análisis de los errores, en que se compara el error humano, training error y dev error. En caso de que no haya dev set, se puede usar el cross-validation error como una estimación del dev error. El análisis de errores permite evaluar si el algoritmo tiene un problema de sesgo o varianza, o ambos. Finalmente, se ajusta el modelo nuevamente si es necesario hasta obtener un resultado satisfactorio, que es un resultado tal que no se encuentren grandes diferencias entre el error humano, training error y dev error, o mejor aún, un resultado que supere el desempeño humano y que no presente grandes diferencias entre el training error y dev error.
"El secreto de Spinoza" es una novela histórica sobre la vida de Baruch Spinoza, uno…
El autor: Kader Abdolah Kader Abdolah (1954-) es un escritor iraní-neerlandés, conocido por sus novelas,…
El autor: Noah Gordon Noah Gordon (1926-2021) fue un escritor estadounidense, conocido principalmente por sus…
El autor Ray Bradbury (1920-2012) fue un escritor estadounidense de ciencia ficción y fantasía. Es…
El autor Eric Arthur Blair (1903-1950), conocido como George Orwell fue un escritor británico conocido…
El autor: Philip K. Dick Philip K. Dick (1928-1982) fue un influyente escritor estadounidense de…