揭示CTGAN的潜力:利用生成AI进行合成数据

news2024/12/24 10:27:33
推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景

我们都知道,GAN在生成非结构化合成数据(如图像和文本)方面越来越受欢迎。然而,在使用GAN生成合成表格数据方面所做的工作很少。合成数据具有许多好处,包括其在机器学习应用程序、数据隐私、数据分析和数据增强中的使用。只有少数模型可用于生成合成表格数据,CTGAN(条件表格生成对抗网络)就是其中之一。与其他 GAN 一样,它使用生成器和鉴别器神经网络来创建与真实数据具有相似统计属性的合成数据。CTGAN可以保留真实数据的底层结构,包括列之间的相关性。CTGAN的额外好处包括通过特定于模式的规范化来增强训练过程,一些架构更改,以及通过使用条件生成器和采样训练来解决数据不平衡问题。

在这篇博文中,我使用CTGAN根据从Kaggle收集的信用分析数据集生成合成数据。

CTGAN的优点

  • 生成与实际数据具有类似统计属性的合成表格数据,包括不同列之间的相关性。
  • 保留真实数据的底层结构。
  • CTGAN生成的合成数据可用于各种应用,例如数据增强,数据隐私和数据分析。
  • 可以处理连续、离散和分类数据。

CTGAN的缺点

  • CTGAN需要大量的真实表格数据来训练模型并生成与真实数据具有相似统计属性的合成数据。
  • CTGAN是计算密集型的,可能需要大量的计算资源。
  • CTGAN生成的合成数据的质量可能会有所不同,具体取决于用于训练模型的真实数据的质量。

调整CTGAN

与所有其他机器学习模型一样,CTGAN在调优时表现更好。在调整CTGAN时需要考虑多个参数。但是,对于此演示,我使用了“ctgan 库”附带的所有默认参数:

  • 纪元:生成器和鉴别器网络在数据集上训练的次数。
  • 学习率:模型在训练期间调整权重的速率。
  • 批量大小:每次训练迭代中使用的样本数。
  • 生成器和鉴别器网络大小。
  • 优化算法的选择。

CTGAN还考虑了超参数,例如潜在空间的维数,生成器和判别器网络中的层数以及每层中使用的激活函数。参数和超参数的选择会影响生成的合成数据的性能和质量。

CTGAN的验证

CTGAN的验证是棘手的,因为它存在局限性,例如难以评估生成的合成数据的质量,特别是在涉及表格数据时。尽管有一些指标可用于评估真实数据和合成数据之间的相似性,但确定合成数据是否准确表示真实数据中的基本模式和关系仍然具有挑战性。此外,CTGAN容易受到过度拟合的影响,并且可以产生与训练数据过于相似的合成数据,这可能会限制它们泛化到新数据的能力。

一些常见的验证技术包括:

  • 统计测试:比较生成数据和真实数据的统计属性。例如,使用相关性分析、柯尔莫哥罗夫-斯米尔诺夫检验、安德森-达林检验和卡方检验等检验来比较生成的数据和真实数据的分布。
  • 可视化:通过绘制直方图、散点图或热图来可视化异同。
  • 应用程序测试:通过在实际应用程序中使用合成数据,查看其性能是否与真实数据相似。

个案研究

关于信用分析数据

信用分析数据包含连续和离散/分类格式的客户数据。出于演示目的,我通过删除具有 null 值的行并删除本演示不需要的几列来预处理数据。由于计算资源的限制,运行所有数据和所有列将需要大量的计算能力,而我没有。以下是连续变量和分类变量的列列表(离散值,如子变量计数 (CNT_CHINDREN) 被视为分类变量):

分类变量:

TARGET
NAME_CONTRACT_TYPE
CODE_GENDER
FLAG_OWN_CAR
FLAG_OWN_REALTY
CNT_CHILDREN

连续变量:

AMT_INCOME_TOTAL
AMT_CREDIT
AMT_ANNUITY
AMT_GOODS_PRICE

生成模型需要大量干净的数据来训练以获得更好的结果。但是,由于计算能力的限制,我从超过 10,000 行的真实数据中只选择了 9,993 行(正好是 300,000 行)进行本演示。虽然这个数字可能被认为相对较小,但对于本演示的目的来说应该足够了。

真实数据的位置:

Credit Analysis | Kaggle

生成的合成数据的位置:

  • CTGAN的综合信用分析数据(Kaggle)
  • CTGAN生成的合成表格数据集(研究门)
  • DOI: 10.13140/RG.2.2.23275.82728

三十三


信用分析数据 |图片来源:作者

结果

我生成了 10k(确切地说是 9997)合成数据点,并将它们与真实数据进行了比较。结果看起来不错,尽管仍有改进的潜力。在我的分析中,我使用了默认参数,其中“relu”作为激活函数和 3000 个 epoch。增加纪元的数量应该可以更好地生成类似真实的合成数据。生成器和鉴别器损失看起来也不错,损耗越低,表示合成数据和真实数据之间的相似性越近:

三十三


发生器和鉴别器损耗 |图片来源:作者

