多元高斯分佈:
假設 y1,y3,...,yd 分佈獨立,服從分佈 N(0,1)
聯合分佈 y=(y1,y2,...,yd) 服從分佈
g(y)=j=1∏d2π1e−2(yj)2=(2π)2d1e−21yTy
期望:E(y)=0 ; 方差:Var(y)=1
做變化:x=Ty+μ令:∑=TTT
f(x)=g(y)∣det(T)∣−1 (det指行列式)
=(2π)2d(det∑)211e[−21(x−μ)T∑−1(x−μ)]
期望:E(x)=TE(y)+μ=μ方差:Var(x)=Var(Ty+μ)=TV(y)TT=∑
條件高斯分佈與邊緣分佈:
如果兩組變量是聯合高斯分佈,那麼以⼀組變量爲條件,另⼀組變量同樣是高斯分佈。類似地,任何⼀個變量的邊緣分佈也是高斯分佈。
x=(xbxa)μ=(μbμa)∑=(∑ba ∑bb∑aa ∑ab)Λ=(∑)−1Λ=(Λba ΛbbΛaa Λab)
條件分佈是高斯分佈:
p(xa∣xb)=N(xa∣μa∣b,Λaa−1)μa∣b=μa−Λaa−1Λab(xb−μb)
邊緣分佈是高斯分佈:
p(xa)=N(xa∣μa,(∑)aa)
極大似然估計:
L=2nlogdet(∑)−1−i=1∑n21(xi−μ)T(∑)−1(xi−μ)
多元高斯分佈可視化:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl
if __name__ == '__main__':
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
d = np.random.randn(10000000, 2)
N = 30
density, edges = np.histogramdd(d, bins=[30, 30])
print("樣本總數: ", np.sum(density))
density = density/density.max()
x = y = np.arange(N)
t = np.meshgrid(x,y)
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(t[0], t[1], density, c='r', s=15*density, marker='o', depthshade=True)
ax.plot_surface(t[0], t[1], density, cmap='rainbow', rstride=1, cstride=1, alpha=0.9, lw=1)
ax.set_xlabel("x軸")
ax.set_ylabel("y軸")
ax.set_zlabel("z軸")
plt.title("二元高斯分佈")
plt.tight_layout(0.1)
plt.show()