基于模型的聚类和R语言中的高斯混合模型

原文链接:http://tecdat.cn/?p=6105

介绍

四种最常见的聚类方法模型是层次聚类,k均值聚类,基于模型的聚类和基于密度的聚类

可以基于两个主要目标评估良好的聚类算法:

  • 高组内相似性

  • 低组间相似性

基于模型的聚类是迭代方法,通过优化聚类中数据集的分布,将一组数据集拟合到聚类中。高斯分布只不过是正态分布。此方法分三步进行:

  1. 首先随机选择高斯参数并将其拟合到数据集。

  2. 迭代地优化分布参数以拟合尽可能多的点。

  3. 一旦收敛到局部最小值,您就可以将数据点分配到更接近该群集的分布。

高斯混合模型

基于概率模型的聚类技术已被广泛使用,并且已经在许多应用中显示出有希望的结果,从图像分割,手写识别,文档聚类,主题建模到信息检索。基于模型的聚类方法尝试使用概率方法优化观察数据与某些数学模型之间的拟合。

生成模型通常使用EM方法求解,EM方法是用于估计有限混合概率密度的参数的最广泛使用的方法。基于模型的聚类框架提供了处理此方法中的几个问题的主要方法,例如密度(或聚类)的数量,参数的初始值(EM算法需要初始参数值才能开始),以及分量密度的分布(例如,高斯分布)。EM以随机或启发式初始化开始,然后迭代地使用两个步骤来解决计算中的循环:

  • E-Step。使用当前模型参数确定将数据点分配给集群的预期概率。

  • M-Step。通过使用分配概率作为权重来确定每个集群的最佳模型参数。

R中的建模


mb = Mclust(iris[,-5])

#或指定集群数mb3 = Mclust(iris[,-5], 3)

# 或指定集群数mb$modelName

# 或指定集群数mb$G

# 在给定聚类中观察的概率head(mb$z)

# 获取概率,均值,方差summary(mb, parameters = TRUE) table(iris$Species, mb$classification)# 比较table(iris$Species, mb3$classification)

比较每个群集中的数据量

在将数据拟合到模型中之后,我们基于聚类结果绘制模型。

让我们绘制估计的密度。

plot(mb, "density")

您还可以使用该summary()函数来获取最可能的模型和最可能数量的集群。对于此示例,最可能的簇数为5,BIC值等于-556.1142。

比较聚类方法

在使用不同的聚类方法将数据拟合到聚类中之后,您可能希望测量聚类的准确性。在大多数情况下,您可以使用集群内集群度量标准作为度量。集群间距离越高越好,集群内距离越低、越好。

接下来,检索聚类方法的集群验证统计信息:

通常,我们使用within.cluster.ssavg.silwidth验证聚类方法。该within.cluster.ss测量表示所述簇内总和的平方,和avg.silwidth表示平均轮廓宽度

  • within.cluster.ss测量显示了相关对象在群集中的紧密程度; 值越小,集群中的对象越紧密。

  • avg.silwidth是一种度量,它考虑了群集中相关对象的紧密程度以及群集之间的区别程度。轮廓值通常为0到1; 接近1的值表明数据更好地聚类。

k-means和GMM之间的关系

K均值可以表示为高斯混合模型的特例。通常,高斯混合有更好的表现力,因为数据的群集分配还取决于该群集的形状,而不仅仅取决于其接近度。

与k-means一样,用EM训练高斯混合模型可能对冷启动条件非常敏感。如果我们将GMM与k-means进行比较和对比,我们会发现前者的初始条件比后者更多。

结果

每个聚类被建模为多元高斯分布,并通过给出以下内容来指定模型:

  1. 集群数量。

  2. 每个群集中所有数据点的分数。

  3. 每个聚类的均值和它的协方差矩阵。

参考文献

(0)

相关推荐

  • 第120天:机器学习算法之 K 均值聚类

    本文我们来学习一下另一种经常听到的机器学习算法-- K 均值聚类. 这个名字确实跟"K 近邻"有些相像,但是要明确的是,"K 近邻"中的"K" ...

  • Scikit-learn都有哪些功能?Python学习

    Scikit-learn是Python编程语言的免费软件机器学习库,基本功能主要被分为六大部分:分类.回归.聚类.数据降维.模型选择和数据与处理. 分类:指识别给指定对象的所属类别,属于监督学习的范畴 ...

  • 图像处理中的经典机器学习方法

    程序员书屋2021-01-24 14:28:37 在本章中,我们将讨论机器学习技术在图像处理中的应用.首先,定义机器学习,并学习它的两种算法--监督算法和无监督算法:其次,讨论一些流行的无监督机器学习 ...

  • 一个完整的K-means聚类算法指南!

    来源:海豚数据科学实验室 著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理 假设您想根据内容和主题对数百(或数千)个文档进行分类,或者您希望出于某种原因将不同的图像组合在一起.或者更重要 ...

  • R语言中进行期权定价的Heston随机波动率模型

    原文链接:http://tecdat.cn/?p=12111 在本文中,我将向您展示如何模拟股票价格的Heston随机波动率模型. Heston模型是一种期权估值方法,它考虑到同一资产在给定时间交易的 ...

  • R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归

    原文链接:http://tecdat.cn/?p=20882 1导言 这篇文章探讨了为什么使用广义相加模型 是一个不错的选择.为此,我们首先需要看一下线性回归,看看为什么在某些情况下它可能不是最佳选择 ...

  • R语言中的隐马尔可夫HMM模型实例

    原文链接:http://tecdat.cn/?p=17592  最近,我们使用隐马尔可夫模型开发了一种解决方案,并被要求解释这个方案. HMM用于建模数据序列,无论是从连续概率分布还是从离散概率分布得 ...

  • R语言中回归和分类模型选择的性能指标

    原文链接:http://tecdat.cn/?p=11334 有多种性能指标来描述机器学习模型的质量.但是,问题是,对于问题正确的方法是什么?在这里,我讨论了选择回归模型和分类模型时最重要的性能指标. ...

  • R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

    原文链接:http://tecdat.cn/?p=20531 在标准线性模型中,我们假设 .当线性假设无法满足时,可以考虑使用其他方法. 多项式回归 扩展可能是假设某些多项式函数, 同样,在标准线性模 ...

  • 在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

    原文链接:http://tecdat.cn/?p=9024 用GAM进行建模时间序列 我已经准备了一个文件,其中包含四个用电时间序列来进行分析.数据操作将由data.table程序包完成. 将提及的智 ...

  • R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格

    原文链接:http://tecdat.cn/?p=18860 简介 时间序列分析是统计学中的一个主要分支,主要侧重于分析数据集以研究数据的特征并提取有意义的统计信息来预测序列的未来值.时序分析有两种方 ...

  • R语言中的偏最小二乘回归PLS-DA

    原文链接:http://tecdat.cn/?p=8890 主成分回归(PCR)的方法 本质上是使用第一个方法的普通最小二乘(OLS)拟合来自预测变量的主成分(PC).这带来许多优点: 预测变量的数量 ...

  • ggClusterNet:手写算法在R语言中实现Gephi布局之一

    写在前面 像不像Gephi出图,Gephi布局还是有很多人喜欢,R语言确实不好实现,这个算法需要大量的迭代,让模块化点之间连线最短,不断修正,很耗费时间,我将聚类算法和修改后的距离算法合并起来并结合节 ...