六种常见聚类算法

聚类原则:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。逐次计算各簇中心的值为新的中心值,迭代更新,直至簇中心位置不再改变或者达到最大迭代次数。

Kmeans的目标函数

定义为:各簇成员到其簇首的距离的平方和最小,如下所示

式中,C为簇首(聚类中心)集合,共有K个簇首。计算目标函数梯度,令梯度为0,计算簇首C,

式中l(x)表示簇成员个数。通过迭代优化目标函数来计算最佳参数C。由上式得,在每次迭代中需更新聚类中心为每个簇的簇心即簇成员的均值。

算法流程:

优点:

速度快,简单

缺点:

聚类原则:聚类距离簇边界最近的点

核心点:核心点的半径范围内的样本个数≥最少点数

边界点:边界点的半径范围内的样本个数小于最少点数大于0

噪声点:噪声点的半径范围的样本个数为0

能够识别任意形状的样本.该算法将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。

需指定最少点个数,半径(或自动计算半径)

是从图论中演化出来的算法,后来在聚类中得到了广泛的应用。它的主要思想是把所有的数据看做空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低,而距离较近的两个点之间的边权重值较高。通过对所有数据点组成的图进行切图,让切图后不同的子图间边权重和尽可能的低,而子图内的边权重和尽可能的高,从而达到聚类的目的。

简单说,谱聚类其实就是使用了一种映射方法,将原有数据映射到新的数据空间,使得原数据中空间位置接近的样本在映射后更加接近,这种映射称为拉普拉斯映射。注意:步骤4中是选取最小的k个特征值对应特征向量,那么问题来了,为什么要选取最小特征值呢?特征值有什么物理意义呢?

对于一个方阵(L为对称矩阵也是方阵且是半正定矩阵),可以称之为变换矩阵,当它叉乘某一个向量时,其物理意义为对该向量作旋转和缩放的变换,即将原有向量所在的空间映射到一个新的空间。那么,缩放尺度如何度量?可以用变换矩阵的特征值来度量,如下所示A为变换矩阵,向量α为A的特征向量(对于特征向量,对其变换时,只做缩放变换,其向量方向不变,更多详细内容见看图就懂:线性代数之特征值分解与奇异值分解),λ为特征值,I为单位向量,向量α左乘A等于对特征向量缩放λ倍。

特征值在物理意义上可以表示为缩放倍数,特征值越大,对应的特征向量放大倍数越大,而特征向量越大,对应的样本点映射后在空间位置上也更分散,而谱聚类或者拉普拉斯特征映射的目标就是将原本比较接近的点在映射后更加接近,使得属于不同簇的样本的可分离性变强,所以拉普拉斯特征映射自然要选择小特征值对应的空间,这样也就实现了原数据中空间位置接近的样本在映射后更加接近。如下图是原始特征空间与拉普拉斯特映射后的样本空间(2d、3d显示)的聚类结果

经过拉普拉斯映射后样本的可分离性比较好,易于聚类。于此相对的是,PCA降维选用的降序特征值即选取最大的k个特征值对应的特征向量,因为PCA的目的是对原数据作旋转变换,将原数据映射到特征基(关于特征基概念见看图就懂:线性代数之特征值分解与奇异值分解),投影到特征基方向上的样本相对比较分散,如下图所示,二维原数据旋转到二维特征基上和降到1维效果图

总之,特征值越大对应的向量空间方差越大,即向量方向上的数据越分散。降维数据肯定会丢失一部分信息,PCA适用于处理高维数据,可以在尽可能保留更多信息的同时对高维数据降维处理,如何保留更多数据信息呢?某种意义上,数据分布越分散(方差)或者说越混乱(熵),能得到的信息越多,PCA通过将数据映射到特征基上(特征基不止一个),然后从中选取k个方差最大的特征基(k个最大特征值对应的特征向量)组成新的特征空间,从而实现降维+保留大部分信息效果。

设有原数据X,为m行n列数据、m个样本n个特征,k为维度个数:

谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是利用样本数据的相似矩阵(拉普拉斯矩阵)进行特征分解后得到的特征向量进行聚类。

谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好

如果最终聚类的维度非常高,则由于降维的幅度不够,算法的运行速度和最终聚类效果均不好

