Aleatorización

Consideraciones prácticas

Haz que tu canalización de generación de datos sea reproducible. Supongamos que deseas agregar un atributo para ver cómo afecta la calidad del modelo. Para un experimento justo, tus conjuntos de datos deben ser idénticos, excepto por esta función nueva. Si las ejecuciones de generación de datos no se pueden reproducir, no puedes crear estos conjuntos de datos.

Con ese espíritu, asegúrate de que cualquier aleatorización en la generación de datos pueda ser determinista:

  • Genera tus generadores de números al azar (RNG). La propagación garantiza que el RNG genere los mismos valores en el mismo orden cada vez que lo ejecutes y vuelva a crear tu conjunto de datos.
  • Usa claves hash no variables. El hashing es una forma común de dividir o muestrear datos. Puedes generar un hash para cada ejemplo y usar el número entero resultante a fin de decidir en qué división colocar el ejemplo. Las entradas a tu función de hash no deberían cambiar cada vez que ejecutes el programa de generación de datos. No uses la hora actual ni un número aleatorio en tu hash, por ejemplo, si quieres volver a crearlos a pedido.

Los enfoques anteriores se aplican al muestreo y la división de tus datos.

Consideraciones para el hash

Imagina que recopilas consultas de búsqueda y usas el hash para incluir o excluir consultas. Si la clave hash solo usó la consulta, entre varios días de datos, siempre la incluirás o la excluirás siempre. Incluir o excluir siempre una consulta es malo por las siguientes razones:

  • Su conjunto de entrenamiento verá un conjunto de consultas menos diverso.
  • Los conjuntos de evaluación serán difíciles de manera artificial, ya que no se superpondrán con los datos de entrenamiento. En realidad, en el momento de la entrega, habrás visto parte del tráfico en vivo en tus datos de entrenamiento, por lo que tu evaluación debe reflejar eso.

En su lugar, puedes generar un hash en la consulta más la fecha, lo que generaría un hash diferente cada día.

 

Visualización animada en la que se muestra cómo generar hash solo en la consulta hace que los datos ingresen en el mismo bucket todos los días, pero generar hash en la consulta más el tiempo de consulta hace que los datos vayan a diferentes buckets cada día. Los tres depósitos son Ignorado, Evaluación y Entrenamiento.