用数学方法/理论代替人类判断

数据挖掘 机器学习 深度学习 分类 数据挖掘 统计数据
2021-10-16 05:40:02

我想介绍一下我所做的事情。

1)假设有两个字典(字典 A 和字典 B),每个字典都包含一个单词/术语列表,如下所示。

在此处输入图像描述

2)现在我的任务是在dict B中找到dict A的匹配词

3)我使用自动化工具(模糊匹配/相似性)来完成上述任务,输出如下所示

在此处输入图像描述

4) 一旦我得到上面的输出,你可以看到有一些匹配百分比小于 100 的记录。完全有可能 dict B 没有完全匹配的词。没关系。

5)所以,我所做的是查看匹配百分比小于 50 的术语。这意味着我采用这些术语(匹配率低于 50%)并再次检查字典 B 中的相关术语。这样做,我可以像下面这样更新输出。因为我们通过人类经验知道喉咙痛锭剂和链球菌是相关的(与之前映射为橙色的情况相比,现在匹配更好(完全不相关))。所以这个问题更像是一个半自动化的任务,而不是成熟的 ML 任务

在此处输入图像描述

所以,现在我的问题是(不是在 NLP 或 ML 上,而是在下面)

1)但是如何证明选择50%作为人工审核的门槛是正确的呢?因为这是主观的事情/基于个人的判断。这意味着我也可以选择 30% 或 40%,这样可以节省我手动查看条款的时间

2) 意思是,这 50% 不是一成不变的,但我正在寻找的是一些理论/数学/统计方法,通过它我可以达到这个阈值,而不是基于我无法辩护/证明的判断/主观?

你们能分享一些关于如何以系统的方法完成这项工作的观点/技术吗?

1个回答

在选择阈值时,我可以看到 3 种方法:

  1. 做出有根据的猜测

这就是你目前正在做的事情。您选择一个值,并且需要争论为什么这是一个合理的阈值。显然,这个论点和你所做的假设一样有力。

  1. 无人监督的方式

如果计算 A 和 B 之间所有对的匹配分数,则可以分析这些分数的直方图。最有可能的是,你会有很多接近 0 的分数和一些接近 100 的分数。然后,你可以决定选择一个阈值。这本身可以以不同的方式完成。您可以选择中位数/平均匹配分数,这接近选项 1,但至少,该数字来自特定的数学概念。您可以使用Jenks-Fisher算法(这里是Python 实现)。总之,该算法将找到一个阈值,将您的数据拆分为集群,从而最大限度地减少集群内的偏差。这将比中位数/平均值更好,因为预计数据将非常倾斜。

  1. 监督方式

如果您以某种方式可以访问哪些匹配被人类确认/推翻,您可以使用熵/信息增益来找到最佳阈值。这类似于构建深度为 1 的决策树(决策树桩),其中您的输入是匹配分数,目标是二元变量(无论人类是否说这是匹配)。

所以你的数据会是这样的:

score, is_match
0.0, 0
0.1, 0
0.2, 1
0.3, 0
0.4, 1
0.5, 0
0.6, 0
0.7, 0
0.8, 1
0.9, 1
1.0, 1

我个人的建议是使用 Jenks-Fisher 算法(选项 2)