聚类算法 - EM

聚类算法 - EM,第1张

EM(Expectation-Maximum)算法也称期望最大化算法。EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐式马尔科夫算法(HMM)、LDA主题模型的变分推断等等。

极大似然估计,只是一种概率论在统计学的应用,它是参数估计的方法之一。说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值。极大似然估计是建立在这样的思想上:已知某个参数能使这个样本出现的概率最大,我们当然不会再去选择其他小概率的样本,所以干脆就把这个参数作为估计的真实值。

极大似然估计的核心关键就是对于一些情况,样本太多,无法得出分布的参数值,可以采样小样本后,利用极大似然估计获取假设中分布的参数值。

由于EM算法目前还未能理解具体的推导过程,因此暂时留下资料,为之后举例算法过程做参考。

这是 文字传送门 ,

这是 视频传送门,这是一个老师讲的课,非常推荐 ,

这是 简易动画展示传送门 。

(1)算法计算结果稳定、准确

(2)EM算法自收敛,既不需要事先设定类别,也不需要数据间的两两比较合并等操作

(1)对初始化数据敏感

(2)EM算法计算复杂,收敛较慢,不适于大规模数据集和高维数据

(3)当所要优化的函数不是凸函数时,EM算法容易给出局部最优解,而不是全局最优解

题主直接在百度上搜索“多元正态分布 最大似然估计”就可以找到一些讲推导的网页;但大部分都是用矩阵代数的办法做的,即用一些矩阵的知识来求矩阵的微分等等,对矩阵知识要求相对高一点;

另一条思路是注意到协方差矩阵 Σ 是一个实对称矩阵,可以进行正交相似对角化,由此可以把复杂的含矩阵的(对数)似然函数简化成相对简单的和式,从而可以手动求微分。这一思路的过程可见于下述文献:

Maximum Likelihood Estimation of μ and Σ from a Multivariate Normal Distribution

(by J C W Rayner)

作者 | Josh Thompson

来源 | 数据派THU

Choosing the Right Clustering Algorithm for your Dataset - KDnuggets

聚类算法十分容易上手,但是选择恰当的聚类算法并不是一件容易的事。

数据聚类是搭建一个正确数据模型的重要步骤。数据分析应当根据数据的共同点整理信息。然而主要问题是,什么通用性参数可以给出最佳结果,以及什么才能称为“最佳”。

本文适用于菜鸟数据科学家或想提升聚类算法能力的专家。下文包括最广泛使用的聚类算法及其概况。根据每种方法的特殊性,本文针对其应用提出了建议。

四种基本算法以及如何选择

聚类模型可以分为四种常见的算法类别。尽管零零散散的聚类算法不少于100种,但是其中大部分的流行程度以及应用领域相对有限。

基于整个数据集对象间距离计算的聚类方法,称为基于连通性的聚类(connectivity-based)或层次聚类。根据算法的“方向”,它可以组合或反过来分解信息——聚集和分解的名称正是源于这种方向的区别。最流行和合理的类型是聚集型,你可以从输入所有数据开始,然后将这些数据点组合成越来越大的簇,直到达到极限。

层次聚类的一个典型案例是植物的分类。数据集的“树”从具体物种开始,以一些植物王国结束,每个植物王国都由更小的簇组成(门、类、阶等)。

层次聚类算法将返回树状图数据,该树状图展示了信息的结构,而不是集群上的具体分类。这样的特点既有好处,也有一些问题:算法会变得很复杂,且不适用于几乎没有层次的数据集。这种算法的性能也较差:由于存在大量的迭代,因此整个处理过程浪费了很多不必要的时间。最重要的是,这种分层算法并不能得到精确的结构。

同时,从预设的类别一直分解到所有的数据点,类别的个数不会对最终结果产生实质性影响,也不会影响预设的距离度量,该距离度量粗略测量和近似估计得到的。

