five

Synthetic Banking Dataset

收藏
github2026-06-24 更新2026-06-26 收录
下载链接:
https://github.com/mbazouz/synthetic-bank-dataset
下载链接
链接失效反馈
官方服务:
资源简介:
生成100%合成但真实的零售银行数据集,用于AI训练、个性化银行建议、评分、行为检测和销售演示。数据集包含流式交易数据,涵盖工资、租金、订阅、贷款、日常消费、ATM取款等生活事件,并根据国家(如美国、英国、法国)进行本地化,包括名称、银行、账户类型、商户、货币、IBAN/账户号码格式和交易标签。输出格式为Parquet/CSV,支持多国数据生成。

100% synthetic yet realistic retail banking dataset tailored for AI training, personalized banking advisory, scoring, behavior detection and sales demonstrations. The dataset contains streaming transaction data covering typical life events including salary deposits, rent payments, subscription fees, loan transactions, daily expenditures and ATM withdrawals. It is localized based on target countries such as the United States, the United Kingdom and France, with full details covering personal names, banking institutions, account types, merchants, currencies, IBAN/account number formats and transaction tags. The supported output formats are Parquet and CSV, and the dataset enables multi-country data generation.
创建时间:
2026-06-23
原始信息汇总

数据集概述

该数据集是一个完全合成的零售银行交易数据集,专为AI训练、个性化银行建议、评分、行为检测和销售演示而设计。所有数据均在本地生成,不依赖任何云服务。

核心特性

  • 合成数据生成: 所有数据均为虚构,包括姓名、IBAN、卡号、商户、地址、电子邮件和电话号码,不涉及任何真实个人或机构信息。
  • 多国本地化: 支持us(美国,默认)、uk(英国)、fr(法国)和mix(混合)四种模式。不同国家/地区使用本地化的银行名称、账户类型、商户、货币、IBAN/账号格式和交易标签。
  • 数据真实性: 模拟了现实中的银行交易模式,包括工资发放、房租、订阅、贷款、日常消费、ATM取款、透支费用、内部转账和生活事件。
  • 确定性生成: 通过--seed N参数可实现完全可复现的生成过程。

数据内容

