EM 算法是一种求解最大似然估计的方法,通过观测样本,来找出样本的模型参数。最大似然估计是一种通过已知结果,估计参数的方法。
EM 聚类的工作原理
E 步和 M 步:E 步相当于通过初始化的参数来估计隐含变量,M 步是通过隐含变量来反推优化参数。最后通过 EM 步骤的迭代得到最终的模型参数。
EM 算法相当于一个框架,可以采用不同的模型来进行聚类,比如 GMM(高斯混合模型),或者 HMM(隐马尔科夫模型)来进行聚类。HMM 在自然语言处理和语音识别领域中有广泛的应用。在 EM 这个框架中,E 步骤相当于是通过初始化的参数来估计隐含变量。M 步骤就是通过隐含变量反推来优化参数。最后通过 EM 步骤的迭代得到模型参数。
EM和K-Means区别
相同点
1.EM,KMEANS,都是随机生成预期值,然后经过反复调整,获得最佳结果
2.聚类个数清晰
不同点
1.EM是计算概率,KMeans是计算距离。
计算概率,概率只要不为0,都有可能即样本是每一个类别都有可能
计算距离,只有近的的票高,才有可能,即样本只能属于一个类别
创建 GMM 聚类
from sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components=1, covariance_type=‘full’, max_iter=100)
主要的构造参数,讲解下:
1.n_components:即高斯混合模型的个数,也就是我们要聚类的个数,默认值为 1。如果你不指定 n_components,最终的聚类结果都会为同一个值。
2.covariance_type:代表协方差类型。一个高斯混合模型的分布是由均值向量和协方差矩阵决定的,所以协方差的类型也代表了不同的高斯混合模型的特征。协方差类型有 4 种取值:
covariance_type=full,代表完全协方差,也就是元素都不为 0;
covariance_type=tied,代表相同的完全协方差;
covariance_type=diag,代表对角协方差,也就是对角不为 0,其余为 0;
covariance_type=spherical,代表球面协方差,非对角为 0,对角完全相同,呈现球面的特性。
3.max_iter:代表最大迭代次数,EM 算法是由 E 步和 M 步迭代求得最终的模型参数,这里可以指定最大迭代次数,默认值为 100。
用EM算法对王者荣耀英雄进行划分
https://github.com/cystanford/EM_data