聚类效果依赖于相似度矩阵(权重矩阵/邻接矩阵),不同的相似度矩阵得到的最终聚类效果可能差别很大

需指定聚类个数,高斯参数。

高斯混合混合模型(GMM)是一种概率生成模型,模型通过学习先验分布后推导后验分布来实现聚类。当我们做聚类任务的时候,可以根据距离最近原则,将样本聚类到距离其最近的聚类中心,如k-means算法,或者将样本聚类到距离某个簇边缘最近的簇,如DBSCAN算法,而GMM是假设样本每个类的特征分布遵循高斯分布,即整个数据集可由不同参数的高斯分布线性组合来描述,GMM算法可以计算出每个样本属于各个簇的概率值并将其聚类到概率值最大的簇。

GMM是以假设数据各个类别的特征分布是高斯分布为基础,所以首要步骤就是先得到各个类别的概率分布密度函数参数,对于一元变量,需要计算各个类别的均值和期望,而对于多元变量,则需要计算均值和协方差矩阵。有如下数据集X,共有m个样本,n项特征,k个类别

高斯概率分布密度函数公式如下:

一元变量:n=1

多元变量:n>1

现有如下数据集,如何使用GMM聚类?

在学习GMM聚类算法前,先从大学概率论课本上的一个例子入手。

例如:投掷一颗骰子,实验的样本空间为:S={1,2,3,4,5,6}。

存在以下事件

证明过程如下:

则事件X={投掷一个骰子出现i点}的概率p(X)为

就是类别,对应y。如下所示:

p(X)是训练集样本出现的概率,公式如下:

GMM首先需要计算每个类别的分布函数的参数,如何估计参数呢?可以采用极大似然估计方法。

极大似然估计,就是利用已知的样本信息,反推最具有可能(最大概率)导致这些样本出现的模型参数值。换句话说,极大似然估计提供了一种通过给定观察数据来估计模型参数的方法,即:模型已定,参数未知。可以这样理解,既然事情(样本)已经发生了,为什么不让这个结果出现的可能性最大呢?这也就是极大似然估计核心。

通过极大似然估计方法来使样本出现的概率p(X)最大从而得到分布函数参数,这样我们可以得到代价函数

由于连乘可能会导致下溢,所以需要取对数。对数函数是一个严格递增的函数,取对数后不会改变数据的相对关系,即对数化后,我们仍然可以获得具有相同临界点的最优化函数,代价函数如下所示

已知多元变量的高斯分布公式如下

可以得到

综上,GMM代价函数的最终公式如下

通过求解代价函数,就可以得到各个类别的高斯分布函数参数,进而能计算样本属于某个类别的概率,从而实现聚类,公式如下

以上过程其实就是一个建模过程,建模过程包括如下

在得到代价函数后,我们还要确定这个代价函数是否具有凸性,因为凸函数有一个好性质,若代价函数是凸函数,则其局部最优解也是全局最优解。若无法得到凸代价函数,则尝试更换模型或者使用迭代算法来逼近全局最优解。

EM(期望最大)算法是一个迭代算法,其思想就是多次迭代来估计参数,直到算法收敛。EM算法就是一个迭代逼近过程,若目标函数为非凸函数,则EM算法不能保证收敛至全局最优解,且EM算法的求解结果与初值的选择有较大关系,该算法对初值敏感。

EM算法求解参数思路可以将其理解为对两个未知变量的方程求解。首先固定其中一个未知数,求另一个未知数的偏导数,之后再反过来固定后者,求前者的偏导数,反复迭代直到目标函数值不变、收敛。EM算法就是相互迭代,求出一个稳定值,用于在无法直接找到参数的情况下寻找模型的最大似然估计(MLE)。它包括两个步骤:期望步骤和最大化步骤。在聚类问题中,步骤如下

具体步骤如下

3、重复1、2步骤,直到算法收敛。

关于均值μ:

关于协方差矩阵如何计算:给定如下训练集X:m*2,假设有k个类别,则

GMM假设生成数据的是一种混合的高斯分布,为模型找到最大似然估计。与将数据点硬分配到聚类的K-means方法(假设围绕质心的数据呈圆形分布)相比,它使用了将数据点软分配到聚类的方法(即概率性,因此更好)。速度:它是混合模型学习算法中的最快算法;无偏差性:由于此算法仅最大化可能性,因此不会使均值趋于零,也不会使聚类大小具有可能适用或不适用的特定结构。(A)通过使用软分配捕获属于不同聚类的数据点的不确定性,(B)对圆形聚类没有偏见。即使是非线性数据分布,它也能很好地工作,具有较强的鲁棒性

