Use Case: AI-generated synthetic time series data
Last updated
Last updated
Stel dat een klant twee tabellen heeft met tijdreeksgegevens, "Patiënten" en "Medicijnen", die moeten worden gesynthetiseerd. Deze tabellen, die medische gegevens simuleren, zullen worden gesynthetiseerd, aangezien "Medications" tijdreeksgegevens bevat en er een foreign key-primary key-relatie (one-to-many) tussen beide bestaat.
Maak een workspace zoals beschreven in de [Create a workspace(../../setup-workspaces/create-a-workspace/) gedeelte.
De werkruimte moet bestaan uit een source en een destination database. De destination database moet exact dezelfde, maar lege tabellen en kolommen hebben als de source database, met schrijftoegang.
Datatypen op elkaar afstemmen: Zorg ervoor dat de gegevenstypen van kolommen in zowel de source en destination databases hun inhoud nauwkeurig weergeven. Bijvoorbeeld, date kolommen moeten van het type Date, integer kolommen van het type Integeren decimal kolommen van het type Decimal/Float.
In eerste instantie worden de gegevens van deze tabellen in .csv-formaat uit de database van de klant gehaald. Een overzicht van de eerste paar kolommen voor beide "Patients" en "Medications" tabellen is voorzien.
Deze tabellen worden opgeslagen in een database die gekoppeld is aan Syntho. Deze database, de sourceis waar de gegevens vandaan komen. Syntho synthetiseert deze gegevens vervolgens en stuurt ze door naar een andere database, bekend als de destination. In dit voorbeeld worden een MySQL database en MySQL Workbench gebruikt om zowel source en destination databases en om de "Patients" en "Medications" tabellen naar de bron. Vervolgens wordt een nieuwe werkruimte in de Syntho app gemaakt en verbonden met deze databases.
Om de tabellen in de nieuwe database te integreren, maakt u eerst de source schema voor onze tabellen.
Zorg ervoor dat het schema de juiste naam heeft; ons nieuwe schema is getiteld "healthcare."
Zodra de "healthcare" schema is aangemaakt, blijven de tabellen leeg, waardoor de volgende stap nodig is: tabellen aanmaken.
Als we onze originele .csv-gegevens bekijken, is de "Patients" tabel bestaat uit de volgende kolommen:
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.
We moeten dus 25 kolommen met precieze waarden aanmaken. Hieronder staat een SQL-script om het aanmaken van de "Patients" tabel, een proces dat op dezelfde manier wordt toegepast op de "Medications" tafel.
Aanmaken van "Patients" tabel hieronder.
Zoals je in de onderstaande afbeeldingen kunt zien, zijn de tabellen klaar.
De tabellen zijn nu voorbereid voor het invoegen van gegevens. Het volgende MySQL-script zal de "patients" tabel met gegevens uit de patients.csv bestand.
Om verschillen in datumnotatie tussen het CSV-bestand (DD/MM/JJJJ
) en de verwachte notatie van MySQL (JJJ-MM-DD
) op te lossen, passen de laatste vier regels van het script de datumnotatie aan. Deze aanpassing voorkomt dat MySQL niet-herkende datums standaard op 0000-00-00
zet, door gebruik te maken van de STR_TO_DATE functie voor conversie tijdens het importeren. Vervolgens wordt de "patients" tabel wordt ingevuld.
De "patients" tabel bevat nu 12.352 rijen.
De "patients" tabel bevat nu 12.352 rijen.
Deze procedure wordt op dezelfde manier toegepast op de "medications" tafel.
Tegen het einde van de voorbewerking worden lege schema's en tabellen voor de doelbestemming aangemaakt, net als bij het aanmaken van het healthcare
schema. Er worden echter aanpassingen gemaakt om het healthcare_synthetic
schema te specificeren.
Met de tabellen ingesteld voor het synthetische schema, is de database klaar. De volgende stap is het aanmaken van een workspace in Syntho. Raadpleeg voor het aanmaken van een workspace de Syntho documentatie of volg de meegeleverde stappen en zorg ervoor dat de MySQL database verbindingsgegevens correct zijn ingevuld. Het succesvol testen van de verbinding, aangegeven met een groene cirkel, is vereist voor zowel de source en destination databases.
Eindelijk, primary keys en foreign keys zijn gedefinieerd in de database. In ons voorbeeld "PATIENT" kolom van medications tabel is een foreign key en aangesloten op de "Id" kolom van de patiëntentabel waar "Id" is een primary key van patients tafel.
| Externe sleutel Primaire sleutel | ------------------- | ----------- | | medications.PATIENT | patients.Id |
Onze database is nu klaar. Vervolgens openen we Syntho om een workspace aan te maken. Raadpleeg voor gedetailleerde instructies over het maken van een workspace in Syntho het gedeelte Een workspace maken in de Syntho-documentatie. Om een nieuwe workspace te maken, hebt u twee opties:
Op de Launch Your Workspace scherm, selecteer Connect to a Database.
Gebruik de linker werkbalk om te navigeren naar Create workspace > From database > [Database].
Zorg ervoor dat u de vereiste velden nauwkeurig invult om een verbinding met de MySQL database tot stand te brengen. Klik na het invoeren van de gegevens op "Test Connection" om de verbinding te controleren. Een groene cirkel geeft een succesvolle verbinding aan. Dit verificatieproces is van toepassing op zowel de source en destination databases.
Uw workspace is nu klaar voor gebruik.
Voor het genereren van AI-gestuurde synthetische gegevens, moet u ervoor zorgen dat uw gegevens geschikt zijn om te synthetiseren. Syntho kan gegevens verwerken in de vorm van lists, sequencesof time-series wanneer gestructureerd in entity table-linked table structuur. Zorg ervoor dat je gegevens aan het volgende voldoen:
De structuur is afgestemd op het verwerken van lists, sequencesof time-series data.
Het bevat twee tabellen:
een entity table die voldoet aan de [Entity tables requirements] (use-case-ai-generated-synthetic-time-series-data.md#entity-tables).
a linked table.
Elk record in de entiteittabel heeft een uniek ID (primary key).
Elk record in de gekoppelde tabel moet verwijzen naar de unieke ID van de entiteittabel (foreign key).
Vergelijkbaar met de vereisten voor [Entity tables] (use-case-ai-generated-synthetic-time-series-data.md#entity-tables), elimineer kolommen waarvan de waarden zijn directly derived from other columns.
Verwijder rijwaarden die direct zijn afgeleid van waarden in andere rijen. Bijvoorbeeld, als je dataset rijen bevat met start_datum
en einde_datum
kolommen, en elke start_datum
komt overeen met de einde_datum
van de rij ervoor, verwijder dan een van deze overbodige waarden, onder start_datum
of einde_datum
.
Voor meer informatie over het voorbereiden van je gegevens bij het synthetiseren van complexe tabelrelaties, zie: .
Onze voorbeeldtabel voldoet volledig aan deze criteria.
Plaats voor het synthetiseren de "patient" en "medications" tabel onder de synthesize tabelmodus. Hoewel Syntho tabellen standaard in de juiste modi zet, kun je dit wijzigen via slepen en neerzetten.
Onder Column settings > Generation Methodkiezen AI-powered generation voor Syntho's ML-modellen om gegevens te synthetiseren. Dit is ook de standaard generatiemethode, voor alle tabellen geplaatst onder synthesize.
In de PII tabkunt u nieuwe kolommen toevoegen aan de lijst van PII kolommen, ofwel manually of door Syntho's PII scanner. U hebt de optie om manually label columns die PII bevat door de kolomnaam te selecteren en optioneel een spotter te kiezen om toe te passen. Door op "Confirm" markeert de kolom als bevattende PII en bevestig de selectie van de spotter.
U kunt ook automatisch PII detecteren met de PII-scanner. Start een scan om PII te detecteren in alle databasekolommen op het tabblad PII in het venster Job Configuration paneel. Merk op dat de scanner zowel Shallow en Deep scanmodi:
De shallow scan beoordeelt kolommen met behulp van reguliere expressieregels om PII te identificeren, geoptimaliseerd voor snelheid maar met variabele nauwkeurigheid.
De deep scan onderzoekt zowel metagegevens als gegevens binnen kolommen voor een grondige identificatie van PII.
Deze functie helpt gevoelige of zeldzame waarnemingen te verbergen, zoals specifieke beroepen in de "census" tabel, door ze te vervangen door een door de gebruiker gedefinieerde waarde, waardoor de gegevensprivacy wordt verbeterd. Pas de rare category protection threshold en replacement waarde in Column settings > Encoding type > Advanced settings.
Rare category protection threshold: Alle kolomwaarden die even vaak of minder vaak voorkomen dan de rare category protection threshold worden automatisch vervangen.
Rare category replacement value: Alle kolomwaarden die even vaak of minder vaak voorkomen dan de rare category protection threshold worden automatisch vervangen door deze vervangende waarde.
Beroepen die bijvoorbeeld as frequently or less than 15wordt vervangen door het teken sterretje of "*". Het nummer en teken is vrijwillig en kan op verzoek van de gebruiker worden gedefinieerd (zie onderstaande afbeelding).
Selecteer Advanced settings onder Encoding type om instellingen op kolomniveau te bekijken en aan te passen.
Je kunt de volgende geavanceerde kolominstellingen aanpassen, afhankelijk van het geselecteerde coderingstype:
Discrete | Continuous | Datetime
Clipping threshold: De vloer en het plafond van een kolom als de Nth laagste en hoogste waarde, waarbij N is de afkapdrempel. De drempelwaarde zorgt ervoor dat de waarden het plafond en de ondergrens niet overschrijden.
In de taakinstellingen, onder tabelinstellingen, kunt u instellingen op generatorniveau aanpassen, inclusief het maximum aantal rijen voor training om de snelheid te optimaliseren. Als u deze instelling als None gebruikt alle rijen. De "Take random sample" optie maakt bemonstering mogelijk:
On: Willekeurige rijen worden geselecteerd voor training.
Off: De bovenste rijen uit de database worden gebruikt.
Laten we de Patients en PatientMedications tabellen hieronder. Ze komen uit Syntho documentatie en lijken op onze patient en medications tabellen. De Patients tabel is de entity table. De PatientMedications tabellen is de linked table.
Om deze tabellen te synthetiseren met behulp van Syntho's sequentiemodellen:
Syntho begint met het samenstellen van de tabel Patiënten
.
Vervolgens synthetiseert het de PatientMedications
tabel met behulp van de synthetische Patients tabel als context.
Om Syntho's synthetische gegevensvolgordenmodellen te gebruiken, kun je het volgende doen:
Op de Job Configuration paneel, drag de tabel met verwante entiteiten en de gekoppelde tabel onder Synthesize.
Sleep eventuele andere tabellen onder De-identify of Exclude.
Op de Job configuration paneel, selecteer Generate.
Op de Job configuration paneel, schakel de Enable sequence modeling knevel.
Selecteer ten slotte Start generating.
Voordat je het generatieproces start, heb je de mogelijkheid om sequentiemodelparameters aan te passen. Hier volgt een overzicht:
Max sequence length: Stelt een limiet in op de lengte van reeksen en kort elke reeks in die deze limiet overschrijdt.
Rare long sequence protection threshold: Bepaalt een limiet voor de lengte van gegevensreeksen die worden gebruikt in training, waarbij de langste reeksen worden aangepast aan de lengte van de Nth volgorde.
N generated entities: Bepaalt het aantal entiteiten dat moet worden gegenereerd, elk geassocieerd met een reeks.
Read batch size: De hoeveelheid rijen die van elke brontabel worden gelezen per batch.
Write batch size: De hoeveelheid rijen die per batch in elke bestemmingstabel worden ingevoegd.
N connections: Geeft het aantal verbindingen op.
Gebruikers moeten handmatig TRUNCATE hun tafels in de DESTINATION database voordat elke nieuwe taak voor het genereren van gegevens wordt gestart. Als trunceren wordt belemmerd door bestaande beperkingen, dan moeten deze beperkingen tijdelijk worden uitgeschakeld voor het trunceren en daarna weer worden ingeschakeld. Bijvoorbeeld, om het truncatie proces te vergemakkelijken wanneer foreign key beperkingen dit verhinderen, gebruik de volgende SQL commando's: Schakel eerst de beperkingen uit door SET FOREIGN_KEY_CHECKS = 0;
uit te voeren, en vervolgens TRUNCATE de tabel en activeer tenslotte de beperkingen opnieuw met SET FOREIGN_KEY_CHECKS = 1;
. Deze volgorde zorgt ervoor dat tabellen goed worden voorbereid voor het genereren van gegevens zonder dat de beperkingen worden geschonden.
2 Tables: Het gebruik van sequentiemodellen is beperkt tot twee tabellen om de bruikbaarheid van synthetische gegevens te verbeteren.
Mockers: Niet compatibel met het sequentiemodel.
Resource Consumption: Omdat deze functie veel middelen vergt, kan het het genereren van gegevens vertragen. Het is raadzaam om de invoergegevens te beperken of de parameters van het sequentiemodel aan te passen om tijd en middelen te besparen.
Deze richtlijnen zijn bedoeld om je ervaring met Syntho te optimaliseren.