首页 > 编程知识 正文

聚类算法有哪几种类型,聚类算法百科

时间:2023-05-04 01:44:27 阅读:191296 作者:4895

一、聚类 (一)聚类概念

聚类就是按照某个特定标准(如距离准则)把一个数据集按照相似度分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。

(二)聚类的目标

使同一类对象的相似度尽可能地大;不同类对象之间的相似度尽可能地小。

(三)聚类和分类的区别

聚类技术通常又被称为无监督学习,因为与监督学习不同,在聚类中那些表示数据类别的分类或者分组信息是没有的(即分类前只给了分类标准并未给分类类别)。
Clustering (聚类),简单地说就是把相似的东西分到一组,聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到一起。因此,一个聚类算法通常只需要知道如何计算相似度就可以开始工作了,因此 clustering 通常并不需要使用训练数据进行学习,这在Machine Learning中被称作unsupervised learning (无监督学习)。 事先无标签也不需要知道标签只需按相似度分好类即可。
Classification (分类),对于一个classifier,通常需要你告诉它“这个东西被分为某某类”这样一些例子,理想情况下,一个 classifier 会从它得到的训练集中进行“学习”,从而具备对未知数据进行分类的能力,这种提供训练数据的过程通常叫做supervised learning (监督学习)。需要事先贴好标签归好类,然后用训练集对其训练学习之后可以对新的目标进行归类,图像识别即是如此。

二、聚类算法的分类 (一)基于划分 1.基本思想

基于划分的方法:其原理简单来说就是,想象你有一堆散点需要聚类,想要的聚类效果就是“类内的点都足够近,类间的点都足够远”。首先你要确定这堆散点最后聚成几类,然后挑选几个点作为初始中心点,再然后给数据点做迭代重置(iterative relocation),直到最后到达“类内的点都足够近,类间的点都足够远”的目标效果。也正是根据所谓的“启发式算法”,形成了k-means算法及其变体包括k-medoids、k-modes、k-medians、kernel k-means等算法。

2.特点

计算量大,很适合发现中小规模的数据库中小规模的数据库中的球状簇。

3.主要算法

k-means、k-medoids、k-modes、k-medians、kernel k-means等算法。

4.算法流程

经典K-means算法流程:

随机地选择k个对象,每个对象初始地代表了一个簇的中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;重新计算每个簇的平均值,更新为新的簇中心;不断重复2、3,直到准则函数收敛。 5.算法优缺点

优点:对于大型数据集也是简单高效、时间复杂度、空间复杂度低。
缺点:最重要是数据集大时结果容易局部最优;需要预先设定K值,对最先的K个点选取很敏感;对噪声和离群值非常敏感;只用于numerical类型数据;不能解决非凸(non-convex)数据。

6.常见的算法及改进

k-means对初始值的设置很敏感,所以有了k-means++、intelligent k-means、genetic k-means。
k-means对噪声和离群值非常敏感,所以有了k-medoids和k-medians。
k-means只用于numerical类型数据,不适用于categorical类型数据,所以k-modes。
k-means不能解决非凸(non-convex)数据,所以有了kernel k-means。
另外,很多教程都告诉我们Partition-based methods聚类多适用于中等体量的数据集,但我们也不知道“中等”到底有多“中”,所以不妨理解成,数据集越大,越有可能陷入局部最小。

(二)基于层次 1.基本思想

层次聚类,是一种很直观的算法。mldqb就是要一层一层地进行聚类,可以从下而上地把小的cluster合并聚集,也可以从上而下地将大的cluster进行分割。似乎一般用得比较多的是从下而上地聚集。层次聚类主要有两种类型:合并的层次聚类(凝聚层次聚类)和分裂的层次聚类。前者是一种自底向上的层次聚类算法,从最底层开始,每一次通过合并最相似的聚类来形成上一层次中的聚类,整个当全部数据点都合并到一个聚类的时候停止或者达到某个终止条件而结束,大部分层次聚类都是采用这种方法处理。后者是采用自顶向下的方法,从一个包含全部数据点的聚类开始,然后把根节点分裂为一些子聚类,每个子聚类再递归地继续往下分裂,直到出现只包含一个数据点的单节点聚类出现,即每个聚类中仅包含一个数据点。

2.特点

处理速度很快,通常这是与目标数据库中记录的个数无关的,只与把数据空间分为多少个单元有关。

3.主要算法

BIRCH算法、CURE算法、CHAMELEON算法、GN算法

GN算法是一个经典的社区发现算法,它属于分裂的层次聚类算法,最初,由tdmb Girvan和能干的钢笔 Newman提出。其基本思想是不断的删除网络中具有相对于所有源节点的最大的边介数的边,然后,再重新计算网络中剩余的边的相对于所有源节点的边介数,重复这个过程,直到满足某个条件(如所有边都被删除或具有相等的最大边介数)

4.算法流程

以下流程以自下向上为例。

将每个对象看作一类,计算两两之间的最小距离;将距离最小的两个类合并成一个新类;重新计算新类与所有类之间的距离;重复2、3,直到所有类最后合并成一类

GN算法流程

计算网络中所有边的介数

找到介数最高的边并将它从网络中移除

n 重复,直到每个节点就是一个社团为止

5.算法优缺点

优点:可解释性好(如当需要创建一种分类法时);还有些研究表明这些算法能产生高质量的聚类,也会应用在上面说的先取K比较大的K-means后的合并阶段;还有对于K-means不能解决的非球形族就可以解决了。
缺点:时间复杂度高啊,o(m3),改进后的算法也有o(m2lgm),m为点的个数;贪心算法的缺点,一步错步步错;同K-means,difficulty handling different sized clusters and convex shapes。

**

6.常见的算法及改进

**
该聚类算法因为计算复杂度比较大适用于小数量级,如对中国省会城市聚类。改进的算法有BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)主要是在数据体量很大的时候使用,而且数据类型是numerical。
Chameleon(A Hierarchical Clustering Algorithm Using Dynamic Modeling)里用到的linkage是kNN(k-nearest-neighbor)算法,并以此构建一个graph,Chameleon的聚类效果被认为非常强大,比BIRCH好用,但运算复杂还是很高,O(n^2)。看个Chameleon的聚类效果图,其中一个颜色代表一类,可以看出来是可以处理非常复杂的形状的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。