使用机器学习来重复数据

Joh*_*n K 24 recommendation-engine machine-learning duplicates mahout record-linkage

我有以下问题,并认为我可以使用机器学习但我不完全确定它将适用于我的用例.

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

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

对于实例我们可能为客户John Doe提供5个不同的条目,每个条目都有不同的联系方式.

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

我们的所有数据都在Elasticsearch中编制索引并存储在SQL Server数据库中.我的第一个想法是使用Mahout作为机器学习平台(因为这是一个Java商店)并且可能使用H-base来存储我们的数据(仅仅因为它适合Hadoop生态系统,不确定它是否具有任何实际价值),但是我读到的越多,我对它的工作方式就越困惑,对于初学者我不知道我能使用哪种算法,因为我不确定这个问题在哪里,我可以使用聚类算法或分类算法吗?当然,必须使用某些规则来确定配置文件的唯一性,即哪些字段.

我们的想法是最初将其部署为客户资料重复数据删除服务,我们的数据输入系统可以使用这些服务在输入新的客户资料时验证和检测可能的重复项,并且将来可能将其发展为分析平台以进行收集洞察我们的客户.

任何反馈将不胜感激:)

谢谢.

lar*_*sga 16

实际上已经对此进行了大量研究,人们已经为此使用了许多不同类型的机器学习算法.我个人尝试过基因编程,但效果相当不错,但我个人仍然喜欢手动调整匹配.

我有一些关于这个主题的研究论文的参考资料.StackOverflow不需要太多链接,但这里的参考书信息应该足够使用Google:

  • 链接发现配置的无监督学习,Andriy Nikolov,Mathieu d'Aquin,Enrico Motta
  • 基于相似度量的实例匹配机器学习方法,舒荣1,邢牛1,Evan Wei Xiang2,王浩芬1,杨强2,雍宇1
  • 学习记录联系的阻止方案,Matthew Michelson和Craig A. Knoblock
  • 使用遗传编程学习连锁规则,Robert Isele和Christian Bizer

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

无论如何,这是我在你的情况下采取的方法.


小智 12

刚遇到类似的问题所以谷歌做了一点.查找名为"Dedupe Python Library"的库 https://dedupe.io/developers/library/en/latest/

该库的文档详细介绍了重复数据删除时的常见问题和解决方案以及重复数据删除领域的论文.因此,即使您没有使用它,仍然可以阅读该文档.

  • 我完全同意,Dedupe 看起来非常好,如果您想了解该主题的介绍,作者写的文章非常值得一读:http://www.cs.utexas.edu/~ml/papers/marlin-dissertation- 06.pdf (2认同)
  • Dedupe 实际上是一个糟糕的库。难以安装和开始工作,它会根据数据集崩溃或冻结。 (2认同)