Geometric

class paddle.distribution. Geometric ( probs ) [源代码]

在概率论和统计学中,几何分布是一种离散概率分布,由一个正形状参数参数化,用 probs 表示。在 n 次伯努利试验中,需要 k+1 次试验才能得到第一次成功的概率。

详细来说就是:前 k 次失败,第 k+1 次成功的概率,概率密度函数如下:

\[P(X=k) = (1-p)^{k-1}p\]

上面数学公式中:

\(p\):表示成功的概率。

\(X\):表示获得第一次成功之前进行了几次试验。

\(k\):表示实验次数,是一个正整数

参数

  • probs (float|Tensor) - 几何分布成功概率参数。数据类型为 float、Tensor。

代码示例

>>> import paddle
>>> from paddle.distribution import Geometric

>>> geom = Geometric(0.5)

>>> print(geom.mean)
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
1.)

>>> print(geom.variance)
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
2.)

>>> print(geom.stddev)
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
1.41421354)

属性

mean

几何分布的均值。

数学公式:

\[mean = \frac{1}{p} - 1\]

上面数学公式中:

\(p\):试验成功的概率。

variance

几何分布的方差。

数学公式:

\[variance = \frac{1-p}{p^2}\]

上面数学公式中:

\(p\):试验成功的概率。

stddev

几何分布的标准差。

数学公式:

\[stddev = \sqrt{variance} = \sqrt{\frac{1-p}{p^2}} = \frac{\sqrt{1-p}}{p}\]

上面数学公式中:

\(p\):试验成功的概率。

方法

pmf(k)

几何分布的概率质量函数。

参数

  • k (int) - 几何分布的随机变量。

数学公式:

\[pmf(X=k) = (1-p)^{k} p, \quad k=0,1,2,3,\ldots\]

上面数学公式中:

\(p\):试验成功的概率。

\(k\):几何分布的随机变量。

返回

  • Tensor - value 第一次成功之前失败 k 次的概率。

代码示例

>>> import paddle
>>> from paddle.distribution import Geometric

>>> geom = Geometric(0.5)
>>> print(geom.pmf(2))
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
0.12500000)

log_pmf(k)

几何分布的对数概率质量函数。

参数

  • k (int) - 几何分布的随机变量。

数学公式:

\[\log pmf(X = k) = \log(1-p)^k p\]

上面数学公式中:

\(p\):试验成功的概率。

\(k\):第一次成功之前试验失败次数。

返回

  • Tensor - value 第一次成功之前失败 k 次的概率的对数。

代码示例

>>> import paddle
>>> from paddle.distribution import Geometric

>>> geom = Geometric(0.5)
>>> print(geom.log_pmf(2))
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
-2.07944131)

cdf(k)

几何分布的累积分布函数。

参数

  • k (int) - 几何分布的随机变量。

数学公式:

\[cdf(X \leq k) = 1 - (1-p)^(k+1), \quad k=0,1,2,\ldots\]

上面的数学公式中:

\(p\):试验成功的概率。

\(k\):几何分布的随机变量。

返回

  • Tensor: value 随机变量 X 小于或等于某个值 x 的概率。

代码示例

>>> import paddle
>>> from paddle.distribution import Geometric

>>> geom = Geometric(0.5)
>>> print(geom.cdf(4))
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
0.96875000)

entropy()

几何分布的信息熵。

数学公式:

\[entropy() = -\left[\frac{1}{p} \log p + \frac{1-p}{p^2} \log (1-p) \right]\]

上面数学公式中:

\(p\):试验成功的概率。

代码示例

>>> import paddle
>>> from paddle.distribution import Geometric

>>> geom = Geometric(0.5)
>>> print(geom.entropy())
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
1.38629425)

kl_divergence(other)

两个 Geometric 分布之间的 KL 散度。

参数

  • other (Geometric) - Geometric 的实例。

数学公式:

\[KL(P \| Q) = \frac{p}{q} \log \frac{p}{q} + \log (1-p) - \log (1-q)\]

上面的数学公式中:

\(P\):Geometric 几何分布实例。

\(Q\):Geometric 几何分布实例。

\(p\):Geometric_p 分布试验成功的概率。

\(q\):Geometric_q 分布试验成功的概率。

返回

  • Tensor: 两个几何分布之间的 KL 散度。

代码示例

>>> import paddle
>>> from paddle.distribution import Geometric

>>> geom_p = Geometric(0.5)
>>> geom_q = Geometric(0.1)
>>> print(geom_p.kl_divergence(geom_q))
Tensor(shape=[], dtype=float32, place=Place(cpu), stop_gradient=True,
0.51082563)

sample(shape)

随机采样,生成指定维度的样本。

参数

  • shape (tuple(int)) - 采样的样本维度。

返回

  • Tensor - 预先设计好维度的样本数据。

代码示例

>>> import paddle
>>> from paddle.distribution import Geometric

>>> paddle.seed(2023)
>>> geom = Geometric(0.5)
>>> print(geom.sample((2,2)))
Tensor(shape=[2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[0., 0.],
 [1., 0.]])

rsample(shape)

重参数化采样,生成指定维度的样本。

参数

  • shape (tuple(int)) - 重参数化采样的样本维度。

返回

  • Tensor - 预先设计好维度的样本数据。

代码示例

>>> import paddle
>>> from paddle.distribution import Geometric

>>> paddle.seed(2023)
>>> geom = Geometric(0.5)
>>> print(geom.rsample((2,2)))
Tensor(shape=[2, 2], dtype=float32, place=Place(cpu), stop_gradient=True,
[[0., 0.],
 [1., 0.]])