Como podrías recordar, el aprendizaje supervisado hace uso de un conjunto de entrenamiento para enseñar a un modelo cómo realizar una tarea o predecir un valor (o valores). También es importante recordar que estos datos de entrenamiento necesitan estar etiquetados con el resultado esperado/respuesta correcta para cada ejemplo individual en el conjunto.
En proyectos que usan aprendizaje supervisado, se requiere cierto esfuerzo al principio para construir un conjunto de datos con ejemplos etiquetados. En la práctica, necesitarás extraer 3 subconjuntos de estos datos etiquetados originales: los conjuntos de entrenamiento, validación y prueba. Este es un paso importante para evaluar el rendimiento de diferentes modelos y el efecto del ajuste de hiperparámetros.
A pesar de ser un tema fundamental, muchos practicantes novatos en ciencia de datos lo encuentran un poco confuso. Entender el uso y las diferencias entre los conjuntos de validación y prueba es importante y no requiere mucho esfuerzo.
Así que echemos un vistazo a cómo se usan ambos conjuntos para entender por qué los necesitamos.
Conjuntos de validación y prueba, ¿de dónde vienen?
Ambos conjuntos se derivan de tus datos etiquetados originales. Esos datos usualmente necesitan ser compilados de diferentes fuentes a través de una organización y transformados a un formato estructurado. Este es un tema enorme y el objetivo del artículo no es explorar técnicas de minería de datos, así que simplemente asumiremos que tenemos un conjunto de datos hecho de ejemplos etiquetados.
Una vez que tienes los datos de entrenamiento, necesitas dividirlos en tres conjuntos:
- Conjunto de entrenamiento: Los datos que usarás para entrenar tu modelo. Estos se pasarán a un algoritmo que genera un modelo. Dicho modelo mapea entradas a salidas.
- Conjunto de validación: Este es más pequeño que el conjunto de entrenamiento, y se usa para evaluar el rendimiento de modelos con diferentes valores de hiperparámetros. También se usa para detectar sobreajuste durante las etapas de entrenamiento.
- Conjunto de prueba: Este conjunto se usa para tener una idea del rendimiento final de un modelo después del ajuste de hiperparámetros. También es útil para tener una idea de cómo diferentes modelos (SVMs, Redes Neuronales, Random forests…) se desempeñan entre sí.
Ahora, algunas consideraciones importantes:
- Los conjuntos de validación y prueba son usualmente mucho más pequeños que el conjunto de entrenamiento. Dependiendo de la cantidad de datos que tengas, usualmente apartas 80%-90% para entrenamiento y el resto se divide equitativamente para validación y prueba. Muchas cosas pueden influenciar la proporción exacta de la división, pero en general, la parte más grande de los datos se usa para entrenamiento.
- Los conjuntos de validación y prueba se apartan al principio del proyecto y no se usan para entrenamiento. Esto puede parecer obvio, pero es importante recordar que están ahí para evaluar el rendimiento del modelo. Evaluar un modelo en los datos usados para entrenarlo te hará creer que está funcionando mejor de lo que lo haría en realidad.
- Los 3 conjuntos necesitan ser representativos. Esto significa que todos los conjuntos necesitan contener ejemplos diversos que representen el espacio del problema. Por ejemplo, en un problema de clasificación multiclase, quieres asegurar que los 3 conjuntos contengan suficientes ejemplos de cada clase. De otra forma, corres el riesgo de entrenar un modelo con solo un subconjunto no representativo de los datos o realizar validación y prueba pobres.
Bien, es hora de ver dónde se usa cada conjunto.
El conjunto de validación y el ajuste de hiperparámetros
Los diferentes algoritmos de machine learning para entrenar modelos tienen valores especiales que puedes ajustar antes de que el proceso de aprendizaje comience. Estos valores se llaman hiperparámetros y se usan para configurar el proceso de entrenamiento que producirá tus modelos.
Cambiar el valor de los hiperparámetros altera el modelo producido, y usualmente se usan para configurar cómo el algoritmo aprende relaciones en los datos. Un uso típico para los hiperparámetros es establecer la complejidad del modelo: puedes crear un modelo más complejo que puede aprender relaciones complicadas o un modelo más simple que aprende relaciones más simples usando exactamente el mismo algoritmo.
Un ejemplo básico de un hiperparámetro es la profundidad de un árbol de decisión. Un árbol superficial (solo un par de niveles) es un modelo mucho más simple y solo puede aprender relaciones muy básicas entre entradas y salidas. El entrenamiento es relativamente simple y rápido, y para muchas aplicaciones, es suficiente.
Un árbol más profundo puede aprender relaciones mucho más complejas y abordar problemas más difíciles, pero entrenarlo toma más tiempo y corres el riesgo de sobreajuste.
Entonces, ¿qué hiperparámetros producen el modelo que mejor se desempeña en tus datos? Esto es difícil o imposible de calcular usando herramientas teóricas, así que optamos por un enfoque mucho más práctico: probar diferentes configuraciones de algoritmo e hiperparámetros. Para evaluar el rendimiento necesitamos datos que el modelo no haya visto aún, así que usamos el conjunto de validación.
Ejecutarás tus modelos en el conjunto de validación y verás cómo se desempeñan diferentes configuraciones de hiperparámetros. Basado en los resultados, los ajustarás hasta que el modelo se desempeñe lo suficientemente bien para el problema específico que estás tratando de resolver.
También es comparando los resultados con los conjuntos de validación que puedes notar sobreajuste, un tema que exploraremos en un artículo futuro.
Después de que termines de ajustar hiperparámetros y tengas algunos modelos prometedores, es hora de ejecutar algunas pruebas finales.
Evaluando el rendimiento en el conjunto de prueba
Tus pruebas finales necesitan datos que tus modelos no hayan visto aún.
Ok, pero ya tenemos un conjunto de validación, ¿por qué necesitamos otro conjunto?
Esto es importante porque alguna información del conjunto de validación podría filtrarse a los modelos. Esto significa que al ajustar hiperparámetros, podrías estar enseñando algunas de las idiosincrasias del conjunto de validación a tus modelos (cosas que no son parte de los datos generales). Podrías terminar con modelos que están sobre ajustados para desempeñarse genial en el conjunto de validación pero no se desempeñan tan bien en datos reales.
Es por eso que necesitas un conjunto de prueba: una colección de ejemplos que no forman parte del proceso de entrenamiento y no participan en el ajuste de modelo. Este conjunto no filtra ninguna información a tus modelos, así que puedes usarlo de manera segura para tener una idea de qué tan bien se desempeñará el modelo en producción.
Un conjunto de prueba te permite comparar diferentes modelos de una manera imparcial (o menos sesgada) al final del proceso de entrenamiento. En otras palabras, puedes usar el conjunto de prueba como una confirmación final del poder predictivo de tu modelo.
¿Qué pasa si no tengo suficientes datos?
A veces no tienes suficientes datos para realizar entrenamiento/validación apropiados. Corres el riesgo de no poder entrenar apropiadamente el modelo o tener validación poco confiable dependiendo de la forma en que realizas la división. En estos escenarios, lo mejor es apartar algunos datos para el conjunto de prueba y realizar validación cruzada k-fold (k-pliegues).
En la validación cruzada k-fold, seleccionarás k diferentes subconjuntos de datos como conjuntos de validación y entrenarás k modelos en los datos restantes. Después de eso, evaluarás el rendimiento de los modelos y promediarás sus resultados. Esta técnica es especialmente útil si no tienes tantos datos disponibles para entrenamiento. Lo siguiente es un ejemplo cuando k es igual a 4.
Esto tiene la ventaja de ofrecerte una mejor idea del rendimiento del modelo sin necesitar montones de datos. La validación cruzada K-fold es un enfoque extremadamente popular y usualmente funciona sorprendentemente bien.
Saber estas cosas es importante
En este artículo, tratamos con conceptos fundamentales para hacer una carrera en ciencia de datos o machine learning. Si quieres entrar a este campo y comenzar a ir a entrevistas, probablemente te preguntarán sobre conjuntos de validación/prueba.
Esperemos que después de leer este artículo estés en una forma mucho mejor para responder esas preguntas.
¡Gracias por leer!
Qué hacer después
- Comparte este artículo con amigos y colegas. Gracias por ayudarme a llegar a personas que podrían encontrar útil esta información.
- Este artículo está basado en el libro: Data Science for Business: What You Need to Know about Data Mining and Data-Analytic Thinking.
- Envíame un email con preguntas, comentarios o sugerencias (está en la página Autor)