一文搞定!R语言实现数据挖掘十大算法之EM算法

一文搞定!R语言实现数据挖掘十大算法之EM算法

了解数据挖掘的小伙伴应该知道,数据挖掘领域有十大算法,其中有一个算法是你无法绕开的入门必备,那就是EM算法,这个算法看似简单但又不是一看就懂,让人又爱又恨。于是今天小果就争取用一个通俗易懂的案例来让大家学会它!

分析之前,我们先来了解一下,什么是EM算法呢?EM算法全称叫做最大期望算法(Expectation-maximization algorithm,又译为期望最大化算法),是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量。

最大期望算法经过两个步骤交替进行计算,

第一步就是计算期望值(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;

第二步是最大化(M),最大化在第一步求得的最大似然值来计算参数的值。第二步上找打的参数估计值被用于下一次第一步计算中。这个过程不断迭代进行参数估计,找到与数据本身最契合的最优聚类方式,同时给出最优类别数。

理论结束,开始上分析!

在R语言中实现期望最大化聚类的是mclust软件包中的核心函数mclust()。为了能够更加直观地展示EM算法的分类效果,小果这次使用我们的老朋友鸢尾花数据来展开分析。

代码展示

library(mclust)

#运用mclust包处理鸢尾花数据,并自动推荐簇数

irisEM<-Mclust(iris[,1:4]) #自动推荐簇数

summary(irisEM)

注:此处EM算法推荐分为两簇,但由于已知数据集的最佳簇数为3,所以此处我们采用自定义簇数。

#重新自定义簇数

irisEM<-Mclust(iris[,1:4],3)

summary(irisEM)

plot(irisEM,what=”classification”,dimens=c(3,4)) #画出分类结果

#得到混淆矩阵

table(iris$Species,irisEM$classification, c(“真实值”,”预测值”))

#输出EM聚类评估图(分类图、不确定性图和密度图)

plot(irisEM)

散点图

中度可信度描述已自动生成

结果分析:由上面分析结果可以看出,基于EM算法自定义3个簇数,Mclust模型可以有效地把setosa和virginica区分开来,但是versicolor类别有5个样本分类错误,但总体来说EM样本仍然拥有较高的分类准确率,值得被小伙伴们牢牢掌握!

分析结束啦!小伙伴有没有学会呢?还有点迷糊的小伙伴一定要动手试试哦!打好基础才可以在知识的海洋越游越远哦!(推荐一下小果新开发的零代码云生信分析工具平台包含超多零代码小工具,上传数据一键出图,感兴趣的小伙伴欢迎来参观哟,网址:http://www.biocloudservice.com/home.html)