gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:21 25 4
gpt4 key购买 nike

示例设置

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

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

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

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 算法将上述数据集进行比较,协议(protocol)变量为“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 算法是一种“学习算法”,它根据其输入信息优化一致和不一致变量的权重,我实际上是在为它提供更多的训练信息。

这反射(reflect)在结果中;

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

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

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

最终:

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

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

最佳答案

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

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

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

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

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

关于python - 在运行 EM 记录链接算法之前是否应该删除重复条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46547236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com