如何在大量记录的笛卡尔积上有效地迭代监督模型?

数据挖掘 算法 监督学习 搜索
2022-02-15 03:34:48

问题:

两个大型数据库,每个都有约 100 万条记录,“旧客户数据”和“新客户数据”。数据来自不同的来源并且在不同的时间被摄取,所以有很多重复,但重复可能不完全匹配。例如,在旧数据中,客户被列为“Michael Smith”,但在新数据中,他们被列为“Mike Smith”或“M. Smith”,或者名称匹配,但地址字段不同:如何我们现在是否是同名的不同人或更改地址的同一人?

方法:

似乎可以使用监督学习方法将一对记录分类为重复或不重复。

问题:

假设这样的模型是可能的并且我们已经对其进行了训练,我们将如何迭代整个数据集以产生我们的预测?

要应用监督方法(或任何 ML/概率方法),我只能天真地考虑一对一地检查每对记录,但这意味着我们的模型必须遍历条记录,这不会即使拥有先进的计算能力似乎也不可行?1012

在这种情况下,如何有效地迭代/搜索组合数据集?

1个回答

这个问题称为记录链接,有一些方法可以避免迭代整个笛卡尔积。我知道的主要方法称为“阻塞”,包括进行第一次“粗略”传递以创建匹配候选组(“块”)。例如,您可以创建至少包含 X 个共同的 n-gram 的组。这可以通过所有实体的一次线性迭代来完成,根据它们的 n-gram 将它们存储在每个适用的 bin 中(一个实体可以存储在多个 bin 中)。我假设某种聚类也可用于生成类似实体的组。然后,您会得到多个较小的组,并分别对每个组运行笛卡尔积比较。这可以大大降低复杂度。

注意:我可能在 10 年前就在研究这个,所以可能会有更多最近的方法。