从真实数据中创建“演示”数据:伪装而不毁容


9

(我不知道该用什么标记,因为我不是统计学家,我也不知道它属于哪个领域。请随意添加更合适的标记。)

我在一家生产数据分析软件的公司工作,我们需要一套不错的数据来测试和演示我们的最新产品。我们不能只用随机数生成器的输出填充数据库,因为程序的输出将变得毫无意义。获取此类数据的最简单方法之一是从客户端获取数据。我们从运行的试验中获得了大量数据。现在,显然我们无法发布客户的实际数据,因此我们需要对其进行一些更改,但仍然需要使其表现得像真实数据一样。

这里的目的是获取他们的数据集,并对其应用“模糊”,以使其无法被识别为特定于他们的。我对统计理论的记忆本身有点模糊,所以我想由你们来做:

本质上,我们(来自客户端)的数据本身就是(在该国家或整个世界中)存在的所有数据的样本。我想知道的是,可以使用哪种类型的操作来使样本不再强有力地代表客户的样本人口,同时仍然使样本大致代表世界人口。

作为参考,据我们所知,我们一般遵循粗糙的正态(高斯)分布。

原始数据集尚不广泛,但是从理论上可以从某些特定于区域的特征中识别出来(我们不知道这些特征是什么,并且是否有人达到足够的水平还值得怀疑,但是我们知道不同地方存在差异放置)。无论如何,我对这种理论比对实践更感兴趣-我想知道某个操作是否使得不可能(或至少很难)通过参数X识别源数据集,无论有人是否有能力工作首先是参数X。

我想出的方法是将读数分为不同的类型(在不付出太多的情况下,假设一组可能是“长度”或“花费X的时间”。)对于每个读数,计算标准偏差。然后,对每个值在(n * stddev)的正负之间添加一个随机值,其中n是我可以用来调整结果直到数据充分“模糊化”的分数。我不想简单地应用静态范围(例如,在原始值的90%到110%之间随机变化),因为某些值的差异要大得多或小得多-在某些度量中,平均值的10%几乎不明显,但在其他情况下则会使您成为严重的异常值。

这足以掩盖原始数据的来源吗?如果不能,那么仍可以通过哪些统计手段来识别数据,我又应该如何掩盖这些数据,同时又仍然使所得的数据模糊不清呢?


3
在最近对一个相关问题的评论中,我提供了一些有关此主题的调查论文的链接,这些链接可以在线获得。这些链接着重于伪装人口普查数据,但是其中许多链接通常都解决了伪装数据的问题。
ub

需要指出的是,我绝对不是统计学家,甚至不是数学家。我是一名程序员,因此我可以处理算法解释,但是古怪的代数使我的头脑变得油腻。而且,这并不需要特别严格。这些数据将被使用的演示通常是演示-我们的一名代表在该软件中闲逛的十到二十分钟。如果允许任何人试用该软件更长的时间,他们将从将自己的数据放入软件中开始-他们将无法真正查看演示数据。
anaximander

2
我建议雇用以前做过此事的统计学家。不要将其作为您的第一个牛仔竞技表演。您不想在这方面做得很糟糕,对吗?见arstechnica.com/tech-policy/2009/09/...
大卫J.

Answers:


2

有一些建议:

  1. 将其转换为无量纲形式。如果从0到1,并且每两周都没有附上弗隆或吨煤等单位,则很难识别。
  2. 给它添加一个小的随机数。当您将高斯与高斯卷积时,您将得到另一个高斯。它并没有改变它的本质,但是偏离精确值会使某人搜索数字以试图找出它是什么。
  3. 我喜欢旋转它的想法。您可能需要花费一些时间才能从1d数据集创建2d数据集。然后,您可以使用PCA或SVD(在居中和缩放之后)确定旋转。正确旋转数据后,您就可以更改方差并混淆信息本身。您可以将旋转坐标轴之一报告为“样本数据”。
  4. 您可以将其与其他来源的格式牢固的数据混合。因此,如果您的样本数据是股市数据,则可以根据天气或甲壳虫乐队最喜欢的音轨的平均音高变化来添加扰动。无论人们是否可以理解纳斯达克,他们都很难理解纳斯达克+甲壳虫。

1

我建议采用两步法。第一步是替换抽样-类似于自举中使用的方法。在中R,您可以使用

 newdata = sample(olddata, replace = TRUE)

现在,您具有与原始属性相同的不同数据集。第二步是添加一个以零为中心的随机变量:

 newdata = newdata + runif(1, min = -10, max = 10)

任何在零附近对称的随机变量都将起作用,并且分布范围并不重要。

最后,您应该拥有完全不同的数据集,并具有与旧数据集相同的属性。


1
“具有相同的属性”是什么意思?至少,方差和协方差会有所不同。如果您对变量之间的关系感兴趣,那真的很重要。
查理
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.