Use Case: AI-generated synthetic time series data
Last updated
Last updated
ある顧客が "Patients "と "Medications "という2つの時系列データを持つテーブルを持っていると仮定する。医療データをシミュレートしたこれらのテーブルは、"Medications "が時系列データを含み、両者の間に外部キーと主キーの関係(1対多)があることを考慮して、合成される。
を作成する。 workspace にあるとおりである。Create a workspaceセクションを参照してください。
ワークスペースは source そして destination データベースその destination データベースとまったく同じ、しかし空のテーブルとカラムを持っていなければなりません。 source データベースへの書き込みが可能です。
データ型を揃える:データ型を揃える。 source そして destination データベースはその内容を正確に表している。例えば date カラムは Date, integer 型の列 Integerそして decimal 型の列 Decimal/Float.
最初に、これらのテーブルのデータは、顧客のデータベースから.csv形式で抽出される。.csv形式で顧客データベースから抽出される。Patients"と"Medications"の表が用意されている。
このプロセスでは、これらのテーブルをSynthoにリンクされたデータベースに格納する。このデータベースは sourceこれがデータの出所である。そして、シントーはこのデータを合成し、別のデータベース、通称 destination.この例では、MySQLデータベースとMySQL Workbenchを使用して、次の両方を作成します。 source そして destination データベースをアップロードし、"Patients"と"Medications「テーブルをソースに追加する。その後、Syntho アプリの新しいワークスペースが作成され、これらのデータベースに接続されます。
テーブルを新しいデータベースに統合するには、まず source テーブルのスキーマ。
患者テーブルには12352行が含まれます。
この手順は、同様に"medications"表である。
前処理の終盤になると、healthcare
スキーマの作成プロセスを反映して、ターゲットとなるデスティネーション用の空のスキーマとテーブルが確立される。しかし、healthcare_synthetic
スキーマを指定するための調整が行われる。
合成スキーマ用のテーブルが設定され、データベースの準備は完了した。次のステップでは、Syntho でワークスペースを作成します。ワークスペースの作成については、Syntho のドキュメントを参照するか、提供されている手順に従って、MySQL データベースの接続の詳細が正確に入力されていることを確認してください。緑色の丸で示された接続テストに成功すると、MySQL データベースへの接続が完了します。 source そして destination データベース
最後に primary keys そして foreign keys はデータベースで定義されている。この例では、"PATIENTの列 medications テーブルは foreign key に接続されている。Id「患者テーブルの"Idは primary key の patients テーブル
medications.PATIENT
patients.Id
これでデータベースの準備ができました。次に、Syntho を開いてワークスペースを作成します。Syntho でワークスペースを作成する詳細な手順については、Syntho ドキュメントの Create a workspace セクションを参照してください。新しいワークスペースを作成するには、2 つの方法があります:
新規ワークスペースを作成するには、以下の 2 つの方法があります。 Launch Your Workspace 画面で Connect to a Database.
左のツールバーを使用して、次の場所に移動します。 Create workspace > From database > [Database].
MySQLデータベースとの接続を確立するために、必要なフィールドに正確に入力していることを確認してください。情報を入力した後、"Test Connection "をクリックして接続を確認します。緑色の丸は接続が成功したことを示します。この検証プロセスは source そして destination データベース
あなたの workspace が使用可能になった。
AIによる合成データ生成のためには、データが合成に適していることを確認します。Synthoは以下のような形式のデータを処理できます。 lists, sequencesあるいは time-series で構成されている場合 entity table-linked table 構造であること。データが以下を満たしていることを確認する:
以下の条件を満たしていること。 lists, sequencesあるいは time-series data.
つのテーブルが含まれている:
を含む。 entity table を満たすものである。Entity tables requirements](use-case-ai-generated-synthetic-time-series-data.md#entity-tables)。
a linked table.
エンティティ・テーブルの各レコードには一意なID (primary key).
リンク・テーブルの各レコードは、エンティティ・テーブル (foreign key).
の要件に似ている。Entity tables](use-case-ai-generated-synthetic-time-series-data.md#entity-tables)、値が以下のカラムを除外する。 directly derived from other columns.
他の行の値から直接派生した行の値を削除する。例えば、データセットに start_date
カラムと end_date
カラムがあり、それぞれの start_date
がその前の行の end_date
と一致する場合、start_date
または end_date
の下にある冗長な値のいずれかを削除する。
複雑なテーブルのリレーションシップを合成する際のデータの準備についての詳細は、以下を参照してください:sequence-modelを参照してください。
この例のテーブルは、これらの条件を完全に満たしています。
合成には、"patient"と"medications「の下にある。 synthesize テーブルモード。Syntho はデフォルトでテーブルを適切なモードに設定しますが、ドラッグ&ドロッ プで変更できます。
下 Column settings > Generation Method選択 AI-powered generation SynthoのMLモデルがデータを合成するためのものです。これはまた、デフォルトの生成方法でもあります。 synthesize.
には PII tabのリストに新しい列を追加することができる。 PII 列のどちらかです。 manually またはシンソの PII scanner.以下のオプションがあります。 manually label columns カラム名を選択し、オプションで適用するモッカーを選択することにより、PIIを含む。をクリックする。Confirm「を含む列としてマークされます。 PII とモッカーの選択を確認する。
あるいは、PIIスキャナーを使用して自動PII検出を導入します。のPIIタブから、すべてのデータベース列にわたってPIIを検出するスキャンを起動します。 Job Configuration パネルに表示されます。スキャナには Shallow そして Deep スキャンモード:
スキャンモード shallow scan は、正規表現ルールを使用してカラムを評価し、PII を識別する。
その deep scan は、PIIを徹底的に特定するために、メタデータとカラム内のデータの両方を調べます。
この機能は、"census"テーブルをユーザー定義の値に置き換えることで、データのプライバシーを強化する。を調整する。 rare category protection threshold そして replacement 値 Column settings > Encoding type > Advanced settings.
Rare category protection threshold:と同じかそれ以下の頻度で出現するすべての列の値。 rare category protection threshold は自動的に置き換えられる。
Rare category replacement value:と同じかそれ以下の頻度で出現するすべての列の値。 rare category protection threshold は自動的にこの置換値で置き換えられる。
例えば as frequently or less than 15という記号に置き換えられます。番号と記号は任意であり、ユーザーの要求に応じて定義することができます(下図参照)。
選択 Advanced settings アンダー Encoding type をクリックして、列レベルの設定を表示し、調整します。 選択したエンコーディング・タイプに応じて、以下の高度なカラム設定を調整することができます: Discrete | Continuous | Datetime
Clipping threshold: 柱の床と天井 Nth 最低値と最高値。 N はクリッピングしきい値。しきい値は天井と床を超えないように値を処理する。
ジョブ設定のテーブル設定で、速度を最適化するためのトレーニングの最大行数を含む、ジェネレーターレベルの設定を調整できます。この設定を None はすべての行を利用する。その"Take random sample"オプションはサンプリングを可能にする:
On:ランダムな行がトレーニング用に選択される。
Off:データベースの上位行が使用される。
ここでは Patients そして PatientMedications テーブルを以下に示します。これらはSyntho documentationにあるもので、私たちの patient そして medications テーブルここで Patients テーブルは entity table.その PatientMedications テーブルは linked table.
.
Synthoのシーケンスモデルを使ってこれらのテーブルを合成します: 1.Syntho は Patients
テーブルの合成から始めます。 2.次に PatientMedications
テーブルを合成します。 Patients テーブルをコンテキストとする。
Syntho の合成データシーケンスモデルを使うには、以下のようにします: 1.以下のようにします。 Job Configuration のパネルがある、 drag の下にある関連エンティティ・テーブルとリンク・テーブル。 Synthesize. 2.他のテーブルを De-identify または Exclude. 3.3. Job configuration パネルで Generate. 4.4. Job configuration パネルで Enable sequence modeling をトグルする。 5.最後に Start generating.
生成プロセスを開始する前に、シーケンスモデルパラメータを修正するオプションがあります。以下はその概要です:
Max sequence length: シーケンスの長さに上限を設定し、この上限を超えるシーケンスは切り捨てられる。 Rare long sequence protection threshold: トレーニングに使用するデータシーケンスの長さの制限を定義し、最長シーケンスを Nth シーケンス。
N generated entities: 生成するエンティティの数を決定し、それぞれがシーケンスに関連付けられる。
Read batch size: バッチごとに各ソース・テーブルから読み込まれる行の量。
Write batch size: バッチごとに各デスティネーションテーブルに挿入される行数。
N connections: 接続数を指定する。
ユーザは手動で TRUNCATE のテーブルの DESTINATION データベースのトランケーションは、各新規データ生成ジョブを開始する前に行われます。既存の制約によって切り捨てが妨げられる場合は、切り捨ての前にこれらの制約を一時的に無効にし、切り捨て後に再び有効にする必要があります。例えば、外部キー制約によって切り捨てができない場合に切り捨て処理を容易にするには、以下のSQLコマンドを使用します:まず、SET FOREIGN_KEY_CHECKS = 0;
を実行して制約を無効にし、次に TRUNCATE そして最後に、SET FOREIGN_KEY_CHECKS = 1;
で制約を再度有効にします。このシーケンスにより、テーブルが制約違反なしにデータ生成のために適切に準備されることが保証されます。
2 Tables: シーケンスモデルの使用は、合成データの有用性を高めるために2つの表に限定されている。
Mockers: シーケンスモデルとの互換性はありません。
Resource Consumption: リソースを大量に消費する性質上、この機能はデータ生成プロセスを減速させるかもしれない。時間とリソースを節約するために、入力データを少なくするか、シーケンスモデルのパラメーターを調整することをお勧めします。 これらのガイドラインは、Synthoでの経験を最適化することを目的としています。