无监督学习-聚类系列之常见模型

版权声明:转载请声明转自Juanlyjack https://blog.csdn.net/m0_38088359/article/details/83034751

聚类是一个大的家族,常见的分类有6种,而各种聚类又有许多变型,这里总结下常见聚类及其原理。在此只是为了方便自己记忆而写的总结,当中有借鉴一些前辈的笔记,感激前辈。
1、划分聚类:
k—means算法步骤:
(1)提前假设k个簇,对于实际问题会有一些启发式的选取方法,大多数是随机选取。但由于初值会影响结果所以往往多次选择初值并去结果最好的那一次。
(2)将每个数据点归类到离它最近的哪个中心点所带表的簇。这里注意距离的度量也即相似度,一般高维稠密用欧氏距离,但如果是高维稀疏一般用余弦距离。
(3)分别对每个簇中的数据点求平均值即为计算出cluster新中心点。若中心点不变或者小于某个可接受范围则停止,否则继续重复第(2)步一直迭代。

k-means损失函数为:所有样本离所在簇中心的距离,认为每个簇
内部越紧密,聚类效果越好。

*****k均值的优缺点及相应的改进:
优点:1,简单,易于理解和实现;2,时间复杂度低
缺点:
1)kmeans要手工输入类数目,对初始值的设置很敏感;所以有了k-means++、intelligentk-means、genetick-means;
2)k-means对噪声和离群值非常敏感,所以有了k-medoids和k-medians;
3)k-means只用于numerical类型数据,不适用于categorical类型数据,所以k-modes;
4)k-means不能解决非凸(non-convex)数据,所以有了kernelk-means。
5)k-means主要发现圆形或者球形簇,不能识别非球形的簇。
注意:k-means的收敛条件为迭代次数/簇中心变化率/MSE/MAE

k-means++算法步骤:
(1)从输入的数据点集合中随机选择一个点作为第一个聚类中心;
(2)计算数据集中每一个点到与其最近聚类中心(指已选出的聚类中心)的距离D(xi);
(3)选择一个新数据点作为聚类中心,原则:D(xi)较大的点,被选为聚类中心概率较大。原理如下,先从已有的聚类中心中随机挑选一个点作为种子点,对每个数据点都计算其与最近的一个种子点的距离D(xi)并保存在一个数组里面,然后对这些距离求和得到Sum(D(x1)…D(xi)),接着再用0-1之间的随机值r乘以Sum得到一个值temp,即temp = r*Sum,再执行temp -= D(x1,x2…xi)直到temp<=0,则当前的D(xi)即为新的聚类中心。
(4)重复(2),(3)直到k个聚类中心被选出来。
(5)从这k个初始聚类中心开始执行标准k-means算法。
*****k-means++的优缺点:
优点:
(1)解决了k-means对初始值敏感的问题
缺点:
(1)下一个中心点的选择依赖于已存在的中心点。改进:k-means||算法。

2、层次聚类(分为凝聚和分裂两种):
**自底向上(凝聚)层次聚类算法步骤:
(1)把每个样本都归为一类,计算每两个类之间的距离或相似度。
(2)寻找最近的两个类把他们归为一类,此步骤导致类的总数少了一类。
(3)重新计算新类与所有类之间的距离或相似度。
(4)重复步骤2,3直到最后合并成一个类。

**自顶向下(分裂)层次聚类算法步骤:
(1)所有总的样本归为一类,然后计算每个类之间的距离或者相似度。
(2)寻找距离最远的两个样本点把他们归为一类,此步骤导致类的总数增加一类。
(3)重新计算新类与各样本点之间的距离或相似度。
(4)重复步骤2,3直到最后每个样本为一个类。
注意:
第三步判断两个类间的距离或者相似度有三种,
SingleLinkage:又叫做 nearest-neighbor ,就是取两个类中距离最近的两个样本的距离作为这两个集合的距离。
CompleteLinkage:这个则完全是 Single Linkage 的反面极端,取两个集合中距离最远的两个点的距离作为两个集合的距离。
Average-linkage:这种方法就是把两个集合中的点两两的距离全部放在一起求一个平均值,相对也能得到合适一点的结果。
一般选择第三种作为相似度度量。

优点:1,距离和规则的相似度容易定义,限制少;2,不需要预先制定聚类数;3,可以发现类的层次关系;4,可以聚类成其它形状
缺点:1,计算复杂度太高;2,奇异值也能产生很大影响;3,算法很可能聚类成链状

3、DBSCAN密度聚类:
在以上聚类中无法解决不规则的形状聚类,于是产生了密度聚类,同时该方法对噪声数据处理以及集中区域的效果较好.

