假设我有两个二进制分类器,A和B都是针对同一组数据进行训练的,并对不同的数据集(但对两个分类器都是相同的)进行预测。A的查全率高,召回率低,B的查全率低,召回率高。有没有办法将这两个模型组合在一起,让我从一个模型中获得精确性,然后从另一个模型中回想起来,或者可能使用其中一个模型的度量来改进另一个模型的精度?
例如,假设这些是衡量标准:
精密度: 0.91
召回: 0.35
精密度: 0.44
召回: 0.90
因为这些是二进制分类器,所以我的标签是1和0,我感兴趣的类是1(所以上面的指标是用来预测1s的)。
假设模型A预测101s,模型B预测701s。
我可以安全地说,在A型预测的101秒中,有9个是真正的积极因素。
我也可以安全地说,在B模型预测的701中,60%是假阳性,而其余则是数据集中真实阳性的90%。
我的问题是,有什么方法让我把这些结果结合起来,这样我才能从数据集中获得所有50个真正的阳性结果吗?
发布于 2019-08-29 03:31:03
你想把你的两种算法组合起来。要做到这一点,不仅要使用sklearn的精度和回忆度量函数,而且要实际获得正的概率(大多数模型可以通过一个简单的函数调用输出这个概率),并在两个(或更多)二进制分类器之间取这些概率的平均值。然后,测试一系列的概率阈值,超过这些阈值你可能会给一些积极的东西贴上标签,并评估对召回和精确性的影响。这是利用不同预测算法的优势来获得更好结果的一种非常常见的方法。
只是一些虚构的伪代码来演示:
recall = []
precision = []
for threshold in [0.1, 0.2, 0.3, ..., 0.9]:
df_of_mean_probabilities['label'] = df_of_mean_probabilities > threshold
recall.append(TP/(TP + FN))
precision.append(TP/(TP + FP))发布于 2019-03-26 06:31:18
你实际上正在寻找的是微和宏观精度和召回。
如果你直接计算出了精确性和召回值,那么所有可能的只有宏精度和宏召回。
宏公式如下:
Macro_Precision = (Precision1 + Precision2) / 2
Macro_Recall = (Precision1 + Precision2) / 2但是,如果你有更多的细节,如真阳性和假阳性,那么你甚至可以计算微精度和微召回。他们的公式如下:
Micro_Precision = (TP1 + TP2) / (TP1 + TP2 + FP1 +FP2)
Micro_Recall = (TP1 + TP2) / (TP1 + TP2 + FN1 + FN2)Micro有它们自己的意义,当您想要深入了解粒度级别时,您可以使用Micro,在数据集不平衡的情况下,这会有所帮助。
https://datascience.stackexchange.com/questions/47990
复制相似问题