绝对对数平均值和标准差图中沿对角线的点表示生成的数据质量良好。

三十三


数值数据的绝对对数平均值和标准差 |图片来源:作者

下图中连续列的累积总和并不完全重叠,但它们很接近,这表明合成数据的生成良好且没有过度拟合。分类/离散数据的重叠表明生成的合成数据接近真实。进一步的统计分析见下图:
 

三十三


每个要素的累计总和 |图片来源:作者

三十三


功能分布|图片来源:作者

三十三


特征分布 |图片来源:作者

三十三


主成分分析 |图片来源:作者

以下关联图显示了变量之间的明显相关性。重要的是要注意,即使经过彻底的微调,真实数据和合成数据之间的属性也可能存在差异。这些差异实际上是有益的,因为它们可能会揭示数据集中可用于创建新解决方案的隐藏属性。据观察,增加纪元数可以提高合成数据的质量。
 

三十三


变量之间的相关性(真实数据) |图片来源:作者

三十三


变量之间的相关性(合成数据) |图片来源:作者

样本数据和实际数据的汇总统计似乎也令人满意。

三十三


真实数据和合成数据的汇总统计 |图片来源:作者

Python代码

# Install CTGAN
!pip install ctgan

# Install table evaluator to analyze generated synthetic data
!pip install table_evaluator
# Import libraries
import torch
import pandas as pd
import seaborn as sns
import torch.nn as nn

from ctgan import CTGAN
from ctgan.synthesizers.ctgan import Generator

# Import training Data
data = pd.read_csv("./application_data_edited_2.csv")

# Declare Categorical Columns
categorical_features = [
    "TARGET",
    "NAME_CONTRACT_TYPE",
    "CODE_GENDER",
    "FLAG_OWN_CAR",
    "FLAG_OWN_REALTY",
    "CNT_CHILDREN",
]

# Declare Continuous Columns
continuous_cols = ["AMT_INCOME_TOTAL", "AMT_CREDIT", "AMT_ANNUITY", "AMT_GOODS_PRICE"]


# Train Model
from ctgan import CTGAN

ctgan = CTGAN(verbose=True)
ctgan.fit(data, categorical_features, epochs=100000)

# Generate synthetic_data
synthetic_data = ctgan.sample(10000)


# Analyze Synthetic Data
from table_evaluator import TableEvaluator

print(data.shape, synthetic_data.shape)
table_evaluator = TableEvaluator(data, synthetic_data, cat_cols=categorical_features)
table_evaluator.visual_evaluation()
# compute the correlation matrix
corr = synthetic_data.corr()

# plot the heatmap
sns.heatmap(corr, annot=True, cmap="coolwarm")

# show summary statistics SYNTHETIC DATA
summary = synthetic_data.describe()
print(summary)

结论

CTGAN的训练过程有望收敛到生成的合成数据与真实数据无法区分的程度。然而,在现实中,不能保证趋同。有几个因素会影响CTGAN的收敛性,包括超参数的选择、数据的复杂性和模型的架构。此外,训练过程的不稳定性可能导致模式崩溃,其中生成器仅生成一组有限的相似样本,而不是探索数据分布的全部多样性。

