統計機器學習-多元高斯分佈

多元高斯分佈:

假設   y1,y3,...,ydy^1,y^3,...,y^d  分佈獨立,服從分佈 N(0,1)N(0,1)
聯合分佈 y=(y1,y2,...,yd)y=(y^1,y^2,...,y^d) 服從分佈
g(y)=j=1d12πe(yj)22=1(2π)d2e12yTyg(y)=\prod_{j=1}^d \frac{1}{\sqrt{2\pi}}e^{-\frac{(y^j)^2}{2}}=\frac{1}{(2\pi)^{\frac{d}{2}}}e^{-\frac{1}{2}y^Ty}
E(y)=0      Var(y)=1期望:E(y)=0 \ \ \ ;\ \ \ 方差:Var(y)=1
做變化:x=Ty+μx=Ty+\mu令:=TTT\sum=TT^T
f(x)=g(y)det(T)1                         (det)f(x)=g(y)|det(T)|^{-1} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (det指行列式)
=1(2π)d2(det)12e[12(xμ)T1(xμ)]=\frac{1}{(2\pi)^{\frac{d}{2}}(det\sum)^{\frac{1}{2}}}e^{[-\frac{1}{2}(x-\mu)^T\sum^{-1}(x-\mu)]}
E(x)=TE(y)+μ=μ期望:E(x)=TE(y)+\mu=\muVar(x)=Var(Ty+μ)=TV(y)TT=方差:Var(x)=Var(Ty+\mu)=TV(y)T^T=\sum

條件高斯分佈與邊緣分佈:

如果兩組變量是聯合高斯分佈,那麼以⼀組變量爲條件,另⼀組變量同樣是高斯分佈。類似地,任何⼀個變量的邊緣分佈也是高斯分佈。
x=(xbxa)x=\big(_{x_b}^{x_a}\big)μ=(μbμa)\mu=\big(_{\mu_b}^{\mu_a}\big)=(ba   bbaa   ab)\sum=\bigg(_{\sum_{ba}\ \ \ \sum_{bb}}^{\sum_{aa}\ \ \ \sum_{ab}}\bigg)Λ=()1\Lambda=(\sum)^{-1}Λ=(Λba   ΛbbΛaa   Λab)\Lambda=\bigg(_{\Lambda_{ba} \ \ \ \Lambda_{bb}}^{\Lambda_{aa}\ \ \ \Lambda_{ab}}\bigg)
條件分佈是高斯分佈:
p(xaxb)=N(xaμab,Λaa1)p(x_a|x_b)=N(x_a|\mu_{a|b},\Lambda_{aa}^{-1})μab=μaΛaa1Λab(xbμb)\mu_{a|b}=\mu_a-\Lambda_{aa}^{-1}\Lambda_{ab}(x_b-\mu_b)
邊緣分佈是高斯分佈:
p(xa)=N(xaμa,()aa)p(x_a)=N(x_a|\mu_a,(\sum)_{aa})

極大似然估計:
L=n2logdet()1i=1n12(xiμ)T()1(xiμ)L=\frac{n}{2}logdet(\sum)^{-1}-\sum_{i=1}^n\frac{1}{2}(x_i-\mu)^T(\sum)^{-1}(x_i-\mu)

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
多元高斯分佈可視化:

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()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章