EM聚类
最大期望算法(Expectation-Maximization algorithm, EM)是一类通过迭代进行极大似然估计(Maximum Likelihood Estimation, MLE)的优化算法 ,通常作为牛顿迭代法(Newton-Raphson method)的替代用于对包含隐变量(latent variable)或缺失数据(incomplete-data)的概率模型进行参数估计 。
EM算法的标准计算框架由E步(Expectation-step)和M步(Maximization step)交替组成,算法的收敛性可以确保迭代至少逼近局部极大值。EM算法是MM算法(Minorize-Maximization algorithm)的特例之一,拥有多个改进版本,包括EM梯度算法、广义EM算法等 。
下面是我对EM算法理解的思维导图:
EM算法相当于一个聚类框架,里面有不同的聚类模型,比如GMM高斯混合模型,或HMM隐马尔科夫模型。本次练习采用的是GMM高斯混合模型
我们通过聚类算法将特征值相近的数据归为一类,不同类之间的差异较大,这样就可以对原始数据进行降维度。通过分成几个组来研究每组的特征。比如我们该案例中对王者荣耀英雄进行分类。如果你的对手选择你擅长的英雄之后,你就可以从同类别中选择另一个英雄作为备选。
分析流程
获得数据
文件名:heros.csv
xiujiayou/python-sklearngithub.com理解数据
数据有69个英雄的20个特征,这些属性分别是最大生命、生命成长、初始生命、最大法力、法力成长、初始法力、最高物攻、物攻成长、初始物攻、最大物防、物防成长、初始物防、最大每 5 秒回血、每 5 秒回血成长、初始每 5 秒回血、最大每 5 秒回蓝、每 5 秒回蓝成长、初始每 5 秒回蓝、最大攻速和攻击范围等
首先导入包和加载数据源
对英雄属性之间的关系进行可视化分析
从图中我们能清晰地看出哪些特征的相关性程度高。我们就从哪些相关性程度高的特征里面只选出一个代表该特征,这样能对属性进行降维。
然后进行数据规范化
构造GMM聚类
训练数据
输出结果
截图一部分结果
评估模型效果