根据我的经验,由于简单易操作,基于质心的聚类(Centroid-based)是最常出现的模型。 该模型旨在将数据集的每个对象划分为特定的类别。 簇数(k)是随机选择的,这可能是该方法的最大问题。 由于与k最近邻居(kNN)相似,该k均值算法在机器学习中特别受欢迎。

计算过程包括多个步骤。首先,输入数据集的目标类别数。聚类的中心应当尽可能分散,这有助于提高结果的准确性。

其次,该算法找到数据集的每个对象与每个聚类中心之间的距离。最小坐标距离(若使用图形表示)确定了将对象移动到哪个群集。

之后,将根据类别中所有点的坐标平均值重新计算聚类的中心。重复算法的上一步,但是计算中要使用簇的新中心点。除非达到某些条件,否则此类迭代将继续。例如,当簇的中心距上次迭代没有移动或移动不明显时,聚类将结束。

尽管数学和代码都很简单,但k均值仍有一些缺点,因此我们无法在所有情景中使用它。缺点包括:

因为优先级设置在集群的中心,而不是边界,所以每个集群的边界容易被疏忽。 无法创建数据集结构,其对象可以按等量的方式分类到多个群集中。 需要猜测最佳类别数(k),或者需要进行初步计算以指定此量规。

相比之下,期望最大化算法可以避免那些复杂情况,同时提供更高的准确性。简而言之,它计算每个数据集点与我们指定的所有聚类的关联概率。用于该聚类模型的主要工具是高斯混合模型(GMM)–假设数据集的点服从高斯分布。

k-means算法可以算是EM原理的简化版本。它们都需要手动输入簇数,这是此类方法要面对的主要问题。除此之外,计算原理(对于GMM或k均值)很简单:簇的近似范围是在每次新迭代中逐渐更新的。

与基于质心的模型不同,EM算法允许对两个或多个聚类的点进行分类-它仅展示每个事件的可能性,你可以使用该事件进行进一步的分析。更重要的是,每个聚类的边界组成了不同度量的椭球体。这与k均值聚类不同,k均值聚类方法用圆形表示。但是,该算法对于不服从高斯分布的数据集根本不起作用。这也是该方法的主要缺点:它更适用于理论问题,而不是实际的测量或观察。

最后,基于数据密度的聚类成为数据科学家心中的最爱。

这个名字已经包括了模型的要点——将数据集划分为聚类,计数器会输入ε参数,即“邻居”距离。因此,如果目标点位于半径为ε的圆(球)内,则它属于该集群。

具有噪声的基于密度的聚类方法(DBSCAN)将逐步检查每个对象,将其状态更改为“已查看”,将其划分到具体的类别或噪声中,直到最终处理整个数据集。用DBSCAN确定的簇可以具有任意形状,因此非常精确。此外,该算法无需人为地设定簇数 —— 算法可以自动决定。

尽管如此,DBSCAN也有一些缺点。如果数据集由可变密度簇组成,则该方法的结果较差;如果对象的位置太近,并且无法轻易估算出ε参数,那么这也不是一个很好的选择。

总而言之,我们并不能说选择了错误的算法,只能说其中有些算法会更适合特定的数据集结构。为了采用最佳的(看起来更恰当的)算法,你需要全面了解它们的优缺点。

例如,如果某些算法不符合数据集规范,则可以从一开始就将其排除在外。为避免繁琐的工作,你可以花一些时间来记住这些信息,而无需反复试验并从自己的错误中学习。

我们希望本文能帮助你在初始阶段选择最好的算法。继续这了不起的工作吧!

无监督学习(Unsupervised learning) :训练样本的标记信息是未知的,目标是为了揭露训练样本的内在属性,结构和信息,为进一步的数据挖掘提供基础。

· 聚类(clustering)

· 降维(dimensionality reduction)

· 异常检测(outlier detection)

· 推荐系统(recommendation system)

监督学习(supervised learning) :训练样本带有信息标记,利用已有的训练样本信息学习数据的规律预测未知的新样本标签

