是否应该在运行 EM 记录链接算法之前删除重复条目?

Posted

技术标签:

【中文标题】是否应该在运行 EM 记录链接算法之前删除重复条目?【英文标题】:Should duplicate entries be removed prior to running an EM Record Linkage algorithm? 【发布时间】:2018-03-14 19:21:51 【问题描述】:

示例设置

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

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

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

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 之前删除这些已知的重复项吗?

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

非常感谢您深思熟虑的回复 - 我理解您所说的关于收敛的内容(我们过去曾遇到过此类问题)。本质上,这些重复匹配仅作为 Python 中 join 操作的结果而存在;如果我正确地对这些记录进行比较,他们就不会通过。但是我完全同意,可能有必要在我们的每个数据集中人为地包含更多匹配项;包括这些重复项是否是一种统计上正确/统一的做法,因为对于每个地理区域,都会有一组不同的重复项?

以上是关于是否应该在运行 EM 记录链接算法之前删除重复条目?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 忽略插入错误:重复条目

没有重复的排列算法?

检查重复记录 VS 尝试/捕获唯一键约束

删除 MySQL 中的重复条目 [重复]

查找重复的书籍

onDelete:在条目被删除之前从条目访问数据