微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

汇总相关概率

如何解决汇总相关概率

我在数据框中有一个带有特征和标签的模型,其中包含以下列:

[id,feature_1,feature_2,...,feature_N,label_1,label_2,label_3]

这里的标签是 1,0 代表 True,False。我为每个标签独立建立一个模型,

model_1: [id,label_1]

model_2: [id,label_2]

model_3: [id,label_3]

所以最后我有 3 个模型可以用来预测每个标签类型,我可以得到 如果 label_1(2 或 3)对每一行都是 True/False,则概率介于 0 和 1 之间。

我想将这些概率汇总为一个分数。然而,问题是这些是相互依赖的。所以如果我独立对待他们,我会遇到这样的情况

[label_1,label_3] = [1.0,1.0,0.001],0.99*0.99*0.001 = 0.0001

现在的问题是,有时我们需要预测的可能已经有 label_1 和 label_2 但没有 label_3,所以我们只预测 label_3。这个汇总分数太小了,因为 label_1 和 label_2 是已知的并且是 True 但汇总会说它们是假的 - 但我们可能对 0.001 的预测没有那么自信。为了解决这个问题,我使用了几何平均值

(1.0*1.0*0.001)^(1/3) = 0.10

这似乎没问题,但我想知道是否有更好的方法来处理这个问题?

解决方法

假设我们有

import statistics as stats 

p1 = [1.0,1.0,1.0]
p2 = [1.0,0.001]

几何平均值:

stats.geometric_mean(p1)  # 1.0
stats.geometric_mean(p2)  # 0.10000000000000002

但是使用算术平均值

stats.mean(p1)  # 1.0
stats.mean(p2)  # 0.667

实现更精确:

def am(ps):
    return sum(ps)/len(ps)

am(p1)  # 1.0
am(p2)  # 0.6669999999999999

更有意义,所以我会使用算术平均而不是几何平均。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。