Use Case: AI-generated synthetic data
Last updated
Last updated
下図は、AIが生成する合成データのワークフローを示しています。図に示された各ステップに関する詳細情報は、このページ全体に記載されています。
この主な使用例では、1つのテーブル、名前は census国勢調査で収集されたデータを含む、SynthoのAIを搭載した世代を使用して合成する必要があります。プライバシーの最大化と、元のデータセットを統計的に反映した非常に現実的なデータの生成は、AIとアナリティクスにとって極めて重要である。最初のステップでは、国勢調査データベースとリンクしたワークスペースをSynthoで作成する。このワークスペースは、国勢調査データベースとリンクしている。 census テーブルのみである。以下に、テーブルの列と含まれるデータのサンプルを示す。
***
を作成する。 workspace にあるとおりである。Create a workspace](../../setup-workspaces/create-a-workspace/)セクションを参照してください。
ワークスペースは source そして destination データベースその destination データベースとまったく同じ、しかし空のテーブルとカラムを持っていなければなりません。 source データベースへの書き込みが可能です。
データ型を揃える:データ型を揃える:ソース・データベースとデスティネーション・データベースの両方で、列のデータ型がその内容を正確に表していることを確認する。例えば date カラムは Date, integer 型の列 Integerそして decimal 型の列 Decimal/Float.
AIによる合成データ生成のためには、データが合成に適していることを確認してください。Synthoはデータが entity table 特定のガイドラインを遵守している: 1.最低 column-to-row ratio of 1:500 プライバシーとアルゴリズムの汎化のために。15カラムの場合、少なくとも7,500行を目指します。私たちのデータベース例では、48,842行でこれを超えています(下図参照)。 2.2.各エンティティを1行に記述し、連続した情報なしで行の独立性を確保する。 3.使用する generic column names 機密情報の漏洩を避けるため、"patient_a_medications "のような特定の患者識別子を、名前を持つ患者カラムに置き換える。 4.モデリングを改善し、合成データの質を高めるために、他から派生した列を削除する。 この例のテーブルは、これらの基準を満たしています。
合成には census テーブルの下 synthesize テーブルモード。Syntho はデフォルトでテーブルを適切なモードに設定しますが、ドラッグ&ドロッ プで変更できます。 下 Column settings > Generation Method選択 AI-powered generation SynthoのMLモデルがデータを合成するためのものです。これはまた、デフォルトの生成方法でもあります。 synthesize.
この機能は、[レアカテゴリの保護] の特定の職業のような、センシティブまたはレアなオブザベーションを隠すのに役立ちます。 census テーブルをユーザー定義の値に置き換えることで、データのプライバシーを強化する。を調整する。 rare category protection threshold そして replacement value で Column settings > Encoding type > Advanced settings.
Rare category protection threshold:レアカテゴリの保護しきい値以下の頻度で発生するすべての列の値が自動的に置換されます。
Rare category replacement value:レアカテゴリの保護しきい値以下の頻度で発生するすべての列の値は、自動的にこの置換値で置き換えられます。
例えば as frequently or less than 15に置き換えられます。番号と置換値は任意であり、ユーザーの要求に応じて定義することができます(下図参照)。
Optional:AIが生成した合成データのテーブルでは、PIIカラムのラベル付けと置換は手動で行う。
には PII tabPIIカラムのリストに新しいカラムを追加するには、手動またはSynthoの PII scanner.カラム名を選択し、オプションで適用するモッカーを選択することで、PIIを含むカラムに手動でラベルを付けるオプションがある。をクリックする。Confirm"はPIIを含む列としてマークされ mocker を選択した。
あるいは、PIIスキャナーを使用して自動PII検出を導入します。のPIIタブから、すべてのデータベース列にわたってPIIを検出するスキャンを起動します。 Job Configuration パネルに表示されます。スキャナには Shallow そして Deep スキャンモード:
スキャンモード shallow scan は、正規表現ルールを使用してカラムを評価し、PII を識別する。
その deep scan は、PIIを徹底的に特定するために、メタデータとカラム内のデータの両方を調べる。
モッカーを使ってPIIカラムを置き換えることができます。そうでない場合、それらのPIIカラムはカテゴリーカラムとして扱われ、Synthoの「レアカテゴリー保護」によって処理されます。
ジョブ設定のテーブル設定で、速度を最適化するためのトレーニングの最大行数など、ジェネレーター・レベルの設定を調整できます。この設定を None はすべての行を利用する。その Take random sample オプションはサンプリングを可能にする:
On:ランダムな行がトレーニング用に選択される。
Off:データベースの上位行が使用される。
データ生成を開始するには、以下のようにします:
をクリックする。 Job Configuration のパネルがある、 drag の関連表 Synthesize.
他のテーブルを De-identify または Exclude.
Job configuration パネルで Generate.
Job configuration summary panel, adjust generation parameters as desired**.
最後に Start generating.
生成プロセスを開始する前に、モデルパラメータを修正するオプションがあります。以下はその概要です:
Read batch size: バッチごとに各ソース・テーブルから読み込まれる行数。
Write batch size: バッチごとに各デスティネーションテーブルに挿入される行数。
N connections: 接続数を指定する。
ユーザーは手動で TRUNCATE のテーブルの DESTINATION データベースのトランケーションは、各新規データ生成ジョブを開始する前に行われる。既存の制約によって切り捨てが妨げられる場合は、切り捨ての前にこれらの制約を一時的に無効にし、切り捨て後に再び有効にする必要があります。例えば、外部キー制約によって切り捨てができない場合に切り捨て処理を容易にするには、以下のSQLコマンドを使用します:まず、SET FOREIGN_KEY_CHECKS = 0;
を実行して制約を無効にし、次に TRUNCATE そして最後に、SET FOREIGN_KEY_CHECKS = 1;
で制約を再度有効にします。このシーケンスにより、テーブルが制約違反なしにデータ生成のために適切に準備されることが保証されます。
SDMetrics はオープンソースです。 Python 表形式の合成データを評価するために設計されたライブラリで、選択的なメトリック評価、詳細な結果説明、スコアの視覚化、レポート共有機能を通じて、合成データの忠実度として知られる実データの数学的特性をどれだけ忠実に模倣しているかを判定します。 完全なメトリクスと情報については、このリンクをクリックしてSDMetricsのドキュメントを確認してください。
下記のノートブックでは、SDMetricsのオリジナルノートブックに基づいて、いくつかの実データと合成デモデータをSDMetricsを使用して比較します。また、共有可能なレポートがあり、それを使用していくつかの洞察を発見し、視覚的なグラフィックスを作成することができます。