· 回归分析(regression)

· 分类(classification)

聚类 :物以类聚。按照某一个特定的标准(比如距离),把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不再同一个簇内的数据对象的差异性也尽可能的大。

簇 (或类cluster):子集合。最大化簇内的相似性;最小化簇与簇之间的相似性。

聚类可以作为一个单独过程,用于寻找数据内在分布结构,也可以作为其他学习任务前驱过程。

聚类和分类的区别:聚类是无监督学习任务,不知道真实的样本标记,只把相似度搞得样本聚合在一起;分类是监督学习任务,利用已知的样本标记训练学习器预测未知样本的类别。

聚类相似度度量: 几何距离

几种距离度量方法:

· 欧式距离(Euclidean distance):p=2的Minkowski距离, 

· Minkowoski距离:

  · 曼哈顿距离 (Manhattan distance):p=1的Minkowski距离 

· 夹角余弦 :

` 相关系数 (Pearson correlation coefficient): ,等式右面的x其实是 (x方向的均值),y其实是 (y方向的均值),对于这个表达式很不友好,所以在此说明一下。

聚类类别:

· 基于划分的聚类(partitioning based clustering):k均值(K-means), Mean shift

· 层次聚类(hierarchical clustering):Agglomerative clustering, BIRCH

· 密度聚类(density based clustering):DBSCAN

· 基于模型的聚类(model based clustering):高斯混合模型(GMM)

· Affinity propagation

 · Spectral clustering

聚类原理:

划分聚类(partition based clustering):给定包含N个点的数据集,划分法将构造K个分组;每个分组代表一个聚类,这里每个分组至少包含一个数据点,每个数据点属于且只属于一个分组;对于给定的K值,算法先给出一个初始化的分组方法,然后通过反复迭代的的方法改变分组,知道准则函数收敛。

K均值算法(Kmeans):

` 给定样本集:D={ , }, k均值算法针对聚类所得簇:C={ , }

` 最小化平方差: ,其中:  簇 的质心,上面的2代表平方,下面的2代表范数2

具体的K均值算法过程 :

1 随机选择K个对子女给,每个对象出事地代表了一个簇的质心,即选择K个初始质心;2 对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;3 重新计算每个簇的平均值。这个过程不断重复,直到准则函数(误差的平方和SSE作为全局的目标函数)收敛,直到质心不发生明显的变化。

初始质心优化:Kmeans++:

输入:样本集D={ , } 聚类簇的数量K

选取初始质心的过程:

1 随机从m个样本点中选择一个样本作为第一个簇的质心C1;2 计算所有的样本点到质心C1的距离: ;3 从每个点的概率分布  中随机选取一个点作为第二个质心C2。离C1越远的点,被选择的概率越大;4 重新计算所有样本点到质心的距离;5 重复上述过程,直到初始的K个质心被选择完成  ;按照Kmeans的算法步骤完成聚类。

输出:C= { , }

K均值算法(Kmean)的优缺点 :

优点:1 简单直观,抑郁理解实现;2 复杂度相对比较低,在K不是很大的情况下,Kmeans的计算时间相对很短;3 Kmean会产生紧密度比较高的簇,反映了簇内样本围绕质心的紧密程度的一种算法。

缺点:1 很难预测到准确的簇的数目;2 对初始值设置很敏感(Kmeans++);3 Kmeans主要发现圆形或者球形簇,对不同形状和密度的簇效果不好;4 Kmeans对噪声和离群值非常敏感(Kmeadians对噪声和离群值不敏感)

层次聚类(hierarchical clustering) :

· 主要在不同层次对数据集进行逐层分解,直到满足某种条件为止;

· 先计算样本之间的距离。每次将距离最近的点合并到同一个类,然后再计算类与类之间的距离,将距离最近的类合并为一个大类。不停的合并,直到合成一个类。

· 自底向上(bottom-up)和自顶向下(top-down)两种方法:

top-down: 一开始每个个体都是一个初始的类,然后根据类与类之间的链接(linkage)寻找同类,最后形成一个最终的簇

bottom-up:一开始所有样本都属于一个大类,然后根据类与类之间的链接排除异己,打到聚类的目的。

类与类距离的计算方法 :

最短距离法,最长距离法,中间距离法,平均距离法

最小距离:

最大距离:

平均距离:

单链接(single-linkage):根据最小距离算法

全连接(complete-linkage):根据最大距离算法

均链接(average-linkage):根据平均距离算法

凝聚层次聚类具体算法流程:

1 给定样本集,决定聚类簇距离度量函数以及聚类簇数目k;2 将每个样本看作一类,计算两两之间的距离;3 将距离最小的两个类合并成一个心类;4重新计算心类与所有类之间的距离;5 重复(3-4),知道达到所需要的簇的数目

层次聚类的优缺点:

优点:1可以得到任意形状的簇,没有Kmeans对形状上的限制;2 可以发现类之间的层次关系;3不要制定簇的数目

缺点:1 通常来说,计算复杂度高(很多merge/split);2噪声对层次聚类也会产生很大影响;3不适合打样本的聚类

密度聚类(density based clustering) :

  ` 基于密度的 方法的特点是不依赖于距离,而是依赖于密度,从而客服k均值只能发现“球形”聚簇的缺点

