趋近智
我们来了解一种生成合成表格数据最直接的方法:直接从现有数据集中采样行。设想你有一个真实数据表,例如客户信息或传感器读数。行采样方法以这个现有表格为蓝图,构建一个新的合成表格。
这种方法尤其有用,当你需要一个紧密反映原始数据整体结构和统计属性的数据集时,可能用于软件测试、创建用于共享的匿名版本,或者仅仅是生成一个具有相似特征的更大规模数据集。
最简单的方法是有放回采样。将原始数据集想象成一个装满编号球的大袋子,每个球代表一行。
在合成数据生成中,有放回采样是一种方法,它允许原始数据集中的同一行在合成数据集中出现多次。当原始数据集包含 行,并且目标是创建一个包含 行的合成数据集时,该过程涉及重复随机抽取并放回行的操作 次。
这里有一个小示例:
原始数据(3 行):
| ID | 特征A | 特征B |
|---|---|---|
| 1 | 10 | 红色 |
| 2 | 15 | 蓝色 |
| 3 | 12 | 红色 |
可能的合成数据(有放回采样,大小为 4):
| ID | 特征A | 特征B |
|---|---|---|
| 2 | 15 | 蓝色 |
| 1 | 10 | 红色 |
| 2 | 15 | 蓝色 |
| 3 | 12 | 红色 |
注意第2行被选中了两次。
优点:
缺点:
另一种选择是无放回采样。这次,当你从袋子里取出一个球(一行)时,你不把它放回去。这意味着每一条原始行在你的合成数据集中最多只能出现一次。
这种方法通常用于创建原始数据的一个更小、随机的子集。例如,你可能会用它来为机器学习模型创建训练集或测试集划分。它通常不用于创建大于原始数据的合成数据集,因为你将没有足够的唯一行可供采样。
如果你的数据集有重要的特定子组,但有些子组比其他子组小得多怎么办?例如,设想一个客户数据集,其中95%是普通客户,5%是高价值客户。如果你使用简单的随机采样(有放回),一个小的合成样本可能会不小心遗漏高价值客户,或者包含很少的高价值客户,无法反映它们真实的比例或重要性。
分层采样解决了这个问题。其过程包括:
这保证了合成数据集保持原始数据中已定义子组的相对比例。
分层采样的流程,保证了不同客户类型的代表性。
虽然上述方法复制的是整行,但一个稍微复杂一些的方法是对一行进行采样,然后对其某些值进行轻微修改。例如,你可以:
这开始创建了原始数据集中不存在的数据点,可能提供更好的隐私和新颖性。然而,进行这些修改需要仔细考虑,以确保生成的数据保持真实和有用。这项技术是通向更复杂生成模型的桥梁,这些模型学习数据的潜在模式,而不是仅仅复制行。
记住主要的局限性很重要:基本的行采样方法(不带修改)主要复制你已有的数据。它们复制现有行,无论是精确复制还是通过保持组比例来实现。它们不生成原始数据中不存在的根本性的新模式或关系。如果你的目标是生成的数据能够呈现源数据中未明确存在的可能性,你将需要后续讨论的更高级方法。
然而,对于创建平衡测试集、在保持其基本结构的同时快速扩展数据集,或生成简单的匿名版本等任务,行采样提供了一个易于上手且有效的方法。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造