什么算法可以用来模糊合并多个数据集?

数据挖掘 机器学习 sql 模糊逻辑 进化算法
2022-03-01 01:40:14

问题描述

我有几个相关但不共享任何唯一键的表。我已经多次遇到这个问题,客户数据位于需要一起比较的不同源系统中。

假设我的数据是多个表,表 A 到 Z。

可能有我100%确定比赛的列。例如表 A 和 B 的列 tax ID 是连接 A 到 B 的特定匹配。A 和 B 单独无法匹配到 C,但使用 A 和 B 中的列可以与 C 进行特定匹配。

有些列可能匹配,例如匹配名字、姓氏、生日等“John Smith”,但可能会导致误报。额外的模糊匹配可能会增加不同幅度的匹配可能性。

我想为 ML 引擎提供一组已被验证与同一个人相关的表,并查看它可以提出哪些规则来匹配这些表。我可能一次只能获得一部分表,我希望能够匹配可能的数据并等待更多数据。可以使用什么算法?

想法

  • 我知道决策树非常适合这类问题,但可能我可以进行的许多模糊检查可以更好地用某种确定性来表示。我也从未在一组数据集中使用决策树,而我只能处理一个子集。
  • 我知道朴素贝叶斯经常用于模糊匹配,但我也想结合逻辑来实现 100% 匹配
  • 由于在这种情况下,通过手动跟踪数据可能会获得有限的完整信息,因此进化算法可能会起作用
1个回答

首先是定义一个距离度量来说明潜在键的距离。如果数据是文本,Levenshtein 距离 是一种常见的距离度量。如果数据是数字,则欧几里得或曼哈顿距离可以工作。如果数据是地理数据,那么Haversine是一个不错的选择。

定义距离后,需要设置阈值以进行合并。阈值可以由人选择或通过机器学习算法学习。通常,没有足够的数据来训练机器学习算法。根据领域知识选择一个阈值通常就足够了。

如果您可以使用 R,则有blurjoin 包

鉴于您必须搜索空间的笛卡尔积,进化算法将花费太多时间。