· 核心思想:只要一个区域中点的密度大于某个阈值,就把它加到与之相近的聚类中去

· 密度算法从样本密度的角度来考察样本的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果

· 对噪声和离群值的处理有效

· 经典算法:DBSCAN(density based spatial clutering of applications with noise)

DBSCAN 基于近邻域(neighborhood)参数( )刻画样本分布的 紧密程度的一种算法。

基本概念:

· 样本集: D={ }

` 阈值: 

·  :对样本点 的 包括样本集中与 距离不大于 的样本

· 核心对象(core object):如果 的 至少包含MinPts个样本,那么 就是一个核心对象 ,

假设MinPts=3,虚线标识为

·密度直达(directly density-reachable):如果 位于 的 中,并且 是和新对象,那么 由 密度直达

· 密度可达(density-reachable):对 ,如果存在一串样本点p1,p2pn =  ,pn =  ,且 由

` 密度直达,则称 由 密度可达

· 密度相连:存在样本集合中一点o,如果 和 均由O密度可达,那么 和 密度相连

上图中: 是核心对象,那么从 出发, 由 密度直达; 由 密度可达; 与 密度相连。

DBSCAN算法的过程:

1 首先根据邻域参数( )确定样本集合D中所有的核心对象,存在集合P中。加入集合P的条件为 有不少于MinPts的样本数。

2 然后从核心对象集合P中任意选取一个核心对象作为初始点,找出其密度可达的样本生成聚类簇,构成第一个聚类簇C1。

3 将C1内多有核心对象从P中去除,再从更新后的核心对象集合任意选取下一个种子样本。

4 重复(2-3),直到核心对象被全部选择完,也就是P为空集。

聚类算法总结:

基于划分的聚类:K均值(kmeans),kmeans++

层次聚类:Agglomerative聚类

密度聚类:DBSCAN

基于模型 的聚类:高斯混合模型(GMM),这篇博客里咩有介绍

虽然稀里糊涂,但是先跟下来再说吧:

降维

什么是降维?

试想一下现在有n个对象a1,a2,……,an,每个对象有多个属性x1,x2,……,xm。当我们用矩阵表示这些对象时,便是一个An×m的矩阵。举个实例:假设我们有5只猫,每只猫的毛色、体型、身高、体重、年龄、性别等特征各不相同。这里的猫就是我们的对象;“猫”这个称呼是这个对象的标签;毛色、体型、体重等特征就是我们所说的对象的属性。在实际的图像识别过程中,我们可能有大批数量的猫、狗的,所需的对象的属性也是多个,这些属性的个数就是我们所说的维数。维数越多,信息量数据量越大,占用的磁盘空间和内存较多。实际上我们在实际中有时候并用不到这么多的信息,所以就需要降维。

