3

示例设置

我正在链接一个数据集以查找其中的重复条目。我不知道在我的数据集中重复出现的次数。

在我的阻塞之后,我最终得到了以下数据集:

[这是一个示例数据集,不是我的真实数据]

1st Dataset: Region AB_1, df1

  FName_1 SName_1 Area_1 Age_1
 1a Ben     Nevis   AB     30
 2a Ben     Neviss  AB     30
 3a Andy    Red     AB     35
 4a Andy    Redd    AB     35

2nd Dataset: Region AB_2, df2

  FName_2 SName_2 Area_2 Age_2
1b Ben     Nevis   AB     30
2b Ben     Neviss  AB     30
3b Andy    Red     AB     35
4b Andy    Redd    AB     35

因此,我将同一数据集中的记录相互比较。

我使用基于 Fellegi Sunter 算法的 EM 算法将上述数据集与协议变量“forename”、“surname”和“age”进行比较。

我通过将数据集 1 中的每条记录与数据集 2 中的每条记录进行比较来创建我的比较空间,即 4 * 4 = 16 个可能的记录对。

例如

Record 1 vs Record 2
1a          1b
1a          2b
1a          3b
1a          4b
2a          1b
2a          2b
2a          3b
2a          4b
3a          1b
3a          2b
3a          3b
3a          4b
4a          1b
4a          2b
4a          3b
4a          4b

问题

但是,这意味着与它们自身相比相同的记录正在传递到我的 EM 算法中:

例如

1a          1b
2a          2b
3a          3b
4a          4b

这些不是必需的,它们只是形成比较空间的残余物。

由于 EM 算法是一种“学习算法”,它根据其输入信息优化一致性和不一致性变量权重,我本质上是在为其提供更多的训练信息。

这反映在结果中;

如果我在运行算法之前删除这些记录,我会得到 3001 条记录,得分高于 0.9(使用我的真实数据集)。

但是,如果我在运行算法删除了这些记录,我只会得到 2486 条记录,得分高于 0.9(使用我的真实数据集)。

即,如果我包含这些重复的示例,则更具选择性。

最终:

将它们包含在 EM 中对我来说没有意义,但我担心删除会降低算法的准确性。

我应该在运行 EM 之前删除这些已知的重复项吗?

4

1 回答 1

2

好吧,您肯定需要在训练集中包含一些匹配示例。

Yancey提到,根据他的经验,当匹配比例低于 5% 时,EM 开始表现出较差的收敛性。在同一篇论文中,他继续建议用额外的配对来人为地丰富训练集。

最终,我们正在尝试构建一个函数,该函数根据所有可能组合A x B的有限子集 ( S )估计两个记录匹配的总体概率,给定一个一致性向量。如果没有匹配项,那么我可以立即为您提供该功能:p(a,b) = 0

但是,您说即使删除了一些明确的重复项,您仍然会得到 0.9 的分数。这表明您的数据集也包含许多自然匹配项,即没有相同 ID 但在名称/年龄/区域上匹配的记录。那挺好的。然而,没有理由训练这些自然匹配/重复。由于您的记录链接算法在真实数据上运行时无疑会看到许多精确匹配,因此在训练时它也应该暴露于精确匹配。

最后,我会说,对每个使用相同的 0.9 阈值可能没有意义。这些概率是关于训练集S的,而不是真实世界。而且由于使用了两种不同的训练集,它们甚至无法相互比较!相反,您应该构造一组具有已知数量的真假匹配的对。然后确定与您认为最佳的误报和误报比率相对应的阈值。这通常通过绘制ROC 曲线来完成。只有这样,您才会知道哪个分类器最能泛化到现实世界的数据。

于 2017-10-03T15:41:12.797 回答