原文链接:揭示CTGAN的潜力:利用生成AI进行合成数据 (mvrlink.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/852039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ae 效果:CC Spotlight

透视/CC Spotlight Perspective/CC Spotlight CC Spotlight(CC 聚光灯) 主要用途是创建和控制逼真的聚光灯效果。通过调整这些属性,可以模拟出各种不同的照明环境和效果,比如舞台照明、日出日落、特定的颜色照明等。 ◆ ◆ ◆ 效…

儿童台灯什么光源好?如何挑选儿童护眼台灯

很多家长有时候会说孩子觉得家里的台灯灯光刺眼,看书看久了就不舒服。这不仅要看光线亮度是否柔和,还要考虑台灯是不是有做遮光式设计。没有遮光式设计的台灯,光源外露,灯光会直射孩子头部,孩子视线较低,很…

c语言——字符串函数和内存操作函数

深度学习字符串函数和内存操作函数 一、求字符串长度函数(strlen)二、长度不受限制的字符串函数2.1字符串拷贝函数(strcpy)2.2字符串连接函数(strcat)2.3字符串比较函数(strcmp) 三、…

Smart HTML Elements 16.1 Crack

Smart HTML Elements 是一个现代 Vanilla JS 和 ES6 库以及下一代前端框架。企业级 Web 组件包括辅助功能(WAI-ARIA、第 508 节/WCAG 合规性)、本地化、从右到左键盘导航和主题。与 Angular、ReactJS、Vue.js、Bootstrap、Meteor 和任何其他框架集成。 智…

thinkphp:分组查询(多条相同列的数据只展示一条)

例子:数据库中有trans_num、subinventory_from、transaction_type、creation_date有相同值,在查询该数据库使,只展示这几个值相同的一条 效果: 限制之前 限制之后 代码 限制前,后端代码 public function select_i…

使用威胁建模进行DevSecOps实践丨IDCF

作者: 姚圣伟(现就职天津引元科技 天津市区块链技术创新中心) 研发效能(DevOps)工程师认证学员 一、从DevOps到 DevSecOps DevOps 最开始最要是强调开发和运维的协作与配合,至今,已不仅仅涉…

第3章 数据和C

本章介绍以下内容: 关键字:int 、short、long、unsigned、char、float、double、_Bool、_Complex、_Imaginary 运算符:sizeof() 函数:scanf() 整数类型和浮点数类型的区别 如何书写整型和浮点型常数,如何声明这些类型的…

在windows中使用parLapply函数执行并行计算

目录 1-lapply()函数介绍: 例子1: 例子2: 例子3: 2-在Windows使用并行计算,使用parLapply()函数 2.1-并行计算的准备阶段: 2.2-parLapply()函数介绍 2.3-使用parLapply()函数编写执行并行计算 2.4-…

领航优配:医药股发力拉升,双成药业等涨停,科源制药等大涨

医药股8日盘中拉升走高,到发稿,科源制药涨超16%,盘中一度冲击涨停;北陆药业涨超10%,精华制药、双成药业、海欣股份、奇特制药、龙津药业、永安药业等涨停,诚达药业、特一药业涨逾8%。 音讯面上,…

《实战AI模型》:GPT语义缓存为什么用GPTCache而不是Redis?

为什么不是Redis? 验证完可行性,便到了搭建系统的环节。这里我有一点必须要分享,在搭建 ChatGPT 缓存系统时,Redis 并不是我们的首选。 个人而言,我很喜欢用 Redis,它性能出色又十分灵活,适用于各种应用。但是 Redis 使用键值数据模型是无法查询近似键的。 如果用户提…

天!刚进公司的00后凭这套大屏模板直接涨薪5K,这是什么加薪利器

现在这世道,对普通人来说有一份谋生的工作真的都是奢求。前几天,坐在老李旁边,在公司待了10多年的老员工被叫到主管办公室说裁员的事情,他本来以为就是个普通的工作讨论,结果是通知他被裁员了,出来后整个人…

ESRVCC准备阶段优化提升方案

一、eSRVCC信令流程 UE发测量报告给eNb;基于测量报告,源eNb触发到GERAN的SRVCC切换流程;源eNb发送Handover Required 消息给源MME,消息中携带Target ID, generic Source to Target Transparent Container, SRVCC HO Indication等信息&#xf…

企业邮箱安全评估:选择最佳安全性的企业邮箱

企业在网络安全技术上投入了数十亿美元,但当涉及到邮箱安全时,风险甚至更高。随着网络钓鱼攻击、勒索软件和其他恶意威胁的兴起,确保邮箱免受入侵至关重要。 幸运的是,有许多安全解决方案和方法可供企业使用,包括: 反垃…

2023年国内最新的CRM系统排名

随着互联网技术的发展和竞争的激烈,越来越多的企业将目光放到CRM上,希望可以提高效率和收入。针对正在选型的企业,这里有一份国内crm系统排名【2023最新】,请注意查收。 1、Zoho CRM Zoho CRM是一款知名的在线CRM系统&#xff0…

uniapp开发小程序实现考勤打卡,附带源码

效果图: 考勤打卡三步走: 在地图上绘制打卡区域: uniapp开发小程序之在地图上进行绘制图形,并将经纬度转为固定格式的字符串_uniapp 绘制地图_阿晨12138的博客-CSDN博客 获取到用户定位,并跳转到当前用户定位&#xf…

【2023年11月第四版教材】《第2章-信息技术发展之存储和数据库(第二部分)》

第2章-信息技术发展之存储和数据库(第二部分) 3 存储和数据库3.1 存储系统架构3.2 存储技术3.3 数据库体系结构3.4 常用存储数据库类型优缺点 3 存储和数据库 3.1 存储系统架构 存储系统架构DASNASSAN安装难易度不一定简单困难数据传输协议SCSI/FC/ATA…

谷歌关闭跨域限制.(生成一个开发浏览器),Chrome关闭跨域

(一)、首先找到浏览器在电脑磁盘中的位置,并复制 (二)、复制一个浏览器的快捷方式到桌面(不影响正常浏览器) (三)、chrom鼠标右键属性,修改快捷方式的目标 (四)chrome.exe 后面添加 --disable-web-security --user-data-dir 复制的Chrome浏览…

视频监控汇聚EasyCVR平台WebRTC流地址无法播放的原因排查

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多…

ZIG:理解未来编程语言的视角

文章目录 摘要:引言:性能简洁性和模块化避免常见错误和陷阱总结:参考资料📑: 摘要: 本文介绍了新兴编程语言ZIG的目标和特点,包括高性能、简洁性和模块化,并分析了这些特点是如何通过语言设计来…

CC++内存管理与模版初阶

目录 四、C&C内存管理 (一)C/C内存分布 (二)C内存管理方式 1、new/delete操作内置类型 2、new和delete操作自定义类型 (三)operator new与operator delete函数 (四)new和delete的实现原理 1、内置类型 2、自定义类型 (五)定位new表达式(placement-new) (六)八股文 1、n…