降维是试图压缩维度,并尽可能地保留分布信息。我们可以将其视为数据压缩,或者特征选择。

在实际生活中,我们对样本做数据处理,图像处理等操作时,希望模型的精度比较高,或者说泛化误差率较小,那么我们希样本的采样密度足够大(密采样)。首先我们要明白的是,维数越高,样本在空间上分布得越稀疏(若不明白,请看图:二维降到一维时,样本点的密度增加。可见更高维度的样本点之间密度更稀疏)。

降维在图像处理中叫图像压缩、特征提取。重在最优分区(可分离性);

降维在模式识别中叫做特征选择。重在最有描述(保真性)。

为什么要降维?

(1)维数越多,信息量越大,数据冗余,为了得到我们想要的信息,或者方便数据处理等操作,我们就需要进行降维。

(2)数据维度高,我们将无法借助自己领域的知识无法构建有效特征。

(3)维度超过三维时,人便无法肉眼观察特征。降维后,我们便可以在低维(一维、二维或三维)空间中可视化高维数据。

(4)克服维数灾难。通过某种数据变换,将原始高维属性空间转变为一个低维“子空间”,在这个子空间中,样本密度大幅度提高,距离计算(也是样本间相似度计算,欧几里得距离等来刻画相似度)也将变得容易;降维要保持原始空间中样本之间的距离在低维空间中得以保持,且在低维子空间中更容易学习。

PS:维数灾难

维数灾难是在给定精度下,准确的对某些变量的函数进行估计,所需的样本数量会随着样本的位数的增加而成指数增长。

高维情况下出现的样本稀疏、距离计算困难等问题,就是机器学习中面临的严重障碍——“维数灾难”。

降维的方法

(1)线性降维方法

PCA主成分分析

LDA判别分析

MDS多尺度分析

(2)非线性降维方法

流形学习

ISOMAP等距特征映射

LLE局部线性嵌入

聚类

什么是聚类

聚类尝试在没有训练的条件下,对一些没有标签的数据进行归纳分类。根据相似性对数据进行分组,以便对数据进行概括。没有标签是指我们事先不知道任何样本的类别标号,希望通过某种算法把这一组位置类别的样本划分成若干类别,聚类的时候,并不关心某一类是什么,实现的只是将相似的东西聚在一起。

总的来说,聚类就是对大量未知标注的数据集,按数据内在的相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小。是无监督的分类方式。

聚类的目标

同一类中,类内对象是相似的(或是相关的);不同类中的对象是不同的(不相关的)。

聚类方法好坏的判定:

(1)产生高质量的聚类结果——簇。簇内有高相似性,簇间有低的相似性。

(2)取决于聚类方法采用的相似性评估方法以及该方法的具体实现。

(3)取决于聚类方法能否发现某些/所有的隐含模式。

常见的聚类算法

(1)划分聚类:K-means算法、K-medoids算法、K-pototypes算法、CLARANS算法;

(2)层次聚类:BIRCH算法、CURE算法;

(3)密度聚类:DBSCAN算法、OPTICS算法、DENCLUE算法

(4)网格聚类:STING算法、CLIQUE算法、WAVE-CLUSTER算法

(5)混合聚类:高斯混合模型、CLIQUE(综合密度和网格的算法)

划分方法 :K-MEANS(K均值)、K-MEDOIDS(K中心点)、CLARANS算法(基于选择的算法)

层次分析方法 :BIRCH算法(平衡迭代规约和聚类)、CURE算法(代表点聚类)、CHAMELEON算法(动态模型)

基于密度的算法 :DBSCAN算法(基于高密度连续区域)、DENCLUE算法(密度分布函数)、OPTICS算法(对象排序识别)

