今天,我们详细的讲一下EM算法。
前提准备
Jupyter notebook 或 Pycharm
火狐浏览器或谷歌浏览器
win7或win10电脑一台
网盘提取csv数据
需求分析
实现高斯混合模型的 EM 算法(GMM_EM)
高斯混合模型是多个高斯模型的线性叠加而成的,高斯混合模型的概率分布表示如下:
其中,k表示模型的个数,αkα_kαk 是第 k 个模型的系数,表示出现该模型的概率,ϕ(x;μk,Σk) 是第 k 个高斯模型的概率分布。
E步:样本 xix_ixi来自于第 k 个模型的概率,我们把这个概率称为模型 k 对样本 xix_ixi 的“责任”,也叫“响应度”,记作 γ(ik)γ_(ik)γ(ik),计算公式如下:
M步:根据样本和当前 γ 矩阵重新估计参数,注意这里 x 为列向量,计算公式如下:
【目标】给定一堆没有标签的样本和模型个数 K,以此求得混合模型的参数,然后就可以用这个模型来对样本进行聚类。
python代码如下:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import multivariate_normal #本问题考虑的是高斯混合模型,所以导入多元高斯分布multivariate_normal