在真实数据不道德、不可用或不存在的地方,合成数据集可以提供所需的数量和种类。
特约编辑,InfoWorld |

Thinkstock
Devops团队的目标是提高部署频率,减少生产中发现的缺陷数量,并提高从微服务和面向客户的应用程序到员工工作流程和业务流程自动化的一切可靠性。
实施CI/CD(持续集成和持续交付)管道可确保建立和部署所有这些应用程序和服务的无缝路径,而自动化测试和建立持续测试实践有助于团队保持质量、可靠性和性能。通过持续测试,敏捷开发团队可以将他们的测试转移到左边,增加测试案例的数量,并提高测试速度。
构建测试用例并使其自动化是一回事,而拥有足够数量和种类的测试数据来验证足够数量的用例和边界场景是另一个问题。例如,测试一个网站的注册表应该验证各种输入模式,包括缺失数据、长数据条目、特殊字符、多语言输入和其他情况。
挑战在于生成测试数据。一种方法是合成数据生成,它使用不同的技术来推断基于模型和输入模式集的数据集。合成数据生成解决了所需数据的数量和种类问题。在使用真实数据可能引起法律或其他合规问题的情况下,你也可以使用合成数据生成来创建数据集。
"当所需数据不存在或原始数据集充斥着个人身份信息时,合成数据提供了一个很好的选择,"Accelario的首席技术官和联合创始人Roman Golod说。"最好的方法是根据现有模式创建合成数据,用于测试数据管理或建立规则,确保你的商业智能、人工智能和其他分析提供可操作的结果。对于这两者,你需要确保合成数据生成自动化可以根据不断变化的业务需求进行微调。"
合成数据生成的用例
虽然对合成数据生成的最基本需求源于测试应用程序、自动化和集成,但由于数据科学测试需要机器学习和人工智能算法的测试数据,因此需求正在增长。数据科学家有时使用合成数据来训练神经网络;在其他时候,他们使用机器生成的数据来验证一个模型的结果。
其他合成数据的使用案例更加具体。
- 通过确保在两个基础设施上运行的同一个应用程序产生相同的结果来测试云迁移
- 为安全测试、欺诈检测和其他可能不存在实际数据的现实世界场景创建数据
- 生成数据以测试大规模的ERP(企业资源规划)和CRM(客户关系管理)升级,测试人员希望在迁移实时数据之前验证配置。
- 为决策支持系统生成数据,以测试边界条件,验证功能选择,提供更广泛的无偏见的测试数据样本,并确保人工智能结果是可以解释的。
- 对人工智能和物联网系统进行压力测试,如自动驾驶车辆,并验证其对不同安全情况的反应。
如果你正在开发具有高维度数据输入和关键质量和安全因素的算法或应用程序,那么合成数据生成提供了一种机制,可以经济有效地创建大型数据集。
"KNIME的数据科学家Maarit Widman说:"合成数据有时是唯一的方法,因为真实数据要么无法获得,要么无法使用。
平台如何生成合成数据
你可能想知道平台如何生成合成测试数据,以及如何选择最佳算法和配置来创建所需数据。
Widman解释说:"有两种主要策略来生成合成数据:基于统计概率或基于机器学习算法。最近,像递归神经网络这样的深度学习技术--如长短期记忆网络和生成式对抗网络--已经提高了知名度,因为它们有能力从字面上产生新的音乐、文本和图像。"
当数据点之间存在依赖关系时,数据科学家就会使用RNN(递归神经网络),例如时间序列数据和文本分析。LSTM(长短期记忆)通过一系列的重复模块创造一种长期记忆的形式,每个模块都有门,提供类似记忆的功能。例如,文本分析中的LSTM可以学习字符和单词之间的依赖关系,以生成新的字符序列。它还被用于音乐创作、欺诈检测和谷歌的Pixel 6语法纠正。
GANs(生成式对抗网络)已被用于生成多种形式的图像,破解网络安全中的密码,甚至是 拼凑出一个比萨饼。GANs通过使用一种算法来生成数据模式,并使用第二种算法来测试它们,从而创建数据。然后它们在两者之间形成对抗性竞争,以找到最佳模式。GANs生成合成数据的代码例子包括PyTorch手写数字,一个用于开发一维高斯分布的TensorFlow模型,以及一个用于模拟卫星图像的R模型。
挑选机器学习和基于统计的模型是一种艺术和科学。Monitaur的联合创始人兼首席技术官Andrew Clark解释了如何试验合成数据的生成。他说:"这里的经验法则始终是为工作挑选最简单的模型,以可接受的准确度来执行。如果你在为顾客结账线建模,那么基于泊松分布的单变量随机过程将是一个好的起点。另一方面,如果你有一个大型的贷款承销数据集,并希望创建测试数据,那么GAN模型可能更适合捕捉单个特征之间的复杂关联和关系"。
如果你正在研究一个数据科学用例,那么你可能想要灵活地开发一个合成数据生成模型。商业选择包括计算机视觉的Chooch、Datomize和Deep Vision Data。
如果你的目标是应用测试,可以考虑用于测试数据管理或合成生成测试数据的平台,如Accelario、Delphix、GenRocket、Informatica、K2View、Tonic,以及一些测试数据工具,如开源测试数据生成器。微软的Visual Studio Premium也有一个内置的测试数据生成器,Java开发者应该查看这个使用Vaadin数据生成器的例子。
今天,拥有一个强大的测试实践是非常重要的,因为组织依赖于应用程序的可靠性和机器学习模型的准确性。合成数据生成是另一种弥补差距的方法。因此,你不仅有测试、训练或验证的方法,而且还有产生足够数据的方法来建立模型和验证应用程序。
Copyright © 2022 IDG Communications, Inc.