【问题标题】:Rolling up dependent probabilities汇总相关概率
【发布时间】:2021-08-20 22:30:00
【问题描述】:

我有一个模型,其数据框中的特征和标签具有如下列:

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

这里的标签是 1,0 代表真,假。我为每个标签独立构建了一个模型,所以,

model_1: [id, feature_1, feature_2, feature_2,...,feature_N, label_1]

model_2: [id, feature_1, feature_2, feature_2,...,feature_N, label_2]

model_3: [id, feature_1, feature_2, feature_2,...,feature_N, label_3]

所以最后我有 3 个模型可以用来预测每种标签类型,我可以得到 如果每行的 label_1(2 或 3)为真/假,则概率介于 0 和 1 之间。

我想将这些概率汇总为一个分数。然而,问题是这些都是依赖的。因此,如果我独立对待他们,我会遇到可能会得到的情况

[label_1, label_2, 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

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

【问题讨论】:

  • 这是一个非常有趣的问题,与如何将关系信息表达为条件概率有关。因此,这里不在主题范围内,请尝试 stats.stackexchange.com。究竟它是如何摆脱的,很大程度上取决于关于输入和标签变量如何相关的假设,特别是标签之间的关系。 label_1 存在,label_2 存在,label_3 不存在很常见吗?如果是这样,那么考虑为 label_3 构建一个模型,该模型将其他标签作为输入;这相当于关于它们之间的关系的特定假设。

标签: python machine-learning math statistics data-science


【解决方案1】:

假设我们有

import statistics as stats 

p1 = [1.0, 1.0, 1.0]
p2 = [1.0, 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 2023-03-15
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    相关资源
    最近更新 更多