数据集包含两类输出格式:

  1. 原始业务格式 (output/): 包含丰富的字段,如客户姓名、月收入、风险偏好、当前余额等。用于销售演示、内部分析和模型训练。文件包括:

    • customers.csv: 客户信息
    • accounts.csv: 账户信息
    • cards.csv: 银行卡信息
    • subscriptions.csv: 订阅信息
    • loans.csv: 贷款信息
    • merchants.csv: 商户目录
    • transactions.csv / transactions.parquet: 交易数据
    • categories.json: 分类体系
    • generation_report.json: 运行元数据
  2. 合约v1格式 (delivery/<bank-id>/): 规范化后的格式,包含稳定整数ID,用于下游分析管道。包括:

    • customers.csv: 11列(id, first_name, last_name, email, phone, iban, address, postal_code, city, dob, annual_income_eur)
    • accounts.csv: 5个必填列 + 2个可选列
    • transactions.csv: 7个必填列 + 6个可选列
    • 支持全量/增量分区(full/<cutoff>/ + delta/<date>/

生成规模与交易量

  • 客户数量可通过--customers参数调整(默认500)。
  • 交易密度基于个人资料类型:学生约18笔/月,高收入者约122笔/月。
  • 示例规模(3年窗口期):
    • 500名客户:约116万笔交易
    • 2,000名客户:约450万笔交易
    • 60,000名客户:约1.4亿笔交易

生成方式

  • Docker(推荐): 主机无需安装Python/pip。
  • 本地venv + Makefile: 适用于有Python环境的系统。
  • 直接Python运行: 使用python -m bank_gen.main

默认日期窗口为自动更新:从当前日期前推约3年至今。需要注意Makefile有固定的默认日期,可能需要覆盖。

真实性与一致性保障

  • 加权的个人资料分布: 学生10%,家庭22%,经理13%,退休人员14%等10种类型。
  • 基于个人资料的收入和财富: 使用截断正态分布,高收入/投资者分布呈长尾。
  • 有效的账户标识符: 支持FR/GB IBAN mod-97校验、US ABA路由校验和Luhn有效PAN。
  • 交易模式模拟: 包括工资支付时间、租金与收入比例、订阅偏好、季节性消费(如7-8月旅行)、周末消费提升、时段分布、标签噪声、透支和费用、ATM取款模式、内部储蓄转账、生活事件影响等。
  • 严格一致性: 交易日期不早于客户起始日期,账户开立日期,余额不超过透支限额的1.3倍。

技术架构

项目代码组织清晰,核心模块包括:

  • config.py: 共享配置
  • locales/: 国家/地区本地化包
  • banking_utils.py: 银行工具函数(IBAN、路由、卡号校验)
  • profiles.py: 10种个人资料模型
  • merchants.py: 商户目录
  • customers.py, accounts.py, cards.py, subscriptions.py, loans.py, life_events.py: 各实体生成逻辑
  • transactions.py: 核心交易流引擎
  • io_writers.py: CSV/Parquet写入器(内存受限)
  • main.py: 命令行界面

性能

  • 流式生成: 交易逐条产出,每10万行批量写入磁盘。
  • 内存占用恒定: 不随交易总量增长。
  • 现代笔记本上500名客户3年数据生成约需1-2分钟。

兼容性

  • 支持CSV和Snappy压缩的Parquet格式。
  • 通用UTF-8编码,ISO 8601日期格式,负数表示借方交易。
  • 可方便导入PostgreSQL、Spark、Polars、DuckDB、Pandas等。

许可证

Apache 2.0 许可证。

搜集汇总
数据集介绍
main_image_url
构建方式
该数据集通过一个完全本地化的Python生成器构建,无需任何云服务。生成器基于预定义的客户档案(如学生、年轻专业人士、家庭等)进行加权采样,为每位客户生成包括薪资、租金、订阅、日常消费、ATM取款及人生事件在内的流式交易记录。系统支持多国家/地区本地化,通过`--country`参数可生成美国、英国、法国或混合国家的数据,涵盖当地货币、银行名称、账户类型、商户及标签。交易数据按日流式生成,每10万行批量写入磁盘,确保内存占用可控。生成过程采用确定性种子(`--seed`),保证结果可重复。
特点
该数据集的核心特点在于高度真实性与可定制性。它模拟了现实银行交易模式,包括薪资支付(25-28日)、租金自动扣款、基于消费习惯的日常支出、季节性波动(如7-8月旅行)、周末消费高峰及通胀调整。每位客户的交易密度与其档案匹配(学生约18笔/月,企业家约158笔/月),且包含跨境消费、透支费用、内部转账及人生事件(结婚、失业等)等复杂场景。数据集还提供了10种客户档案的权重分布,并支持可选的跨境交易比例(`--foreign-share`),进一步增强了数据的真实感。
使用方法
用户可通过Docker或本地Python环境快速生成数据。推荐使用`docker run`命令,或通过`python -m bank_gen.main`指定客户数量、输出路径和随机种子生成原始CSV或Parquet格式数据。随后运行`python -m bank_gen.deliver`将其转换为符合合同v1规范的标准格式,包含客户、账户和交易表。数据可直接导入PostgreSQL(`psql \copy`)、Spark、Polars、DuckDB或Pandas进行分析。用户可通过调整`--customers`参数控制数据量,例如`--customers 2200`可生成约500万笔交易,适合AI训练、评分模型或行为检测等场景。
背景与挑战
背景概述
Synthetic Banking Dataset是一个于2024年由研究者Mohamed Bazouz开发的合成银行交易数据集生成工具,旨在解决金融领域真实数据因隐私法规和商业敏感性难以获取的困境。该数据集通过生成高度逼真的零售银行交易流,涵盖工资、租金、订阅、贷款、日常消费及人生事件等范畴,为AI训练、个性化银行咨询、评分模型及行为检测提供可靠数据基础。其核心研究问题在于如何在保护客户隐私的前提下,生成与真实银行行为分布一致的合成数据,以推动金融科技模型的研发与验证。自发布以来,该数据集因其可本地运行、多国货币和账户体系支持的特性,在金融数据合成领域产生了重要影响力,为学术研究和工业应用提供了有力工具。
当前挑战
该数据集面临的首要挑战是领域问题:真实银行数据因涉及高度敏感的个人金融信息,公开共享受限,导致金融AI模型训练缺乏大规模、多样化的样本,尤其缺少涵盖复杂人生事件(如结婚、失业、购房)及多国银行体系(如美国ABA路由、欧盟IBAN)的标准化数据。其次,在构建过程中,如何确保合成数据的真实性成为关键困难——需精准模拟收入分布依画像权重的截断正态采样、贷款摊销计算、季节性消费波动及标签噪声(如商家名称变体),同时保持每笔交易前后余额的算术一致性;此外,跨币种交易场景中需处理外汇转换费用(约2%的境外交易附加费),并维护超过6000万客户的流式生成性能,在不冲突条件下实现余额约束(如透支限额的1.3倍上限),这些多重复杂约束的协调构成了数据集构建的显著挑战。
常用场景
经典使用场景
Synthetic Banking Dataset最为经典的使用场景是作为人工智能模型训练与评估的基石,尤其在零售银行业务领域。研究者可借助该数据集构建客户行为分析、个性化银行咨询服务、信用评分模型以及欺诈行为检测系统。该数据集通过模拟真实世界的交易流程,涵盖薪资发放、租金支付、订阅扣费、贷款偿还、日常消费及ATM取现等多元场景,并依据不同国家(如美国、英国、法国)进行本地化设计,确保数据分布与真实银行业务高度吻合。其生成引擎支持多国货币、账户类型及交易标签,并融入薪资波动、季节性消费、通胀调整等现实因素,为模型训练提供了兼具规模与真实度的测试环境。
衍生相关工作
该数据集衍生了许多经典工作,尤其在合成数据生成与金融建模领域。基于其模块化架构,研究者常借鉴其客户画像生成逻辑,开发面向保险、零售等行业的变体数据集。其交易流引擎中的分布拟合方法(如泊松过程与截断正态分布)被广泛应用于行为建模文献,以模拟现实消费规律。此外,该数据集的跨境交易生成模块催生了多货币汇率模拟与外汇费用计算的后续研究。在工业界,多家公司基于其契约格式设计了标准化的数据交付协议,用于客户数据迁移与系统集成测试。开源社区中,该数据集也被用作基准,评估诸如时间序列预测、图神经网络交易网络分析等新模型的性能。
数据集最近研究
最新研究方向
在人工智能驱动的金融决策支持领域,Synthetic Banking Dataset的引入为构建个性化银行咨询、欺诈检测及客户行为评分模型提供了前所未有的高质量训练基础。该数据集通过模拟多国别(美国、英国、法国)本土化的零售银行交易流(包括工资、租金、订阅、贷款及各种生活事件),并严格遵循真实金融数据分布(如经加权的人口统计特征、收入季节性波动、消费行为昼夜节律及跨国刷卡手续费逻辑),有效缓解了真实金融数据因隐私法规与商业敏感性造成的可用性瓶颈。其开源许可与完全本地化生成机制,正推动金融科技领域的研究重心从数据获取转向算法创新,尤其在全球多币种跨行交易解释性建模与合规友好的合成数据对抗训练方向上,展现出关键支撑作用。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务