Skip to content

合成表格数据

已过时

请注意,此示例不适用于最新版本的 ydata-synthetic

请查看 ydata-sdk 以了解如何生成合成数据

使用 CTGAN 生成表格合成数据:

现实世界中的领域通常由表格数据描述,即可以结构化并组织成表格格式的数据,其中特征/变量表示,而观测值对应于

此外,现实世界的数据通常包含数值分类特征。数值特征编码定量值,而分类特征表示定性测量。

CTGAN 专门设计用于处理表格数据集带来的挑战,处理混合(数值和分类)数据:

以下是如何使用 Adult Census Income 数据集通过 CTGAN 合成表格数据的示例:

from pmlb import fetch_data

from ydata_synthetic.synthesizers.regular import RegularSynthesizer
from ydata_synthetic.synthesizers import ModelParameters, TrainParameters

# Load data and define the data processor parameters
data = fetch_data('adult')
num_cols = ['age', 'fnlwgt', 'capital-gain', 'capital-loss', 'hours-per-week']
cat_cols = ['workclass','education', 'education-num', 'marital-status', 'occupation', 'relationship', 'race', 'sex',
            'native-country', 'target']

# Defining the training parameters
batch_size = 500
epochs = 500+1
learning_rate = 2e-4
beta_1 = 0.5
beta_2 = 0.9

ctgan_args = ModelParameters(batch_size=batch_size,
                             lr=learning_rate,
                             betas=(beta_1, beta_2))

train_args = TrainParameters(epochs=epochs)
synth = RegularSynthesizer(modelname='ctgan', model_parameters=ctgan_args)
synth.fit(data=data, train_arguments=train_args, num_cols=num_cols, cat_cols=cat_cols)

synth.save('adult_ctgan_model.pkl')

#########################################################
#    Loading and sampling from a trained synthesizer    #
#########################################################
synth = RegularSynthesizer.load('adult_ctgan_model.pkl')
synth_data = synth.sample(1000)
print(synth_data)

最佳实践与结果优化

生成最佳合成数据质量

如果您在确保 CTGAN 返回适用于您用例的合成数据质量方面遇到困难, 请尝试使用 YData Fabric 合成数据Fabric 合成数据生成在质量方面被认为是最佳的。 在此基准测试中了解更多信息

CTGAN 与其他任何机器学习模型一样,需要在数据准备层面以及超参数调优方面进行优化。以下是一些最佳实践和提示,以提高您的合成数据质量:

  • 理解您的数据: 在使用 CTGAN 之前,彻底了解原始数据集的特征和分布。 识别数据中的重要特征、相关性和模式。 利用 ydata-profiling 功能来自动化理解数据的过程。

  • 数据预处理: 在训练 CTGAN 之前,清理和预处理数据以处理缺失值、异常值和其他异常。 标准化或归一化数值特征以确保一致的尺度。

  • 特征工程: 创建额外的有意义特征,这些特征可以提高合成数据的质量。

  • 优化模型参数: 尝试 CTGAN 的超参数,如 epochsbatch_sizegen_dim,以找到最适合您特定数据集的值。 微调 学习率 以获得更好的收敛性。

  • 条件生成: 如果适用,利用 CTGAN 的条件生成能力,为某些特征指定条件。 调整条件机制以增强生成样本的相关性。

  • 处理不平衡数据: 如果您的原始数据集不平衡,确保 CTGAN 有效地捕捉少数类的分布。 如有必要,调整采样策略。

  • 使用更大的数据集: 尽可能在更大的数据集上训练 CTGAN,以捕捉更全面的底层数据分布表示。