学做网站好学吗,定制网站制作公司怎么样,想做一个网站怎么做的,写网站编程需要什么文章目录1. EM算法2. EM算法收敛3. EM算法应用4. EM算法的推广5. sklearn.mixture.GaussianMixture概率模型有时既有观测变量#xff08;observable variable#xff09;#xff0c;又有隐变量或潜在变量#xff08;latent variable#xff09;如果概率模型的变量都是观测…
文章目录1. EM算法2. EM算法收敛3. EM算法应用4. EM算法的推广5. sklearn.mixture.GaussianMixture概率模型有时既有观测变量observable variable又有隐变量或潜在变量latent variable如果概率模型的变量都是观测变量那么给定数据可以直接用极大似然估计法或贝叶斯估计法估计模型参数。当模型含有隐变量时不能简单地使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计法或极大后验概率估计法。
EM 算法与初值的选择有关选择不同的初值可能得到不同的参数估计值
1. EM算法
EM算法是含有隐变量的概率模型极大似然估计或极大后验概率估计的迭代算法含有隐变量的概率模型的数据表示为 P(Y,Z∣θ)P(Y,Z| \theta)P(Y,Z∣θ) 。YYY 是观测变量的数据ZZZ 是隐变量的数据θ\thetaθ 是模型参数。EM算法通过迭代求解观测数据的对数似然函数 L(θ)logP(Y∣θ){L}(\theta)\log {P}(\mathrm{Y} | \theta)L(θ)logP(Y∣θ) 的极大化实现极大似然估计。
每次迭代包括两步
EEE 步求期望即求 logP(Z∣Y,θ)\log P ( Z | Y, \theta )logP(Z∣Y,θ) 关于 P(Z∣Y,θ(i))P (Z | Y, \theta ^{(i)})P(Z∣Y,θ(i)) 的期望
Q(θ,θ(i))∑ZlogP(Y,Z∣θ)P(Z∣Y,θ(i))Q\left(\theta, \theta^{(i)}\right)\sum_{Z} \log P(Y, Z | \theta) P\left(Z | Y, \theta^{(i)}\right)Q(θ,θ(i))Z∑logP(Y,Z∣θ)P(Z∣Y,θ(i)) 称为 QQQ 函数这里 θ(i)\theta^{(i)}θ(i) 是参数的现估计值
MMM步求极大即极大化 QQQ 函数得到参数的新估计值
θ(i1)argmaxθQ(θ,θ(i))\theta^{(i1)}\arg \max _{\theta} Q\left(\theta, \theta^{(i)}\right)θ(i1)argθmaxQ(θ,θ(i))
在构建具体的EM算法时重要的是定义QQQ函数。每次迭代中EM算法通过极大化QQQ函数来增大对数似然函数L(θ){L}(\theta)L(θ)
2. EM算法收敛
EM算法在每次迭代后均提高观测数据的似然函数值单调递增的即
P(Y∣θ(i1))⩾P(Y∣θ(i))P\left(Y | \theta^{(i1)}\right) \geqslant P\left(Y | \theta^{(i)}\right)P(Y∣θ(i1))⩾P(Y∣θ(i))
在一般条件下EM算法是收敛的但不能保证收敛到全局最优
3. EM算法应用
EM算法应用极其广泛主要应用于含有隐变量的概率模型的学习高斯混合模型的参数估计是EM算法的一个重要应用下一章的隐马尔可夫模型的非监督学习也是EM算法的一个重要应用
4. EM算法的推广
EM算法还可以解释为 FFF 函数的 极大-极大算法EM算法有许多变形如 GEM 算法GEM算法的特点是每次迭代增加 FFF 函数值并不一定是极大化 FFF 函数从而增加似然函数值
5. sklearn.mixture.GaussianMixture
sklearn.mixture.GaussianMixture
class sklearn.mixture.GaussianMixture(n_components1, covariance_typefull, tol0.001,
reg_covar1e-06, max_iter100, n_init1, init_paramskmeans, weights_initNone,
means_initNone, precisions_initNone, random_stateNone, warm_startFalse, verbose0, verbose_interval10)参数说明参考了 https://blog.csdn.net/lihou1987/article/details/70833229
n_components: 混合高斯模型个数默认为1covariance_type: 协方差类型包括{‘full’,‘tied’, ‘diag’, ‘spherical’}四种分别对应完全协方差矩阵元素都不为零相同的完全协方差矩阵HMM会用到对角协方差矩阵非对角为零对角不为零球面协方差矩阵非对角为零对角完全相同球面特性默认‘full’ 完全协方差矩阵tolEM迭代停止阈值默认为1e-3.reg_covar: 协方差对角非负正则化保证协方差矩阵均为正默认为0max_iter: 最大迭代次数默认100n_init: 初始化次数用于产生最佳初始参数默认为1init_params: {‘kmeans’, ‘random’}, defaults to ‘kmeans’.初始化参数实现方式默认用kmeans实现也可以选择随机产生weights_init: 各组成模型的先验权重可以自己设默认按照7产生means_init: 初始化均值同8precisions_init: 初始化精确度模型个数特征个数默认按照7实现random_state :随机数发生器warm_start :若为True则fit调用会以上一次fit的结果作为初始化参数适合相同问题多次fit的情况能加速收敛默认为False。verbose :使能迭代信息显示默认为0可以为1或者大于1显示的信息不同verbose_interval :与13挂钩若使能迭代信息显示设置多少次迭代后显示信息默认10次。
sklearn官方实例
#%%
# ---------sklearn GaussianMixture-----
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
from sklearn import mixture
from mpl_toolkits.mplot3d import Axes3D #3维绘图
n_samples 300
np.random.seed(0)#%% 以(-10,15) 和(0,20)为中心的高斯分布
shifted_gaussian np.random.randn(n_samples, 2) np.array([20, 20])
shifted_gaussian2 np.random.randn(n_samples, 2) np.array([-10, 15])#%% 拉伸的0,0为中心的高斯分布
C np.array([[0, -0.7], [3.5, 0.7]])
stretched_gaussian np.dot(np.random.randn(n_samples, 2), C)#%% 数据堆叠
X_train np.vstack([shifted_gaussian, stretched_gaussian,shifted_gaussian2])#%% 高斯分布 3个高斯分布
clf mixture.GaussianMixture(n_components3, covariance_typefull)#%% 拟合
clf.fit(X_train)#%%
x np.linspace(-20, 30)
y np.linspace(-20, 40)#%%
X, Y np.meshgrid(x, y)
XX np.array([X.ravel(), Y.ravel()]).T
Z -clf.score_samples(XX)#%%
Z Z.reshape(X.shape)
CS plt.contour(X, Y, Z, normLogNorm(vmin1.0, vmax1000), levelsnp.logspace(1, 4, 18))
CB plt.colorbar(CS, shrink0.8, extendboth)
plt.scatter(X_train[:, 0], X_train[:, 1], 0.8)
plt.show()# 3D绘图
fig plt.figure()
ax Axes3D(fig)
# ax.scatter(X,Y,Z)
ax.plot_surface(X, Y, Z, cmapplt.cm.autumn)
plt.show()