1) ϵ-邻域:对于xj∈Dxj∈D,其ϵϵ-邻域包含样本集D中与xjxj的距离不大于ϵϵ的子样本集,即Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}, 这个子样本集的个数记为|Nϵ(xj)||Nϵ(xj)|
2) 核心对象:对于任一样本xj∈Dxj∈D,如果其ϵϵ-邻域对应的Nϵ(xj)Nϵ(xj)至少包含MinPts个样本,即如果|Nϵ(xj)|≥MinPts|Nϵ(xj)|≥MinPts,则xjxj是核心对象。 
3)密度直达:如果xixi位于xjxj的ϵϵ-邻域中,且xjxj是核心对象,则称xixi由xjxj密度直达。注意反之不一定成立,即此时不能说xjxj由xixi密度直达, 除非且xixi也是核心对象。
4)密度可达:对于xixi和xjxj,如果存在样本样本序列p1,p2,…,pTp1,p2,…,pT,满足p1=xi,pT=xjp1=xi,pT=xj, 且pt+1pt+1由ptpt密度直达,则称xjxj由xixi密度可达。也就是说,密度可达满足传递性。此时序列中的传递样本p1,p2,…,pT−1p1,p2,…,pT−1均为核心对象,因为只有核心对象才能使其他样本密度直达。注意密度可达也不满足对称性,这个可以由密度直达的不对称性得出。
5)密度相连:对于xixi和xjxj,如果存在核心对象样本xkxk,使xixi和xjxj均由xkxk密度可达,则称xixi和xjxj密度相连。注意密度相连关系是满足对称性的。

DBSCAN算法原理:
给定:样本集D,领域参数(ϵ,MinPts),样本距离度量方式
(1)通过选定的距离度量方式(一般为欧氏距离,P=2)找到每个样本xi的ϵ-领域子样本集合Nϵ(xi)。如果子样本集样本个数满足|Nϵ(xi)|≥MinPts|Nϵ(xi)|≥MinPts,将样本xi放入核心对象样本集合Ω。(Ω=Ω∪{xj})
(2)在核心对象集合中任意选择一个没有类别的核心对象作为种子,找到所有这个核心对象能够密度可达的样本集合,作为一个聚类簇。接着继续选择另一个没有类别的核心对象去寻找密度可达的样本集合,得到另一个聚类簇,直到所有核心对象都有类别为止。

注意:一些不在核心对象周围的异常样本点一般标记为噪声点。对应少量的样本,寻找最近邻可以直接去计算所有样本的距离,如果样本量较大,则一般采用KD树或者球树来快速的搜索最近邻。某些样本可能到两个核心对象的距离都小于ϵ,但是这两个核心对象由于不是密度直达,又不属于同一个聚类簇,DBSCAN采用先来后到,先进行聚类的类别簇会标记这个样本为它的类别。

优点:
(1)不需要提前输入划分的聚类个数k,聚类结果没有偏倚。
(2)对异常点不敏感,同时可以发现异常点。
(3)相比k-means的一般用于凸数据集,DBSCAN可以对任意形状的稠密数据集进行聚类。
缺点:
(1)样本集密度不均匀,聚类间距离差距大时DBSCAN不适用。
(2)样本集较大,聚类收敛时间长。
(3)对距离阈值和领域样本数阈值联合调参较复杂。

4、基于模型聚类:
主要是基于概率模型和基于神经网络模型的聚类。概率模型主要指概率生成模型(generativeModel),缺点就是执行效率不高,特别是分布数量很多并且数据量很少的时候。最典型、最常用的方法是高斯混合模型(GMM,GaussianMixtureModels)。

5、图论聚类:
图论聚类方法解决的第一步是建立与问题相适应的图,图的节点对应于被分析数据的最小单元,图的边(或弧)对应于最小处理单元数据之间的相似性度量。因此,每一个最小处理单元数据之间都会有一个度量表达,这就确保了数据的局部特性比较易于处理。图论聚类法是以样本数据的局域连接特征作为聚类的主要信息源,因而其主要优点是易于处理局部数据的特性。典型的代表算法有AP(Affinity Propagation Clustering Algorithm)聚类算法。

6、网格聚类:首先将对象空间划分为有限个单元以构成网格结构;然后利用网格结构完成聚类。例如STING(STatistical INformation Grid) 。

******如何评价聚类的效果?–轮廓系数:
计算过程:
(1)计算样本i到同簇其他样本之间得到平均距离ai,ai越小说明该样本越该分到给簇中,ai称为样本i的簇内不相似度.而簇Ck中的所有样本ai的均值称为簇Ck的簇不相似度.
(2)计算样本i到其他簇Cj所有样本的平均距离bij,称为样本i与簇Cj的不相似度,定义为样本i的簇间不相似度,bi=min{bi1,bi2…bik},bi越大越说明样本i不属于其他簇.
(3)定义样本i的轮廓系数如下:
在这里插入图片描述
si越接近1,说明样本i聚类合理;
si越接近-1,说明样本i更应该分类到另外的簇;
si接近0,说明样本i在两个簇的边界上.
(4)所有样本si的均值为聚类结果的轮廓系数,依据以上判断方法来判断聚类是否合理,有效.

猜你喜欢

转载自blog.csdn.net/m0_38088359/article/details/83034751