概率是一种灵活的语言,用于说明我们的确定程度,并且它可以有效地应用于广泛的领域中。
基本概率论
大数定律告诉我们: 随着投掷次数的增加,这个估计值会越来越接近真实的潜在概率。
首先,我们导入必要的软件包。
%matplotlib inline
import random
from mxnet import np, npx
from d2l import mxnet as d2l
npx.set_np()
在统计学中,我们把从概率分布中抽取样本的过程称为抽样(sampling)。 笼统来说,可以把分布(distribution)看作对事件的概率分配, 稍后我们将给出的更正式定义。 将概率分配给一些离散选择的分布称为多项分布(multinomial distribution)。
为了抽取一个样本,即掷骰子,我们只需传入一个概率向量。 输出是另一个相同长度的向量:它在索引i处的值是采样结果中i出现的次数。
fair_probs = [1.0 / 6] * 6
np.random.multinomial(1, fair_probs)

在估计一个骰子的公平性时,我们希望从同一分布中生成多个样本。 如果用Python的for循环来完成这个任务,速度会慢得惊人。 因此我们使用深度学习框架的函数同时抽取多个样本,得到我们想要的任意形状的独立样本数组。
np.random.multinomial(10, fair_probs)

现在我们知道如何对骰子进行采样,我们可以模拟1000次投掷。 然后,我们可以统计1000次投掷后,每个数字被投中了多少次。 具体来说,我们计算相对频率,以作为真实概率的估计。
counts = np.random.multinomial(1000, fair_probs).astype(np.float32)
counts / 1000

因为我们是从一个公平的骰子中生成的数据,我们知道每个结果都有真实的概率1/6, 大约是0.167,所以上面输出的估计值看起来不错。
我们也可以看到这些概率如何随着时间的推移收敛到真实概率。 让我们进行500组实验,每组抽取10个样本。
counts = np.random.multinomial(10, fair_probs, size=500)
cum_counts = counts.astype(np.float32).cumsum(axis=0)
estimates = cum_counts / cum_counts.sum(axis=1, keepdims=True)
d2l.set_figsize((6, 4.5))
for i in range(6):
d2l.plt.plot(estimates[:, i].asnumpy(),
label=("P(die=" + str(i + 1) + ")"))
d2l.plt.axhline(y=0.167, color='black', linestyle='dashed')
d2l.plt.gca().set_xlabel('Groups of experiments')
d2l.plt.gca().set_ylabel('Estimated probability')
d2l.plt.legend();

每条实线对应于骰子的6个值中的一个,并给出骰子在每组实验后出现值的估计概率。 当我们通过更多的实验获得更多的数据时,这6条实体曲线向真实概率收敛。
概率论公理

随机变量
离散(discrete)随机变量(如骰子的每一面) 和连续(continuous)随机变量(如人的体重和身高)之间存在微妙的区别。 现实生活中,测量两个人是否具有完全相同的身高没有太大意义。 如果我们进行足够精确的测量,最终会发现这个星球上没有两个人具有完全相同的身高。 在这种情况下,询问某人的身高是否落入给定的区间,比如是否在1.79米和1.81米之间更有意义。 在这些情况下,我们将这个看到某个数值的可能性量化为密度(density)。 高度恰好为1.80米的概率为0,但密度不是0。 在任何两个不同高度之间的区间,我们都有非零的概率。
处理多个随机变量
在很多情况下,我们会考虑多个随机变量。 比如,我们可能需要对疾病和症状之间的关系进行建模。 给定一个疾病和一个症状,比如“流感”和“咳嗽”,以某个概率存在或不存在于某个患者身上。 我们需要估计这些概率以及概率之间的关系,以便可以运用我们的推断来实现更好的医疗服务。
联合概率
第一个被称为联合概率(joint probability)P(A=a,B=b)。 给定任意值a和b,联合概率可以回答:A=a和B=b同时满足的概率是多少? 请注意,对于任何a和b的取值,P(A=a,B=b)≤P(A=a)。 这点是确定的,因为要同时发生A=a和B=b,A=a就必须发生,B=b也必须发生(反之亦然)。因此,A=a和B=b同时发生的可能性不大于A=a或是B=b单独发生的可能性。
条件概率
P(B=b∣A=a)表示它:它是B=b的概率,前提是A=a已发生。
贝叶斯定理

边际化
为了能进行事件概率求和,我们需要求和法则, 即B的概率相当于计算A的所有可能选择,并将所有选择的联合概率聚合在一起:P(B)=∑P(A,B),这也称为边际化。 边际化结果的概率或分布称为边际概率或边际分布。
独立性
如果两个随机变量A和B是独立的,意味着事件A的发生跟B事件的发生无关。
P(A,B)=P(A)P(B)
期望和方差
