一维d的阈值

2024-10-01 00:21:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我用一些字符串匹配方法列出了两个文本之间的相似度得分similarity_scores。我手动添加了actual_value,以显示文本是否确实相似。有没有统计方法可以找到一个超过similarity scrore的阈值?在

similarity_scores   actual_value
1.0 1
1.0 1
1.0 1
1.0 1
0.99    1
0.99    1
0.99    1
0.989   1
0.944   1
0.944   1
0.941   1
0.941   1
0.941   1
0.941   1
0.941   0
0.934   0
0.933   0
0.933   1
0.88    1
0.784   0
0.727   0
0.727   0
0.714   0
0.714   1
0.714   0
0.714   0
0.711   0
0.711   0
0.707   0
0.707   0
0.696   0
0.696   0
0.696   0
0.696   0

Tags: 方法字符串文本value阈值手动actualsimilarity
1条回答
网友
1楼 · 发布于 2024-10-01 00:21:56

确定特定分类对于文档检索有多好的一种常见方法是使用precision and recall值。在您的示例中,对于给定的阈值[1]

精度告诉您超过阈值的文档中有多少百分比被手动标记为1值,或者

number of documents above the threshold tagged 1
                        
    number of documents above the threshold

Recall告诉您标记了1的文档的百分比高于阈值:

^{pr2}$

在你给出的例子中,你可以为每个可能的阈值计算这些值,但是唯一相关的是那些在0和1序列之间有转换的值,所以我只看这些点:

1.0 1
1.0 1
1.0 1
1.0 1
0.99    1
0.99    1
0.99    1
0.989   1
0.944   1
0.944   1 TH=0.944 #1's=10; #0's=0
0.941   1
0.941   1
0.941   1
0.941   1
0.941   0 TH=0.941 #1's=14; #0's=1
0.934   0
0.933   0
0.933   1 TH=0.933 #1's=15; #0's=3
0.88    1 TH=0.880 #1's=16; #0's=3
0.784   0
0.727   0
0.727   0
0.714   0
0.714   1
0.714   0
0.714   0 TH=0.714 #1's=17; #0's=9
0.711   0
0.711   0
0.707   0
0.707   0
0.696   0
0.696   0
0.696   0
0.696   0

标记为1的文档总数是17。在

因此,对于这5个可能的阈值TH,我们有{}和{},如下所示:

TH = 0.944
    precision = 10/10       = 1.000
    recall = 10/17          = 0.588
TH = 0.941
    precision = 14/15       = 0.933
    recall = 14/17          = 0.824
TH = 0.933
    precision = 15/18       = 0.833
    recall = 15/17          = 0.882
TH = 0.880
    precision = 16/19       = 0.842
    recall = 16/17          = 0.941
TH = 0.714
    precision = 17/26       = 0.654
    recall = 17/17          = 1.000

从这里处理这些值在很大程度上取决于您的数据以及结果对假阴性或假阳性的敏感程度。例如,如果你想确保你有尽可能少的误报,你应该使用一个阈值TH = 0.941甚至TH = 0.944。在

如果您想平衡精确性和召回率,您可能需要使用TH = 0.880,因为这两个度量值都是从高于它的阈值开始增加的,而精度要比低于它的阈值好得多。这是一种相当主观的方法,但是我们可以通过使用F-measure在一定程度上实现自动化。特别是,我将使用F1-measure,但是您可以找到一个适合您的数据的。在

F1-measure定义为:

F1 = 2 * precision * recall
                  
         precision + recall

使用上面的数字我们得到:

TH = 0.944   F1 = 2*1.000*0.588/1.000+0.588 = 0.741
TH = 0.941   F1 = 2*0.933*0.824/0.933+0.824 = 0.875
TH = 0.933   F1 = 2*0.833*0.882/0.833+0.882 = 0.857
TH = 0.880   F1 = 2*0.842*0.941/0.842+0.941 = 0.889
TH = 0.714   F1 = 2*0.654*1.000/0.654+1.000 = 0.791

如您所见,通过F1度量,TH=0.880排在最前面,TH=0.941不远,这与手动检查可能的阈值得到的结果非常相似。在

[1]为了澄清,我定义了阈值,这样相似度得分大于或等于阈值被视为高于阈值,而严格小于阈值的相似度得分被视为低于。在

相关问题 更多 >