基于网格的方法 :STING算法(统计信息网络)、CLIOUE算法(聚类高维空间)、WAVE-CLUSTER算法(小波变换)

基于模型的方法 :统计学方法、神经网络方法

K-Means聚类也叫快速聚类法,在最小化误差函数的基础上将数据划分为预定的类数K。原理简单,便于处理大量数据。

K-Medoids聚类算法不采用簇中对象的平均值作为簇中心,而选用簇中离平均值最近的对象作为簇中心。

①从N个样本数据中随机选取K个对象作为初始的聚类中心;

②分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中;

③所有对象分配完成后,重新计算K个聚类的中心;

④与前一次计算的K个聚类中心比较,如果聚类中心发生变化,转第②步,否则转第⑤步。

⑤当质心不发生变化时停止并输出聚类结果。

连续属性:首先对各属性值进行零-均值规范( zscore ),在进行距离计算。距离计算常用的有:

· 欧几里得距离

· 曼哈顿距离

· 闵可夫斯基距离

文档数据:先将文档数据整理成 文档-词矩阵 格式,再用 余弦相似性 度量。

连续属性的SSE 

 

文档数据的SSE

组内相似性越大,组件差别越大,聚类效果越好。常用的评价方法有:

· purity评价法

· RI评价法

· F值评价法

层次聚类树:Z = linkage(x,method,metric) 

层次聚类或者高斯混合分布聚类模型:T = cluster(Z,’maxclust’,n)  或者 T = cluster(Z,’cutoff’,c)

其中,Z是使用linkage函数构建的层次聚类数,是一个(m-1)×3维矩阵,其中m是观察的样本数;当参数为’maxclust’时,n为聚类的类别;当参数为’cutoff’时,c表示剪枝的阈值。

k均值聚类模型:[IDX,C,sumd,D] = kmeans(x,k,param1,val1,param2,val2,)

其中,IDX返回每个样本数据的类别;C返回k个类别的中心向量;sumd返回每个类别样本到中心向量的距离和;D返回每个样本到中心的距离。

模糊聚类模型:[center,U,obj_fcn] = fcm(data,cluster_n)

其中,U返回最终模糊分区矩阵;obj_fcn为循环过程中目标函数的值。

自组织神经网络聚类模型:net = selforgmap(dimensions,coverSteps,initNeighbor,topologyFcn,distanceFcn) 

聚类分析是无监督分类,就是只有自变量(指标)数据,没有(表示类别的)因变量数据,就可以根据指标数据的距离或相似性进行归类,而且归为多少类也是不确定的,取决于数据本身和分类效果的度量指标。常见的聚类分析算法有层次聚类,K均值聚类,高斯混合聚类,还有基于密度的DBSCAN聚类。

判别分析是有监督分类,就是既有自变量(指标)数据,又有(表示类别的)因变量数据,根据已知类别的样本所提供的信息,总结出分类的规律性,并建立好判别公式和判别准则,这样有了新样本,就能据此判断其所属类别。除了通常的距离判别(相当于KNN),贝叶斯判别(朴素贝叶斯),Fisher判别,其它机器学习中的分类算法,比如决策树,支持向量机,神经网络等也都是判别分析算法。

展示如何使用MATLAB进行聚类分析

分别运用分层聚类、K均值聚类以及高斯混合模型来进行分析,然后比较三者的结果

生成随机二维分布图形,三个中心

% 使用高斯分布(正态分布)

% 随机生成3个中心以及标准差

s = rng(5,'v5normal');

mu = round((rand(3,2)-05)19)+1;

sigma = round(rand(3,2)40)/10+1;

X = [mvnrnd(mu(1,:),sigma(1,:),200);

mvnrnd(mu(2,:),sigma(2,:),300);

mvnrnd(mu(3,:),sigma(3,:),400)];

% 作图

P1 = figure;clf;

scatter(X(:,1),X(:,2),10,'ro');

