记录联动问题

数据挖掘 机器学习 阿帕奇火花 pyspark 聚类
2022-02-23 10:32:32

我正在使用 ML 构建匹配 Alogoritm。项目是将内部客户数据与外部客户数据匹配。功能是名称、地址、城市、州和邮政编码。

我们在数据集之间创建对并计算余弦相似度,然后将所有特征对的余弦值传递给高斯混合模型。我们从 2 个集群开始,期望一个匹配集群和一个不匹配集群。但是 ML 没有构建一个匹配集群并且匹配在两个集群中。

在传递给 ML 之前,我使用 Standard scaler 和 minmax scaler ,但仍然没有得到明确的不匹配和匹配集群。如果我们增加集群,同样的事情会发生。

匹配可能是名称、地址、州、城市和 zip 或名称、地址、zip 或任何其他组合中的高余弦相似度。我们正在处理大量数据,因此我们使用 Spark ML。

我们如何才能实现最优聚类?

2个回答

我支持 Anony-Mousse 的回答。有大量关于记录链接的文献,值得花一些时间来探索它以获得不错的结果。

我假设您在令牌上使用余弦?这还不够,因为人的姓名和地址需要使用基于字符(例如 Levenshtein 编辑距离、Jaro 和变体)或字符 n-gram(例如余弦、Jaccard 等)的度量。您可以搜索字符串相似度指标。对于名称,您应该优先使用字符和标记级别的组合。

现在,由于您正在尝试无监督方法,我假设您没有标记数据。在这种情况下,标准的解决方法是使用某种形式的引导:

  1. 使用一个简单的无监督启发式算法,通过相似性对记录对进行评分,提取前 N 对。该子集可能包含大量正数,而在完整数据中,正数只占很小的比例。
  2. 手动注释前 N 对:与注释整个数据相反,这是可行的,它为您提供了一个训练集,但没有代表性。
  3. 使用半监督方法(可能是主动学习)来预测其余数据的标签,记住原始训练集偏向正数。通常,假设其余数据的否定概率很高是有意义的。

聚类是错误的工具。余弦相似度、词袋模型等也是如此。

显然,门牌号和邮政编码的标准比例是一个非常糟糕的主意,你不觉得吗?

为此类数据开发了一些特殊的技术是有原因的。例如,客户不太可能进入 100 号门牌但住在 5 号楼。这个单一的差异非常清楚地表明它可能不是同一个客户。另一方面,“公园路”。还有“公园”。几乎可以肯定是相同的,但在余弦相似度中,三个标记的差异非常大。

聚类是一种探索性技术,而不是实现自动匹配的技术。请选择其他工具。