基于R的聚类模型(混合模型-基于概率密度分布的聚类方法)
来源:互联网 发布:javascript教学视频 编辑:程序博客网 时间:2024/06/06 09:42
混合模型
在上一讲当中,我们给大家介绍了一种比较特殊的聚类算法,DBSCAN。这种算法主要针对一些样本点分布比较特殊的情形,并且我们通过例子发现,传统K-means算法对这种数据无效。在这一讲当中,我们再次看一种比较比较常见,适用情形非常固定的聚类算法,叫做混合模型,这种聚类算法是假设样本分布来自一个潜在的概率分布。或者若干个概率分布的混合。那么样本点的出现也就可以理解为从这个混合分布中抽取的。这样的话有两个好处,第一个好处是,既然每个样本点是来自若干个概率分布的混合,那么每个点相对每个概率分布就会有个权重,这个权重是我们聚类的关键。光是这么说估计大家感到抽象,我们拿例子说明,我们先画一个散点图。代码与图片如下:
# 载入包library("MASS")# 载入画图的包library("ggpubr")library(ggplot2)#引入到R空间数据data("geyser")#画个散点图ggplot(geyser,aes(x=duration,y=waiting))+geom_point()
图是这个样子的:
这样的话,我们其实看不出什么,只是大体感觉可以聚为三类。但是如果我认为这些样本点是从一个潜在的概率分布中抽取的,情况就不一样了,下面给大家画个图,情形就清楚很多了。
#二维概率密度图ggscatter(geyser, x = "duration", y = "waiting")+ geom_density2d()
图形如下:
那么这样的话,我们就大体知道了,貌似数据是来自三个二维正态分布的。将三个二维正态分布看成一个整体,就形成了一个混合模型,这个模型是由三个正态模型加起来的,并且三个正态分布在这个混合模型中所占的权重也是不一样的。这是一个角度,从另外一个角度呢,每个样本点与每个混合模型当中的每个成分关系也是不一样的。这个关系决定了我们的聚类。比如在上图中,最左边的那个点,它肯定是属于最左边的那个正态分布的概率大一些。有些同学肯定会说了,什么叫属于最左边的那个正态分布的概率大一些,明明就是属于它的。其实这样是不对的,我们再强调一些,我们图中的样本点是从一个混合分布中抽取的,不是从图中某一个正态分布抽取的,所以每个点对于每个成分的关系是一个概率。并且这个概率是按照贝叶斯公式计算出来的。下面呢,我们就再次给大家拿代码验证一下。
#导入混合模型的包library(mclust)library(factoextra)#设定数据集df<-geyser#设置随机数种子set.seed(123)#先做k-means聚类km_result <- kmeans(df, 3, nstart = 24)#画图看效果fviz_cluster(km_result , df, geom = "point", ellipse= FALSE, show.clust.cent = FALSE, palette = "jco", ggtheme = theme_classic())#混合模型聚类mc <- Mclust(df) ggplot(df,aes(x=waiting,y=duration,colour=class))+geom_point()
我们和之前一样,先做一个k-means聚类,之后在进行对比。结果如下:
可以看到,k-means聚成三类效果不好,第一类还比较完整,第二类和第三类和原始类别明显不同。
下面是基于混合模型的聚类
可以看到基于混合模型的聚为四类,效果还是很好的,从概率密度分布的角度看。
结论
本节我们看了基于混合模型的聚类,实际上,具体选择哪一种聚类方式,还是首先对数据进行一些简单的可视化处理,通过可视化,我们大体就能确定使用何种聚类方法。
- 基于R的聚类模型(混合模型-基于概率密度分布的聚类方法)
- 基于概率模型的聚类
- R语言基于模型的聚类方法处理
- 基于密度的聚类方法
- 基于密度的聚类方法-OPTICS
- 基于密度方法的聚类
- 5、聚类之层次聚类、基于划分的聚类(k-means)、基于密度的聚类、基于模型的聚类
- 5、聚类之层次聚类、基于划分的聚类(k-means)、基于密度的聚类、基于模型的聚类
- 基于模型的聚类
- 基于密度的聚类
- 基于密度的聚类
- 基于密度的聚类
- 基于密度的聚类
- 基于密度的聚类----DBSCAN算法使用(R语言)
- 深入浅出——基于密度的聚类方法
- 《基于密度峰值的混合型数据聚类算法设计》-聚类效果彩色图
- 常见的概率分布模型
- 基于密度的聚类算法
- IOC容器在Web容器中的创建及初始化
- 用DbVisualizer对db2表reorg
- 冒泡机制
- 漂亮的网站模板连接
- AndoridMVP二级列表购物车
- 基于R的聚类模型(混合模型-基于概率密度分布的聚类方法)
- 教你如何打造出一个前端可视化监控系统
- java中单引号和双引号有什么区别?
- 隐藏模态框
- Javaweb项目如何做到前后端分离
- git cherry-pick
- 局部敏感哈希
- discuz 二级、三级分类信息设置
- 产品经理不再纸上谈兵——雾里看花的用户画像