2011-02-17 63 views
2

我需要对数据集进行反向工程,使其达到原始形式。原始数据集来源于多个用户具有多个特征的进程进入房间并且点击某个按钮的过程。列变量是指示形式,所以当用户点击按钮或具有某个特征时,它被记录为一个,并且它们没有被零指示。然后将该数据集转换为其中特征类型是由两个特征变量表示的观察值的形式。这个新的数据集显示了具有两个特征的用户,他们的数量和他们的按钮点击。这也包含所有用户。我的解释可能不是最清晰的所以这里是一个可能帮助可能的解释数据集操作

enter image description here

我想使用某种类型的查找算法来解决这个问题,但不是可能是太有效率的图像。

+0

因此,您正在尝试将底部的数据反向工程到文档顶部的数据? – dfb 2011-02-17 23:04:35

+0

是............ – kogilvie 2011-02-18 00:13:41

回答

1

不幸的是,一般来说,您将无法毫不含糊地对您的数据集进行逆向工程。暂时忽略操作列,考虑以下两组数据:

数据集1:

A B C 
1 1 1 
1 1 0 
0 1 1 
1 0 1 
1 0 0 
1 0 0 
0 1 0 
0 1 0 
0 0 1 
0 0 1 

数据集2:

A B C 
1 1 0 
1 1 0 
1 0 1 
1 0 1 
0 1 1 
0 1 1 
1 0 0 
0 1 0 
0 0 1 

除非我记错了,这两个数据套将显示每对特征下相同的用户数量:

A A 5 
A B 2 
A C 2 
B B 5 
B C 2 
C C 5 

现在,您可能会试图想:“嘿,第一个数据集有10个用户,但第二个数据集只有9个。如果我能够获得用户总数,这是否能解决我的问题?”答案大多不是。如果您有三个或更少的特征,那么答案是肯定的(请参阅:Inclusion-exclusion Principle)。但是,如果你有三个以上的特征,答案是否定的。您可以构建类似的用户总数相同的模糊示例。

0

我在想,一个可能的蛮力解决方案可能是:因为我给了用户和操作的总数,我可以计算出特征的数量。

  • 首先,我可以创建一个数据结构具有相同尺寸与原来的,但与等于零
  • 所有观测查找给出的数据为用户和行动特性的
  • 设置查找给定为用户和操作与B和A和B的特性数据设定和调整相应地设置
  • “”“”“””与C和A & C和B &ç特性和调整相应地设置的数据。
数据

我只完成了A,B和C,但由它的外观它确实变得更复杂,因为我将继续查看更多的特征,因为我将不得不查看它们中的大部分的交集。此外,给定的数据集可以减少,因为很多条目是重复的,例如C A与A C相同。

sol image

0

正如前面的海报已经提到,数据集不会是唯一的,但你可能有另外一个问题:什么是数据集的大小?直观地看,这看起来像是NP难题。如果我们将问题简化为仅仅找到满足约束条件(第二个网格)的任意矩阵n by k(第一个网格:n参数,k特性),那么暴力强制要求您尝试每种可能的组合。我们可以通过仅尝试具有每个特征的指定人数的解决方案来限制这一点,但是在最坏的情况下,在最坏的情况下这仍然是(n choose n/2)^k组合。