(Python)Markov,Chebyshev,Chernoff上界函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Python)Markov,Chebyshev,Chernoff上界函数相关的知识,希望对你有一定的参考价值。

我在学习的路上遇到了一项任务。

对于二项式分布X~Bp,n具有平均μ= np和方差σ**2=np(1−p),我们想要概率上限P(X≥c⋅μ) for c≥1。三个界限介绍:

Formulas

任务是分别为每个不等式编写三个函数。他们必须将n , p and c作为输入并返回由上述Markov,Chebyshev和Chernoff不等式给出的P(X≥c⋅np)的上界作为输出。

有一个IO的例子:

码:

print Markov(100.,0.2,1.5)

print Chebyshev(100.,0.2,1.5)

print Chernoff(100.,0.2,1.5)

Output

0.6666666666666666

0.16

0.1353352832366127

我完全卡住了。我只是无法弄清楚如何将所有数学插入函数(或如何在算法上思考)。如果有人可以帮助我,那将是非常有帮助的!

附:除math.exp外,任务条件不允许使用所有库

答案

好的,让我们来看看给出了什么:

输入值和派生值:

  • n = 100
  • p = 0.2
  • c = 1.5
  • m = n*p = 100 * 0.2 = 20
  • s2 = n*p*(1-p) = 16
  • s = sqrt(s2) = sqrt(16) = 4

你有P(X>=a*m)形式的多个不等式,你需要提供术语P(X>=c*m)的界限,所以你需要考虑a在所有情况下如何与c相关。

马尔可夫不等式:P(X>=a*m) <= 1/a

你被要求实现Markov(n,p,c),它将返回P(X>=c*m)的上限。来自

  P(X>=a*m)
= P(X>=c*m)

很明显,a == c,你得到1/a = 1/c。嗯,那只是

def Markov(n, p, c):
  return 1.0/c

>>> Markov(100,0.2,1.5)
0.6666666666666666

这很容易,不是吗?

切尔诺夫不平等说明P(X>=(1+d)*m) <= exp(-d**2/(2+d)*m)

首先,让我们验证是否

  P(X>=(1+d)*m)
= P(X>=c    *m)

然后

1+d = c
  d = c-1

这为我们提供了计算上限所需的一切:

def Chernoff(n, p, c):
  d = c-1
  m = n*p
  return math.exp(-d**2/(2+d)*m)

>>> Chernoff(100,0.2,1.5)
0.1353352832366127

Chebyshev不等式由P(X>=m+k*s)限制1/k**2

再说一遍,如果

  P(X>=c*m)
= P(X>=m+k*s)

然后

c*m     = m+k*s
m*(c-1) = k*s
k       = m*(c-1)/s

然后就可以直接实施了

def Chebyshev(n, p, c):
  m = n*p
  s = math.sqrt(n*p*(1-p))
  k = m*(c-1)/s
  return 1/k**2

>>> Chebyshev(100,0.2,1.5)
0.16

以上是关于(Python)Markov,Chebyshev,Chernoff上界函数的主要内容,如果未能解决你的问题,请参考以下文章

理解Markov, Chebyshev, Chernoff概率不等式

理解Markov, Chebyshev, Chernoff概率不等式

(Python) 马尔科夫、切比雪夫、切尔诺夫上限函数

如何在 Java 中实现 Chebyshev Type 2 LPF?

机器学习算法之——隐马尔可夫(Hidden Markov ModelsHMM)原理及Python实现

漫谈:Chebyshev多项式,Krylov子空间,Chebyshev迭代,共轭梯度方法