Randomisation

Considérations pratiques

Rendez votre pipeline de génération de données reproductible. Supposons que vous souhaitiez ajouter une caractéristique pour voir comment elle affecte la qualité du modèle. Pour un test équitable, vos ensembles de données doivent être identiques, à l'exception de cette nouvelle fonctionnalité. Si vos exécutions de données ne sont pas reproductibles, vous ne pouvez pas créer ces ensembles de données.

Dans cet esprit, assurez-vous que toute randomisation dans la génération de données peut être déterministe:

  • Consultez vos générateurs de nombres aléatoires. L'injection garantit que la GNA génère les mêmes valeurs dans le même ordre chaque fois que vous l'exécutez, recréant ainsi votre ensemble de données.
  • Utilisez des clés de hachage invariantes. Le hachage est un moyen courant de diviser ou d'échantillons de données. Vous pouvez hacher chaque exemple et utiliser l'entier obtenu pour décider de la division de l'exemple. Les entrées de votre fonction de hachage ne doivent pas changer chaque fois que vous exécutez le programme de génération de données. N'utilisez pas l'heure actuelle ni un nombre aléatoire dans votre hachage, par exemple si vous souhaitez recréer vos hachages à la demande.

Les approches précédentes s'appliquent à la fois à l'échantillonnage et à la division de vos données.

Remarques sur le hachage

Imaginez que vous collectiez des requêtes de recherche et que vous utilisiez le hachage pour inclure ou exclure des requêtes. Si la clé de hachage n'a utilisé que la requête, vous pouvez soit inclure cette requête, soit l'exclure toujours sur plusieurs jours de données. L'inclusion ou l'exclusion systématique d'une requête est déconseillée pour les raisons suivantes:

  • L'ensemble de requêtes de votre ensemble d'entraînement sera moins diversifié.
  • Vos ensembles d'évaluation seront artificiellement difficiles, car ils ne se superposeront pas à vos données d'entraînement. En réalité, au moment de la diffusion, une partie du trafic en direct a été constatée dans vos données d'entraînement. Votre évaluation devrait donc en tenir compte.

Au lieu de cela, vous pouvez hacher la requête et la date, ce qui entraîne un hachage différent chaque jour.

 

Visualisation animée montrant comment le hachage uniquement sur la requête entraîne le transfert quotidien des données dans le même bucket. En revanche, le hachage de la requête et la durée de la requête provoquent le transfert quotidien des données dans des buckets différents. Les trois buckets sont "Entraînement", "Évaluation" et "Ignoré".