如何构建一个分类器来确定两对是否匹配?

数据挖掘 机器学习 分类
2022-03-01 11:24:07

我正在尝试构建一个分类器,可以确定两个地址是匹配还是不匹配。

假设我有一组具有匹配或不匹配标签的地址对数据集。

我是 ML 的新手,所以有些事情可能会在我脑海中浮现,但这就是我正在考虑的完成任务的方式:

构建分类器的方法

  • 将每个地址分割成它的子组件,例如街道名称、邮政编码等
  • 为每个字段构造一个具有一维的比较向量。这些字段保存来自字符串相似性方法(例如 jaro-winkler)的值。
  • 我的所有带有关联匹配标签的比较向量现在都可以用于训练分类器

预测一对是否匹配

  • 使用阻塞等方法构建候选地址对列表
  • 以与上面构建分类器相同的方式构建比较向量
  • 每个候选者的比较向量现在被输入到分类器中,这将解析为匹配或不匹配

我的方法受到研究论文 地址匹配中的机器学习创新的启发:word2vec 和 CRF 的实际比较,但是对于初学者来说,很多东西都被模糊地描述了。

总而言之,我正在寻找有关这种方法是否成立或我完全误解了某些东西的任何意见

1个回答

一般来说,你的方法对我来说看起来不错。以下是一些评论/建议:

  • 您没有提到如何获得标记对的集合。当在一大组 N 个地址之间进行记录链接时,这部分可能会很棘手,因为手动注释所有 N*N 对非常困难。自举是一种常见的方法afaik。
  • 获取数据的方式也可能对阳性/阴性病例的比例产生影响。一般来说,阳性病例的比例非常低,这会导致常见的类不平衡问题。重要的是不要以与测试集/生产中的模型完全不同的正/负比率来训练模型。
  • 使相似性度量多样化通常很有用:您可以考虑 cosine-TFIDF、Levenshtein 编辑距离和许多变体,而不是仅使用 Jaro-Winkler。在相同的逻辑中,改变比较的级别是有用的,例如字符、字符二元组/三元组、单词。