【问题标题】:Renyi divergence for continuous variable in PythonPython中连续变量的Renyi散度
【发布时间】:2019-01-24 09:25:11
【问题描述】:

我必须编写 Python 脚本来计算 Renyi 散度。离散变量很简单,但我正在处理连续变量。由于数字错误,我遇到了很多问题。我已经成功地为我的样本估计了 pdf。这就是我的代码的样子:

def cont_renyi_divergence(pdf1, pdf2, alpha, minimum, maximum):
    def integrand(x):
        return ((pdf1(x))**alpha) * ((pdf2(x))**(1-alpha))
    def KL_integrand(x):
        return (pdf1(x)) * log((pdf1(x))/(pdf2(x)), e)
    if alpha == 1:
        return -integrate.quad(KL_integrand, minimum, maximum)[0]
    else:
        return (1/(1-alpha))*log(integrate.quad(integrand, minimum, maximum)[0], e)

其中 pdf1 和 pdf2 基于高斯分布(pdf1 的均值和方差分别为 30 和 5,pdf2 的均值和方差分别为 30 和 10)。最小值和最大值是样本 1 (pdf1) 或样本 2 (pdf2) 中的最小/最大变量。这是我的函数的定义,它计算 Renyi divrgence。问题是,这个函数的返回不等于equation,它告诉我们两个正态(高斯)分布的散度。我知道,这是一个很难的话题,但我很乐意得到任何答案或建议。

【问题讨论】:

    标签: python


    【解决方案1】:

    其实就是等式。我在公式中放入方差而不是标准差。除此之外,它必须是 alpha-1 而不是 cont_renyi_divergence 定义中的 1-alpha。

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 2021-08-10
      • 2021-01-23
      • 1970-01-01
      相关资源
      最近更新 更多