简单地说,机器学习就是做出预测。
掷骰子
大数定律(law of large numbers)告诉我们: 随着投掷次数的增加,这个估计值会越来越接近真实的潜在概率
%matplotlib inline
import torch
from torch.distributions import multinomial
from d2l import torch as d2l
fair_probs = torch.ones([6]) / 6
multinomial.Multinomial(1, fair_probs).sample()
tensor([0., 1., 0., 0., 0., 0.])
抽样(sampling):从概率分布中抽取样本的过程称为抽样
多项分布(multinomial distribution):将概率分配给一些离散选择的分布称为多项分布
模拟1000次投掷
# 将结果存储为32位浮点数以进行除法
counts = multinomial.Multinomial(1000, fair_probs).sample()
counts / 1000 # 相对频率作为估计值
tensor([0.1640, 0.1770, 0.1740, 0.1880, 0.1560, 0.1410])
从一个公平的骰子中生成的数据,我们知道每个结果都有真实的概率 1/6,大约是0.167,所以上面输出的估计值看起来不错。
counts = multinomial.Multinomial(10, fair_probs).sample((500,))
cum_counts = counts.cumsum(dim=0)
estimates = cum_counts / cum_counts.sum(dim=1, keepdims=True)
d2l.set_figsize((6, 4.5))
for i in range(6):
d2l.plt.plot(estimates[:, i].numpy(),
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();
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TIU1zGsi-1662219390403)(https://zh.d2l.ai/_images/output_probability_245b7d_54_0.svg)]
每条实线对应于骰子的6个值中的一个,并给出骰子在每组实验后出现值的估计概率。
当我们通过更多的实验获得更多的数据时,这条实体曲线向真实概率收敛。
随机变量(random variable): 随机变量几乎可以是任何数量,并且它可以在随机实验的一组可能性中取一个值
考虑多个随机变量。 比如,我们可能需要对疾病和症状之间的关系进行建模。 给定一个疾病和一个症状,比如“流感”和“咳嗽”,以某个概率存在或不存在于某个患者身上。 我们需要估计这些概率以及概率之间的关系,以便我们可以运用我们的推断来实现更好的医疗服务。
两个概率同时发生的概率
一个概率发生的前提下,另一个概率发生的概率
结合联合概率和条件概率的定理
为了能进行事件概率求和,我们需要求和法则(sum rule), 即一个概率相当于计算的所有可能选择,并将所有选择的联合概率聚合在一起
边际化结果的概率或分布称为边际概率(marginal probability) 或边际分布(marginal distribution)。
如果两个随机变量和是独立的,意味着事件的发生跟事件的发生无关。
示例预测
我们可以从概率分布中采样。
我们可以使用联合分布、条件分布、Bayes定理、边缘化和独立性假设来分析多个随机变量。
期望和方差为概率分布的关键特征的概括提供了实用的度量形式。