【问题标题】:Generating a probability distribution P(y) from another probability distribution P(x) such that highest probability in P(x) is least likely in P(y)从另一个概率分布 P(x) 生成概率分布 P(y),使得 P(x) 中的最高概率在 P(y) 中的可能性最小
【发布时间】:2021-06-26 12:40:25
【问题描述】:

所以手头的问题是我在带有计数器的字典中有一些值,比如说

dict = {"cats":0, "dogs":0, "lions":0} 

我想从这个字典中随机选择键,并在我选择特定键时增加计数器。

但是当我选择键并增加这些键的计数器时,我希望选择的概率高于计数器值小于其他键的键。

我在下面的回答中实现了这个想法。请让我知道这是否有意义以及是否有更好的方法?

【问题讨论】:

  • 您的答案/解决方案是否满足您的要求?它是否通过了您为其设计的所有测试?正在寻找一个开放式的批评?为什么您选择将您的解决方案作为答案发布,而不是将其包含在您的问题中?
  • @wwii 我已经想出了这个问题的解决方案,我想知道其他人是否对解决这个问题有其他想法。

标签: python random probability probability-distribution numpy-random


【解决方案1】:

许多 方法可以解决这个问题,但作为替代方案,我很想将概率计算为:

def iweight(k, *, alpha=1):
    p = 1/(alpha + np.array(k))
    return p / np.sum(p)

可以用作:

counts = [0, 0, 0, 20]
for _ in range(20):
    i = np.random.choice(len(counts), p=iweight(counts))
    print(i)
    counts[i] += 1

alphaDirichlet process 以互补的方式使用:小值将导致它更喜欢从小计数中绘制值,而大值将使其更均匀。

什么是最好的取决于您正在建模的过程,例如小计数应该优先于中等计数多少,应该选择最大计数等等。这完全取决于您所追求的分布,统计文献应该有很多关于如何开始考虑这一点的例子。

【讨论】:

  • 感谢您向我展示了另一种方法,并花时间写下代码。感谢您的解释,我阅读了 Dirichlet 过程。使用您解释的过程,我可以更好地控制我想使用 alpha 参数在计数上给出更大差异的重要性。那么我应该使用您的方法还是我想出的方法?我使用 softmax 值制作的分布会被称为什么?与您进行 Dirichlet 分布相比。
  • @ZaidTahir 没有那么多众所周知/命名的分布......你的指数总和让我想起了吉布斯分布,但这不是一个很好的匹配。您应该使用最接近您想要做的任何事情的那个!例如如果只是为了好玩,那也没关系。如果您有想要重现的数据,则将数据的摘要统计信息与备选方案进行比较,然后选择最适合您的“最佳”
猜你喜欢
  • 1970-01-01
  • 2022-07-01
  • 2013-12-15
  • 1970-01-01
  • 2015-12-19
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多