数据清洗:列之间的关系

数据挖掘 分类 数据集 数据清理
2022-03-10 08:52:03

我有一个分布在两个文件中的训练数据集。

文件 1:这包含每个 X1 的实际分类。X1 在此文件中是唯一的。X1 与X2 是一一对应的关系,即X2 也是唯一的。Y 是二进制的。

| X1 | X2 | Y  | 
| 1  | 4  | 0  | 
| 3  | 5  | 1  | 
...
| 8  | 9  | 1  | 

文件 2:这包含实验的真实“观察结果”。X1 可以出现多次。

| X1 | X3 | X4 | 
| 3  | 4  | 5  | 
| 3  | 1  | 2  | 
...
| 1  | 4  | 8  | 

在这里,我可以将两个表组合成如下结构,并将它们用作观察结果:

| X1 | X2 | X3 | X4 | Y |
| 3  | 5  | 4  | 5  | 1 |
| 3  | 5  | 1  | 2  | 1 |
...
| 1  | 4  | 4  | 8  | 0 |

对于测试数据,我有类似的结构,只是文件 1 中缺少 Y 列。

我在这里有多个担忧:

  1. X1 和 X2 在数据中具有一对一的依赖关系,即 X1 = f(X2) 和 X2 = f(X1)
  2. Y = f'(X1) 或 f'(X2)
  3. X1、X2 和 Y 的频率分布在新加入的数据集中发生了巨大变化。

问题:

  1. 这种数据转换是否会带来任何见解?
  2. 回归和集成学习技术是否能够捕捉这些内部关系?
1个回答

我在您的数据中看到了几个问题。

首先,如果 X1 和 X2 之间存在一对一的关系,则应该删除两列之一,因为它们是多余的。冗余数据可能会对您的分类性能产生负面影响。

其次,字段 X3 和 X4 似乎也是完全多余的,因为类标签 Y 的值仅取决于 X1/X2。因此,除非列 X3 和 X4 本身可能很有趣,否则我看不出将它们包含到数据中的意义。

处理完这些问题,为了从 X1/X2 中得到 Y,有两种可能。如果 file1 包含您域中任何可能的 X1 值的 Y 值,则您不需要任何机器学习技术。你有一个完美的映射。否则,您将需要应用机器学习来找到“填补空白”的功能。根据 Y 变量的性质,您将需要使用回归(如果 Y 是实数)或分类(如果 Y 是离散变量)。