PRML 1.2 概率论
贝叶斯概率
考虑一组由参数驱动的
考虑由一组参数w ww和观察数据D 驱动的概率分布。根据关于w 的观点,我们可以通过以下两种方式来考虑w 的真值:
frequentist POV频率学派: w 是唯一的,但未知的,我们可以通过D 来估计我们离w有多近
bayesian POV贝叶斯: D 是唯一的(观察到的);w ww是一个随机变量(可能会改变,我们将在D中看到它的影响)
在频率型POV和贝叶斯型POV中,我们都使用了MLE P ( D ∣ w )
p ( w ∣ D ) 表达观测到 D之后估计参数 w 的不确定性
p ( w ) 是先验概率,表达参数 w 的假设
p ( D ∣ w ) 是似然函数,表达观测数据的效果,参数的不确定性通过概率分布来表达
高斯分布
高斯分布由以下定义
代表高斯分布的另一种方法是考虑指示的精确性β : = 1 / σ 2
def norm_pdf(x, mu, sigma2): return 1 / np.sqrt(2 * np.pi * sigma2) * np.exp(-(x - mu)**2 / (2 * sigma2)) xrange = np.linspace(-4, 4, 100) plt.plot(xrange, norm_pdf(xrange, 0, 1), label=r"$\mu=0; \ \sigma^2=1$") plt.plot(xrange, norm_pdf(xrange, 1, 2), label=r"$\mu=1; \ \sigma^2=2$") plt.plot(xrange, norm_pdf(xrange, -1, 3), label=r"$\mu=-1; \ \sigma^2=3$") plt.legend(fontsize=15)
在D 维随机向量 x的高斯分布定义
from numpy.linalg import inv
Xrange = np.mgrid[-3:3:0.1, -3:3:0.1]
Sigma = np.array([[0.1, -0.8]]).T Sigma = np.exp(Sigma @ Sigma.T) def norm_pdf_v(X, mu, sigma): diff_term = (X - mu[:, None]) D = len(X) den = (2 * np.pi) ** (D / 2) * np.sqrt(det(sigma)) num = np.einsum("inm,ij,jnm->nm", diff_term, inv(sigma), diff_term) num = np.exp(-num / 2) return num / den
plt.title("Multivariate Normal", fontsize=15) plt.contourf(*Xrange, norm_pdf_v(Xrange, mu0, Sigma), cmap="viridis", levels=20);