title('研究样本散点分布图')

K均值聚类

% 距离用传统欧式距离,分成两类

[cidx2,cmeans2,sumd2,D2] = kmeans(X,2,'dist','sqEuclidean');

P2 = figure;clf;

[silh2,h2] = silhouette(X,cidx2,'sqeuclidean');

从轮廓图上面看,第二类结果比较好,但是第一类有部分数据表现不佳。有相当部分的点落在08以下。

分层聚类

eucD = pdist(X,'euclidean');

clustTreeEuc = linkage(eucD,'average');

cophenet(clustTreeEuc,eucD);

P3 = figure;clf;

[h,nodes] = dendrogram(clustTreeEuc,20);

set(gca,'TickDir','out','TickLength',[002 0],'XTickLabel',[]);

可以选择dendrogram显示的结点数目,这里选择20 。结果显示可能可以分成三类

重新调用K均值法

改为分成三类

[cidx3,cmeans3,sumd3,D3] = kmeans(X,3,'dist','sqEuclidean');

P4 = figure;clf;

[silh3,h3] = silhouette(X,cidx3,'sqeuclidean');

图上看,比前面的结果略有改善。

将分类的结果展示出来

P5 = figure;clf

ptsymb = {'bo','ro','go',',mo','c+'};

MarkFace = {[0 0 1],[8 0 0],[0 5 0]};

hold on

for i =1:3

clust = find(cidx3 == i);

plot(X(clust,1),X(clust,2),ptsymb{i},'MarkerSize',3,'MarkerFace',MarkFace{i},'MarkerEdgeColor','black');

plot(cmeans3(i,1),cmeans3(i,2),ptsymb{i},'MarkerSize',10,'MarkerFace',MarkFace{i});

end

hold off

运用高斯混合分布模型进行聚类分析

分别用分布图、热能图和概率图展示结果 等高线

% 等高线

options = statset('Display','off');

gm = gmdistributionfit(X,3,'Options',options);

P6 = figure;clf

scatter(X(:,1),X(:,2),10,'ro');

hold on

ezcontour(@(x,y) pdf(gm,[x,y]),[-15 15],[-15 10]);

hold off

P7 = figure;clf

scatter(X(:,1),X(:,2),10,'ro');

hold on

ezsurf(@(x,y) pdf(gm,[x,y]),[-15 15],[-15 10]);

hold off

view(33,24)

热能图

cluster1 = (cidx3 == 1);

cluster3 = (cidx3 == 2);

% 通过观察,K均值方法的第二类是gm的第三类

cluster2 = (cidx3 == 3);

% 计算分类概率

P = posterior(gm,X);

P8 = figure;clf

plot3(X(cluster1,1),X(cluster1,2),P(cluster1,1),'r')

grid on;hold on

plot3(X(cluster2,1),X(cluster2,2),P(cluster2,2),'bo')

plot3(X(cluster3,1),X(cluster3,2),P(cluster3,3),'g')

legend('第 1 类','第 2 类','第 3 类','Location','NW')

clrmap = jet(80); colormap(clrmap(9:72,:))

ylabel(colorbar,'Component 1 Posterior Probability')

view(-45,20);

% 第三类点部分概率值较低,可能需要其他数据来进行分析。

% 概率图

P9 = figure;clf

[~,order] = sort(P(:,1));

plot(1:size(X,1),P(order,1),'r-',1:size(X,1),P(order,2),'b-',1:size(X,1),P(order,3),'y-');

legend({'Cluster 1 Score' 'Cluster 2 Score' 'Cluster 3 Score'},'location','NW');

ylabel('Cluster Membership Score');

xlabel('Point Ranking');

通过AIC准则寻找最优的分类数

高斯混合模型法的最大好处是给出分类好坏的标准

AIC = zeros(1,4);

NlogL = AIC;

GM = cell(1,4);

for k = 1:4

GM{k} = gmdistributionfit(X,k);

AIC(k)= GM{k}AIC;

