示例设置
我正在链接数据集以查找其中的重复条目。我不知道我的数据集中可能会出现重复的次数。
封锁后,我最终得到以下数据集:
[这是一个示例数据集,而不是我的真实数据]
1st Dataset: Region AB_1, df1
FName_1 SName_1 Area_1 Age_1
1a Ben Nevis AB 30
2a Ben Neviss AB 30
3a Andy Red AB 35
4a Andy Redd AB 35
2nd Dataset: Region AB_2, df2
FName_2 SName_2 Area_2 Age_2
1b Ben Nevis AB 30
2b Ben Neviss AB 30
3b Andy Red AB 35
4b Andy Redd AB 35
所以,我将同一数据集中的记录与彼此进行比较。
i使用基于Fellegi Sunter算法的EM算法将上述数据集一起进行比较,并具有协议变量" forename"姓氏"one_answers" age"。
我通过将数据集1中的每个记录与数据集2中的每个记录进行比较来创建我的比较空间,即4 * 4 = 16可能的记录对。
例如。
Record 1 vs Record 2
1a 1b
1a 2b
1a 3b
1a 4b
2a 1b
2a 2b
2a 3b
2a 4b
3a 1b
3a 2b
3a 3b
3a 4b
4a 1b
4a 2b
4a 3b
4a 4b
问题
但是,这意味着相同的记录与自己相比正在传递到我的EM算法中:
例如。
1a 1b
2a 2b
3a 3b
4a 4b
不需要这些,它们只是形成比较空间的残余。
由于EM算法是一种"学习算法",它根据其输入信息优化了一致性和分歧变量权重,因此我实际上是为其提供更多的培训信息。
这反映在结果中;
如果我在运行算法之前删除了这些记录,我将3001个记录高于0.9(使用我的真实数据集)。
但是,如果我删除了这些记录 我运行算法,则仅获得2486个记录,高于0.9(使用我的真实数据集)。
即。如果我包括这些重复的示例,则更有选择性。
最终:
对我来说,将它们包括在EM中是没有意义的,但是我担心删除会降低我的算法的准确性。
在运行EM?
好吧,您绝对需要在训练集中包括一些匹配的示例。
yancey提到,在他的经验中,当比赛比例小于5%时,EM开始表现出较差的融合。在同一篇论文中,他继续建议人为地用额外的成对来丰富训练集。
最终,我们正在尝试构建一个函数,该函数估算了从所有可能的组合的有限子集( s )中估计两个记录是匹配的总体概率a x b 。如果没有匹配项,那么我可以立即为您提供该功能: p(a,b)= 0 。
但是,您说即使删除了一些明确的重复项后,您仍然获得0.9的得分。这表明您的数据集也包含许多自然匹配,即没有相同ID但在名称/年龄/区域的记录。那挺好的。但是,没有理由仅在这些自然匹配/重复项上进行。由于您的记录链接算法无疑会在实际数据上运行时看到许多确切的匹配项,因此在训练时也应暴露于确切的匹配项。
最后,我要说的是,使用相同的0.9阈值可能没有意义。这些概率是关于培训集 s 的,而不是现实世界。而且,由于使用了两个不同的训练集,因此它们甚至无法彼此相提并论!取而代之的是,您应该构建一组与已知数量的真实和错误匹配的对组合。然后确定与您认为是最佳误报和假否定的比率相对应的阈值。这通常是通过绘制ROC曲线来完成的。只有这样,您才会知道哪种分类器最能推广到现实世界数据。