如何解决汇总相关概率
[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 举报,一经查实,本站将立刻删除。