使用机器学习去重复数据

问题描述 投票:0回答:2

我遇到以下问题,并认为我可以使用机器学习,但我不完全确定它是否适合我的用例。

我有一个包含大约一亿条记录的数据集,其中包含客户数据,包括姓名、地址、电子邮件、电话等,我希望找到一种方法来清理这些客户数据并识别数据集中可能的重复项。

大部分数据都是使用外部系统手动输入的,未经验证,因此我们的许多客户最终在我们的数据库中拥有多个配置文件,有时每条记录中都有不同的数据。

例如,对于客户 John Doe,我们可能有 5 个不同的条目,每个条目都有不同的联系方式。

我们还存在代表不同客户的多个记录在电子邮件等关键字段上匹配的情况。例如,当客户没有电子邮件地址但数据输入系统需要它时,我们的顾问将使用随机电子邮件地址,从而导致许多不同的客户资料使用相同的电子邮件地址,同样适用于电话、地址等。

我们的所有数据都在 Elasticsearch 中建立索引并存储在 SQL Server 数据库中。我的第一个想法是使用 Mahout 作为机器学习平台(因为这是一个 Java 商店),也许使用 H-base 来存储我们的数据(只是因为它适合 Hadoop 生态系统,不确定它是否有任何实际价值) ),但是我读得越多,我就越困惑它在我的情况下是如何工作的,对于初学者来说,我不确定我可以使用什么样的算法,因为我不确定这个问题属于哪里,我可以使用聚类算法或分类算法吗?当然,必须使用某些规则来确定配置文件的唯一性,即哪些字段。

我们的想法是最初将其部署为客户资料重复数据删除器服务,我们的数据输入系统可以在输入新的客户资料时使用它来验证和检测可能的重复项,并且将来可能将其开发为分析平台收集有关我们客户的见解。

machine-learning duplicates mahout recommendation-engine record-linkage
2个回答
16
投票

实际上已经有很多这方面的研究,人们为此使用了许多不同类型的机器学习算法。我个人尝试过遗传编程,效果相当不错,但我个人仍然更喜欢手动调整匹配。

我有一些关于这个主题的研究论文的参考文献。 StackOverflow 不需要太多链接,但这里有参考书目信息,使用 Google 就足够了:

  • 链路发现配置的无监督学习,Andriy Nikolov,Mathieu d’Aquin,Enrico Motta
  • 基于相似性度量的实例匹配机器学习方法,Shu Rong1、Xing Niu1、Evan Wei Xian2、Haofen Wang1、Qiang Yang2 和 Yong Yu1
  • 学习 Record Linkage 的阻止方案,Matthew Michelson 和 Craig A. Knoblock
  • 使用遗传编程学习关联规则,Robert Isele 和 Christian Bizer

不过,这就是所有研究。如果您正在寻找解决问题的实用解决方案,我已经为此类重复数据删除构建了一个开源引擎,称为 Duke。它使用 Lucene 对数据进行索引,然后在进行更详细的比较之前搜索匹配项。它需要手动设置,尽管有一个脚本可以使用遗传编程(请参阅上面的链接)为您创建设置。还有一个人想要为 Duke 制作一个 ElasticSearch 插件(参见线程),但到目前为止什么也没做。

无论如何,这就是我对你的情况采取的方法。


10
投票

刚刚遇到类似的问题,所以谷歌了一下。找到一个名为“Dedupe Python Library”的库 https://dedupe.io/developers/library/en/latest/

该库的文档详细介绍了条目去重时的常见问题和解决方案以及去重领域的论文。因此,即使您不使用它,阅读该文档仍然很好。

© www.soinside.com 2019 - 2024. All rights reserved.