NlogL(k) = GM{k}NlogL;

end

[minAIC,numComponents] = min(AIC);

按AIC准则给出的最优分类数为: 3 对应的AIC值为: 864763

后记

(1)pluskid指出K均值算法的初值对结果很重要,但是在运行时还没有发现类似的结果。也许Mathworks对该算法进行过优化。有时间会仔细研究下代码,将结果放上来。

分享:

56

喜欢

4

赠金笔

阅读(21209)┊ 评论 (4)┊ 收藏(1) ┊转载原文 ┊ 喜欢▼ ┊打印┊举报

前一篇:[转载]拉普拉斯矩阵

后一篇:[转载]用matlab做聚类分析

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/meirong/3561584.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-03-05
下一篇2024-03-05

随机推荐

  • 妮维雅美版和德版区别

    地域差德版妮维雅蓝罐与美版妮维雅蓝罐大PK德版的气味比较婉约! 上手照:左边是德版妮维雅蓝罐;右边是美版妮维雅蓝罐。 从照片上就可以看出德版的更润一些,美版的更厚实一些。 从丢姐手感上来说,德版的比美版的延展性更好。 推开之后的效果是一样的

    2024-04-15
    44600
  • 这个妮维雅产品上的英文是什么意思?

    smooth sensation丝滑莹亮润肤乳液for irresistibly smooth skin无法抗拒的光滑皮肤smoothes softens tones 光滑,柔软,亮丽with ginkgo,shea,butter and

    2024-04-15
    48300
  • 露伊薇丹白金套盒怎么样好不好用

    比较好用。露伊薇丹白金套盒采用贵重的白金粉末作为主要成分,同时还含有丰富的多肽、胶原蛋白、海洋活性物质等丰富的保养成分。这些精华成分均富含小分子活性物质,可以深层渗透肌肤,保护肌肤,增强肌肤弹性,提升皮肤保水能力。这套化妆品价格是300多,

    2024-04-15
    42200
  • 娇韵诗轻感双萃精华和双萃精华的区别

    二者的区别为功能不同和成分配比不同。1、功能不同:轻感双萃精华主要针对肌肤疲劳、干燥、无弹性等问题,而双萃精华则是提高肌肤含水量以及回复肌肤弹性,改善皮肤干燥粗糙、暗沉等一系列问题。2、成分配比不同:轻感双萃精华成分中主要包括紫松果和光果甜

    2024-04-15
    32300
  • 美肤蒂尼是什么品牌

    美肤帝尼护肤品很好用。 我觉得对于敏感肌的我来说,它真的完胜珂润面霜,蕴含VCIP(学名抗坏血酸四异棕榈酸酯,这个抗坏血酸是强效抗氧化剂,也是咱们国家唯一承认的可以添加到婴儿食品中的抗氧化剂,抗老修护效果非常赞。成分扎实靠谱,能起到强效抗老

    2024-04-15
    33600
  • SK-II嫩肤清莹露怎么样?SK-II 嫩肤清莹露好用吗?

    SK-II神仙水的英文名:FACIAL TREATMENT ESSENCE。字面很好理解,面部修护精华露。SK-II的神仙水中文这边叫:护肤精华露。顾名思义,也就是调整皮肤的一款高机能精华水。SK-II嫩肤清莹露怎么样?SK-II 嫩肤清莹

    2024-04-15
    34500
  • 有谁了韩国的伊思蜗牛霜和面膜?用了效果怎么样?

      竹里行厨,来问讯、诸侯宾老。春满座、弹丝未遍,挥毫先了。云避仁风收雨脚,日随和气熏林表。向尊前、来访白髯翁,衰何早。  志手里,功名兆。光万丈,文章耀。洗冰壶胸次,月秋霜晓。应念一堂尘网暗,放将百和香云绕。算赏心、清话古来多,如今少。这

    2024-04-15
    42100

发表评论

登录后才能评论
保存