Use Case: AI-generated synthetic time series data
Ce guide fournit les procédures étape par étape pour les données de séquences synthétiques générées par l'IA. synthétiques générées par l'IA.
Last updated
Ce guide fournit les procédures étape par étape pour les données de séquences synthétiques générées par l'IA. synthétiques générées par l'IA.
Last updated
Supposons qu'un client dispose de deux tables contenant des données chronologiques, "Patients" et "Médicaments", qui doivent être synthétisées. Ces tables, qui simulent des données médicales, seront synthétisées, étant donné que "Médicaments" contient des données de séries temporelles et qu'il existe une relation clé étrangère-clé primaire (une à plusieurs) entre elles.
Créer un workspace comme décrit dans le [Create a workspace(../../setup-workspaces/create-a-workspace/).
L'espace de travail doit consister en un source et un destination base de données. La base de données destination doit avoir exactement les mêmes tables et colonnes, mais vides, que la base de données source base de données, avec accès en écriture.
Aligner les types de données : Veillez à ce que les types de données des colonnes dans les deux bases de données de la source et destination représentent fidèlement leur contenu. Par exemple, date Les colonnes doivent être du type Date, integer les colonnes de type Integeret decimal les colonnes de type Decimal/Float.
Dans un premier temps, les données de ces tableaux sont extraites de la base de données du client au format .csv. Un aperçu des premières colonnes des deux tableaux "Patients" et "MedicationsLes tableaux " sont fournis.
Le processus consiste à stocker ces tableaux dans une base de données liée à Syntho. Cette base de données, appelée sourceC'est de cette base de données que proviennent les données. Syntho synthétise ensuite ces données et les transfère dans une autre base de données, appelée destination. Dans cet exemple, une base de données MySQL et MySQL Workbench sont utilisés pour créer à la fois source et destination et de télécharger la base de données "Patients" et "Medications"vers la source. Par la suite, un nouvel espace de travail dans l'application Syntho est créé et connecté à ces bases de données.
Pour intégrer les tables dans la nouvelle base de données, il faut d'abord créer le fichier source pour nos tables.
Assurez-vous que le schéma est correctement nommé ; notre nouveau schéma s'intitule "healthcare."
Une fois que le "healthcare"est créé, les tables restent vides, ce qui nécessite l'étape suivante : la création de tables.
En examinant nos données .csv d'origine, on constate que le champ "Patients"Le tableau comprend les colonnes suivantes :
Id, BIRTHDATE, DEATHDATE, SSN, DRIVERS, PASSPORT, PREFIX, FIRST, LAST, SUFFIX, MAIDEN, MARITAL, RACE, ETHNICITY, GENDER, BIRTHPLACE, ADDRESS, CITY, STATE, COUNTY, ZIP, LAT, LON, HEALTHCARE_EXPENSES, HEALTHCARE_COVERAGE.
Il faut donc établir 25 colonnes avec des valeurs précises. Ci-dessous, un script SQL est fourni pour faciliter la création des "Patients"Ce processus s'applique également au tableau "Medicationstable ".
Création du tableau "PatientsLe tableau " est disponible ci-dessous.
Comme vous pouvez le voir dans les images ci-dessous, les tables sont prêtes.
Les tables sont maintenant prêtes pour l'insertion des données. Le script MySQL suivant remplira le tableau "patients"avec des données provenant de la base de données patients.csv fichier.
Pour réconcilier les différences de format de date entre le fichier CSV (DD/MM/YYYY
) et le format attendu par MySQL (YYY-MM-DD
), les quatre dernières lignes du script ajustent le formatage de la date. Cet ajustement empêche MySQL de mettre par défaut les dates non reconnues à '0000-00-00
', en utilisant la fonction STR_TO_DATE pour la conversion lors de l'importation. Par la suite, le champ "patientsLe tableau "A" sera alimenté.
Le tableau "patientsLe tableau " contient maintenant 12 352 lignes.
Le "patientsLe tableau " contient maintenant 12 352 lignes.
Cette procédure sera appliquée de la même manière au tableau "medicationstable ".
Vers la fin du prétraitement, un schéma et des tables vides pour la destination cible seront établis, reflétant le processus de création du schéma healthcare
. Cependant, des ajustements sont faits pour spécifier le schéma healthcare_synthetic
.
Avec les tables définies pour le schéma synthétique, la base de données est prête. L'étape suivante consiste à créer un espace de travail dans Syntho. Pour la création d'un espace de travail, se référer à la documentation Syntho ou suivre les étapes fournies, en s'assurant que les détails de connexion à la base de données MySQL sont correctement remplis. Un test de connexion réussi, indiqué par un cercle vert, sera nécessaire pour la base de données source et destination des bases de données.
Enfin, primary keys et foreign keys sont définies dans la base de données. Dans notre exemple, "PATIENTcolonne " de medications est un foreign key et reliée à l'unité "Idcolonne " du tableau des patients où "Id"est un primary key de patients table.
médicaments.PATIENT
patients.Id
Notre base de données est maintenant prête. Ensuite, nous allons ouvrir Syntho pour créer un espace de travail. Pour des instructions détaillées sur la création d'un espace de travail dans Syntho, veuillez consulter la section Créer un espace de travail dans la documentation Syntho. Pour créer un nouvel espace de travail, vous avez deux options :
Sur l'écran Launch Your Workspace sélectionnez Connect to a Database.
Utilisez la barre d'outils de gauche pour naviguer vers Create workspace > From database > [Database].
Veillez à remplir correctement les champs requis pour établir une connexion avec la base de données MySQL. Après avoir saisi les informations, cliquez sur "Tester la connexion" pour vérifier la connexion. Un cercle vert indique que la connexion est réussie. Ce processus de vérification s'applique à la fois à la base de données source et destination des bases de données.
Votre workspace est maintenant prêt à être utilisé.
Pour la génération de données synthétiques par l'IA, assurez-vous que vos données sont aptes à être synthétisées. Syntho est capable de traiter des données sous forme de lists, sequencesou time-series lorsqu'il est structuré en entity table-linked table structure. Assurez-vous que vos données répondent aux critères suivants :
La structure est adaptée au traitement lists, sequencesou time-series data.
Il comprend deux tableaux :
un entity table qui satisfait à la Entity tables requirements.
a linked table.
Chaque enregistrement dans la table d'entité doit avoir un identifiant unique (primary key).
Chaque enregistrement de la table liée doit faire référence à l'identifiant unique de la table d'entité (foreign key).
Semblable aux exigences pour [Entity tables] (use-case-ai-generated-synthetic-time-series-data.md#entity-tables), éliminer les colonnes dont les valeurs sont directly derived from other columns.
Supprimez les valeurs des lignes qui sont dérivées directement des valeurs des autres lignes. Par exemple, si votre jeu de données comprend des séquences avec des colonnes start_date
et end_date
, et que chaque start_date
correspond à la end_date
de la ligne qui la précède, supprimez l'une de ces valeurs redondantes, sous start_date
ou end_date
.
Pour plus d'informations sur la préparation de vos données lors de la synthèse de relations complexes entre tables, voir : Sequence model.
Notre exemple de tableau répond parfaitement à ces critères.
Pour la synthèse, placez l'icône "patient" et "medications"sous la table synthesize le mode de la table. Bien que Syntho mette par défaut les tables dans les modes appropriés, vous pouvez changer cela par glisser-déposer.
Sous Column settings > Generation Method, sélectionner AI-powered generation pour les modèles ML de Syntho afin de synthétiser les données. C'est aussi la méthode de génération par défaut, pour toutes les tables placées sous synthesize.
Dans le fichier PII tab, vous pouvez ajouter de nouvelles colonnes à la liste des PII colonnes, soit manually ou en utilisant la fonction PII scanner. Vous avez la possibilité de manually label columns contenant des IPI en sélectionnant le nom de la colonne et en choisissant éventuellement un simulateur à appliquer. En cliquant sur "Confirm"marquera la colonne comme contenant PII et confirmez la sélection de l'imitateur.
Vous pouvez également procéder à la détection automatique des IIP à l'aide de l'analyseur d'IIP. Lancez une analyse pour détecter les IIP dans toutes les colonnes de la base de données à partir de l'onglet IIP de l'application Job Configuration panneau. Notez que le scanner offre à la fois Shallow et Deep modes de balayage :
Le mode shallow scan évalue les colonnes en utilisant des règles d'expression régulière pour identifier les informations confidentielles, optimisées pour la vitesse mais avec une précision variable.
La deep scan examine à la fois les métadonnées et les données contenues dans les colonnes pour une identification complète des IIP.
Cette fonction permet de masquer des observations sensibles ou rares, telles que des professions spécifiques dans la catégorie "censusEn remplaçant les données de la table "A" par une valeur définie par l'utilisateur, la confidentialité des données est améliorée. Ajustez le rare category protection threshold et replacement valeur en Column settings > Encoding type > Advanced settings.
Rare category protection threshold: Toutes les valeurs de la colonne qui se produisent aussi souvent ou moins souvent que le rare category protection threshold sont automatiquement remplacés.
Rare category replacement value: Toutes les valeurs de la colonne qui se produisent aussi souvent ou moins souvent que le rare category protection threshold sont automatiquement remplacées par cette valeur de remplacement.
Par exemple, les professions apparaissant as frequently or less than 15sera remplacé par le signe astérisque ou "*". Le nombre et le signe sont facultatifs et peuvent être définis à la demande de l'utilisateur (voir l'illustration ci-dessous).
Sélectionner Advanced settings sous Encoding type pour visualiser et ajuster les paramètres au niveau de la colonne.
Vous pouvez ajuster les paramètres avancés suivants, en fonction du type d'encodage sélectionné :
Discrete | Continuous | Datetime
Clipping threshold: Le plancher et le plafond d'une colonne comme le Nth la valeur la plus basse et la valeur la plus élevée, où N est le seuil d'écrêtage. La valeur du seuil traitera les valeurs de manière à ne pas dépasser le plafond et le plancher.
Dans les paramètres du travail, sous les paramètres du tableau, vous pouvez ajuster les paramètres du générateur, y compris le nombre maximum de lignes pour la formation afin d'optimiser la vitesse. En laissant ce paramètre à None utilise toutes les lignes. Le "Take random sampleL'option " permet l'échantillonnage :
On: Des lignes aléatoires sont sélectionnées pour la formation.
Off: Les premières lignes de la base de données sont utilisées.
Prenons l'exemple d'une tâche de génération de données Patients et PatientMedications présentés ci-dessous. Ils proviennent de la [documentation Syntho] (../../configurer un job de génération de données/configurer les paramètres des colonnes/ai-powered-generation/sequence-model/) et ressemblent à notre modèle de génération de données. patient et medications tables. Ici, les Patients est le tableau entity table. Les PatientMedications est le linked table.
Pour synthétiser ces tables à l'aide des modèles de séquence de Syntho :
Syntho commence par synthétiser la table Patients
.
Ensuite, il synthétise la table PatientsMédicaments
en utilisant le modèle de séquence synthétique. Patients comme contexte.
Pour utiliser les modèles synthétiques de séquences de données de Syntho, vous pouvez procéder comme suit :
Sur l'écran Job Configuration panneau, drag le tableau des entités liées et le tableau lié sous Synthesize.
Faites glisser tous les autres tableaux sous De-identify ou Exclude.
Sur l'écran Job configuration sélectionner Generate.
Sur l'écran Job configuration activez la fonction Enable sequence modeling basculer.
Enfin, sélectionnez Start generating.
Avant de lancer le processus de génération, vous avez la possibilité de modifier les paramètres du modèle de séquence. En voici un aperçu :
Max sequence length: Fixe une limite à la longueur des séquences et tronque toute séquence qui dépasse cette limite.
Rare long sequence protection threshold: Définit une limite pour la longueur des séquences de données utilisées dans l'apprentissage, en ajustant les séquences les plus longues à la longueur de l'indicateur Nth séquence.
N generated entities: Détermine le nombre d'entités à générer, chacune associée à une séquence.
Read batch size: La quantité de lignes lues à partir de chaque table source par lot.
Write batch size: La quantité de lignes insérées dans chaque table de destination par lot.
N connections: Spécifie le nombre de connexions.
Les utilisateurs doivent manuellement TRUNCATE leurs tables dans les DESTINATION avant de lancer chaque nouvelle tâche de génération de données. Si la troncature est entravée par des contraintes existantes, celles-ci doivent être temporairement désactivées avant la troncature, puis réactivées par la suite. Par exemple, pour faciliter le processus de troncation lorsque des contraintes de clés étrangères l'empêchent, utilisez les commandes SQL suivantes : Tout d'abord, désactivez les contraintes en exécutant SET FOREIGN_KEY_CHECKS = 0;
, puis TRUNCATE la table, et enfin, ré-activer les contraintes avec SET FOREIGN_KEY_CHECKS = 1;
. Cette séquence permet de s'assurer que les tables sont correctement préparées pour la génération de données sans violation des contraintes.
2 Tables: L'utilisation de modèles de séquence est limitée à deux tableaux afin d'améliorer l'utilité des données synthétiques.
Mockers: Non compatible avec le modèle de séquence.
Resource Consumption: En raison de sa nature gourmande en ressources, cette fonction peut ralentir votre processus de génération de données. Il est conseillé de réduire les données d'entrée ou d'ajuster les paramètres du modèle de séquence afin d'économiser du temps et des ressources.
Ces lignes directrices ont pour but d'optimiser votre expérience avec Syntho.