繁体   English   中英

从另一个概率分布 P(x) 生成概率分布 P(y),使得 P(x) 中的最高概率在 P(y) 中的可能性最小

[英]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)

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

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

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

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

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

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

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

alpha用于Dirichlet 过程的补充方式:小值将使其更喜欢从小计数中提取值,而大值将使其更均匀。

什么是最好的将取决于您正在建模的过程,例如,小计数应该比中等计数优先多少,是否应该选择最大计数等等。这一切都取决于您所追求的分布和统计文献应该有许多例子说明了如何开始思考这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM