使用哪种类型的聚类算法来识别不同数据集中的“相同”项目?

数据挖掘 机器学习 聚类 算法
2022-03-02 11:52:35

我正在尝试为数据质量问题找到解决方案 - 具体而言,确定不同数据集中的哪些项目用于表示相同的事物。

例如,假设我们是一家零售商,我们买断了其他几家零售商。在这个过程中,我们也得到了他们的系统和数据库。这可能会导致一些重叠——不同的系统可以以不同的方式表示相同的项目、客户等,但没有单一的唯一标识符。

为了得出“唯一”实体的单一视图,最好的方法是确定哪些行在数据集中代表相同的事物?

我已经完成了机器学习课程,并且我了解最低限度。我相信解决这个问题需要一个聚类算法,但是什么类型呢?我可能正在处理数据中的大量特征——维度、姓名、日期、联系方式——其中一些可能需要更高的匹配“权重”。

示例(项目):

A:ABC 笔记本,大号,发布时间:2018 年 2 月 20 日,150 毫米 x 100 毫米。

B: 笔记本 (ABC), L, 日期: 18/02/2018, 150mm x 100mm

我希望这些被视为同一个项目。

示例(客户):

A: Doe, Jane, DOB 1970-06-23, 123 ML Ave, F

B: John Doe, DOB 1971-04-33, 123 ML Avenue, M

C:J. Doe,71 年出生

我希望 B 和 C 被识别为同一个人,但不是 A。

对于这种情况,我不希望提出 100% 准确度的东西,但我希望能够提出一个(狭窄的)可能匹配的列表,以便有人可以检查。

有人可以指出我正确的方向吗?有什么我应该看的案例研究吗?

2个回答

您应该关注属于 Record Linkage 范围的方法,而不是集群,因为 Record Linkage 方法专门针对解决此类问题。

Peter Christen 撰写的手稿“使用种子最近邻和支持向量机分类的自动记录链接”很好地介绍了使用机器学习进行记录链接链接到 pdf

R中还有一个RecordLinkage包,它提供了一个很好的起点来练习随机记录链接技术,以及有监督和无监督的机器学习链接到描述包的手稿

A:ABC 笔记本,大号,发布时间:2018 年 2 月 20 日,150 毫米 x 100 毫米。

B: 笔记本 (ABC), L, 日期: 18/02/2018, 150mm x 100mm

这似乎不是一个聚类问题。相反,它更像是一个文本挖掘问题。例如,您从 A 和 B 的名称中提取“ABC”和“Notebook”,然后确定它们相同。除此之外,还需要一些格式检测,例如将日期字符串映射到日期时间格式,将 L 映射到大。

在您提取了这些特征并构建了一个特征矩阵后,您可以通过它们在矩阵中共同存在的特征来简单地确定两个条目是否是不同的项目/人(因为您的矩阵中会有 NA)。你真的不需要机器学习聚类算法。

A: Doe, Jane, DOB 1970-06-23, 123 ML Ave, F

B: John Doe, DOB 1971-04-33, 123 ML Avenue, M

C:J. Doe,71 年出生

例如,A 和 B 不相同,因为 DOB 和性别不匹配。B 和 C 可以被视为相同,因为它们都有 2 个特征 - 名称和 DOB - 出现在您的数据集中,并且这两个特征都匹配。

您可能需要更复杂的算法,因为可能有 a D: John Doe, DOB 1971-03-12, F,您应该单独留下 B、C、D 。但这就是它所需要的,我猜。