使用 EM 算法进行记录链接

机器算法验证 机器学习 状态 期望最大化 记录链接 perl
2022-03-21 22:50:17

我有兴趣按名字、姓氏和出生年份链接 2 个数据集的记录。这对 EM 算法是否可行,如果可以,如何实现?

以 1st 中的以下记录为例:Carl McCarthy,1967。我将搜索第二个数据集中的所有记录,并在第一个名字和 Carl 之间分配一个 jaro-winkler 距离,在姓氏和 McCarthy 之间分配一个 jaro-winkler 距离。这些距离是概率性的,出生年份之间的距离也是如此。我们将这 3 个概率(乘?平均?)合并为 1。

现在是决策规则部分。让我们将所有概率从高到低排列。首先,我们想要 P(first hit is match) >= threshold。其次,如果 P(second hit is match) 存在,我们还希望 P(first hit is match) / P(second hit is match) >= threshold。第三,我们希望第二个数据集中的第一个匹配匹配第一个数据集中不超过 1 人的 Carl McCarthy,1967。

如何确定这些阈值?

我更喜欢 Stata 和/或 Perl 中的方法。

参见,例如:

http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1479910/pdf/amia2003_0259.pdf

(尽管如此,我仍然没有完全理解为什么或如何,输入和输出是什么,以及假设和它们的限制性)。

3个回答

当然,EM 算法已被用于概率链接。关于这个主题有很多文章,Winkler 的以下文章可能对理论细节有所帮助:

http://www.census.gov.edgekey.net/srd/papers/pdf/rr2000-05.pdf

还有 Kevin Campbell 开发的数据链接软件已经在这里可用:

http://the-link-king.com/

该软件可以免费下载,Kevin Campbell 提供收费支持。代码是用 SAS 编写的,因此您需要基本的 SAS 包。

有一个软件RELAIS可以记录与:

6)概率记录链接(通过 EM(期望最大化)估计 Fellegi 和 Sunter 模型参数。

RELAIS 已在 Java 和 R 中实现,并具有数据库架构 (MySQL)。

ESSnet 数据集成项目提供了更多关于记录链接的文档

我们最近发布了Splink,一个用于记录链接的 Python/Spark 库,其中包括 EM 算法的实现。

你可以在这里在你的浏览器中试试这里有更多关于基础理论的信息