该算法也叫做均值漂移,在目标追踪中应用广泛。本身其实是一种基于密度的聚类算法。

1、算法思路:

主要思路是:计算某一点A与其周围半径R内的向量距离的平均值M即迁移向量,更新该点下一步的迁移位置(A=M+A)。当该点不再移动时(norm(Mnew-Mold)

2、如何计算迁移向量M

step1:随机选择一点为初始簇心点(不完全随机:不能把噪声点/离群点作为初始簇心,以防乒乓效应)

step2:根据初始半径R,选择以R为半径的圆的范围内的点分别与簇心点的向量的平均值作为迁移向量M

3、如何迁移

根据迁移向量M,更新簇心

4、如何收敛

迁移向量M前后变化量小于阈值且样本点(除了离群点)均已归类,则停止运行

5、如何成簇

norm(Mnew-Mold)>TH时:判断norm(M)TH:说明当前簇未成形,需要继续迁移norm(Mnew-Mold)

当迁移向量长度接近0时,需要扩大簇半径即扩大搜索范围,看看扩大范围后,簇内点是否增加,即迁移向量增量是否大于阈值Th,若小于阈值,则没必要继续迁移(当前簇已稳定),反之继续进行迁移计算。

关于调整簇半径策略:根据当前簇成员调整簇半径

7、扩展

计算均值的迁移向量-->计算核函数形式的迁移向量

与kmeans相比,均值迁移无需指定簇个数,自动发现簇个数,需指定初始半径(带宽)(或者算法自动计算)。算法相对k-means分类结果比较稳定

算法分类结果易受噪声点(离群点)干扰,若初始簇心点为离群点,可能会发生乒乓效应,算法无限循环,需数据预处理(过滤噪声点)或者改变距离计算方法。

适合聚类球状类簇,不能发现一些混合度较高,非球状类簇

计算复杂度高

R半径非自适应的menshift聚类算法聚类结果取决于半径(带宽)的设置,半径太小,收敛太慢,簇类个数过多;半径太大,一些簇类可能会丢失。

训练数据X,

例如有下数据

各个样本点之间的距离:

1、每个样本都视为一个簇

2、计算各个样本点之间的距离(相似度),生成m*m的距离矩阵dis

3、寻找最近的两个簇(寻找矩阵dis中的非0元素中的最小值对应的索引,i1,i2),将它们归为一类(计算两个点/簇的均值means,如何归为同一类?-->X[[i1,i2],:]=menas),本算法中衡量距离方法:计算样本点到簇心的距离->average

a=copy.deepcopy(X)whilelen(set(a[:,0]))>1:#whilelen(set(a[:,0]))>ki,j=np.unravel_index(np.argmin(dis),dis.shape)#获取多维矩阵xx值对应的索引listIJ=findRow(a,i1,i2)#在X中寻找与a[i1,:],a[i2,:]样本点相同的所有样本点对应的索引means=np.mean(X[listIJ,:],axis=0)#计算最近的样本点/簇的均值a[listIJ,:]=means#赋予相同的均值即视为归为同一类Tree[iter]=copy.deepcopy(a)#生成聚类树#聚类树:每一层都是一个分类结果,簇数量由多到少。优点:

一次性得到聚类树,每一层均为分类结果。算法相对k-means分类结果比较稳定。

相似度规则(距离衡量)容易定义

可以发现类别的层次关系

计算复杂度高,不适合数据量大的

由于类聚类之间的距离(相似度)衡量方法不同,算法分类结果易受噪声点(离群点)干扰,需数据预处理(过滤噪声点)或者改变距离计算方法。

THE END
1.R语言聚类分析:数据聚类算法在数据挖掘与机器学习领域,聚类分析是一种常用的无监督学习方法,其主要目的是将相似的数据点归为一类,从而揭示数据自身的内在结构。R语言作为一种功能强大的数据处理和分析工具,提供了多种聚类分析算法,如K均值聚类、层次聚类、DBSCAN等。本文将从 R 语言的角度介绍数据聚类算法的原理、常用方法和实践案例。 https://www.jianshu.com/p/36fab82dfab2
2.解释聚类分析模型群集中的某些条目具有意义,而其他条目看起来像是随机内容。 部分原因是 k 均值算法必须在群集之间形成任意边界。 所有群集中都有许多条目处于边缘位置,可以属于两个(或更多)群集。 为了减少此类干扰,我们可以按照到各自群集中心的距离对这些条目进行排序,然后查看离中心最近的条目。 https://docs.microsoft.com/zh-cn/learn/modules/unsupervised-learning-clustering/4-interpret-clustering-model
3.大数据最常用的算法主要有哪些1. K-均值聚类算法(K-Means Clustering):将数据集划分为k个簇,每个簇中的数据点与簇中心的距离最小化。常用于数据的无监督聚类。 2. 决策树算法(Decision Tree):通过对数据进行划分和树形结构的建立,预测离散或连续的输出变量。常用于分类和回归问题。 3. 随机森林算法(Random Forest):由多个决策树组成的集成https://wenku.baidu.com/view/faf61cac0366f5335a8102d276a20029bd6463e3.html
4.数据分析中的聚类算法有哪些非负矩阵分解算法是一种基于矩阵分解的聚类算法,它将数据矩阵分解为多个非负矩阵的乘积,每个非负矩阵表示一个潜在的特征空间。算法的基本思想是:先随机初始化多个非负矩阵,然后通过最小化原始数据矩阵和非负矩阵乘积之间的距离来更新非负矩阵,重复以上步骤直到收敛。 https://www.linkflowtech.com/news/1082
5.有哪些常用的聚类算法?无需设定K(可作为K-means聚类探索K的先验算法)对于K-means不擅长的非球形点处理的较好 [缺点]时间https://www.zhihu.com/question/44164453/answer/2751357060
6.聚类算法详解3、算法的数据输入属性:算法处理的结果与数据输入的顺序是否相关,也就是说算法是否独立于数据输入顺序;算法处理有很多属性数据的能力,也就是对数据维数是否敏感,对数据的类型有无要求。 4、聚类算法有哪些类 二、算法介绍 1、基于层次的方法(Hierarchical methods) https://blog.csdn.net/abc200941410128/article/details/78541273
7.机器学习(二)之无监督学习:数据变换聚类分析聚类算法(clustering algorithm)将数据划分成不同的组,每组包含相似的内容。 无监督学习的一个主要挑战就是评估算法是否学到了有用的东西。我们不知道正确的输出应该是什么,很难判断一个模型是否“表现很好”。,通常来说,评估无监督算法结果的唯一方法就是人工检查。 https://www.flyai.com/article/516
8.17个机器学习的常用算法在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括Apriori算法以及k-Means算法。 3.半监督式学习: 在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理https://aidc.shisu.edu.cn/78/aa/c13626a161962/page.htm
9.基于聚类和XGboost算法的心脏病预测1.2 聚类算法 本文引用的聚类算法是K-means 算法, K-means算法中的K代表类簇个数, means代表类簇内数据对象的均值(这种均值表示的是类簇中心)[3]. K-means算法是一种经典的聚类算法, 此算法以数据对象之间的距离作为聚类标准, 即数据对象之间距离越小则表示这类数据拥有较高的相似度, 就会朝着一个中心点聚集https://c-s-a.org.cn/html/2019/1/6729.html
10.8个超级经典的聚类算法腾讯云开发者社区DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,用于将高维数据分组为密度相连的、具有相似特征的多个数据簇。其原理如下: 选择参数:DBSCAN算法需要两个关键参数,即ε(eps)和 MinPts。其中,ε用于定义邻域的大小,MinPts是指在邻域内至少应该有的数据点数目。 https://cloud.tencent.com/developer/article/2430459
11.有监督的聚类算法有哪些有监督分类算法有哪些有监督的聚类算法有哪些 有监督分类算法有哪些 机器学习应用分析–有监督算法-分类算法 ###按学习方式分类: 监督学习 无监督学习 半监督学习 强化学习 ①监督学习 数据集中的每个样本有相应的“正确答案”, 根据这些样本做出预测, 分有两类: 回归问题和分类问题。https://blog.51cto.com/u_12228/10764841