文本聚类算法总结

来源:互联网 发布:游戏编程步骤 编辑:程序博客网 时间:2024/06/03 23:00

文中的概念和定义部分摘自于百度百科和一些论文中,把我觉得写的不错的解释放上来供参考

 

一、文本聚类定义

       文本聚类主要是依据著名的聚类假设:同类的文档相似度较大,而不同类的文档相似度较小。作为一种无监督的机器学习方法,聚类由于不需要训练过程,以及不需要预先对文档手工标注类别,因此具有一定的灵活性和较高的自动化处理能力,已经成为对文本信息进行有效地组织、摘要和导航的重要手段。

 

二、算法分类

1、划分法(基于划分的聚类算法)

       给定一个有N个元组或者纪录的数据集,分裂法将构造K个分组,每一个分组就代表一个聚类,K<N。而且这K个分组满足下列条件:(1)每一个分组至少包含一个数据纪录;(2)每一个数据纪录属于且仅属于一个分组(注意:这个要求在某些模糊聚类算法中可以放宽);对于给定的K,算法首先给出一个初始的分组方法,以后通过反复迭代的方法改变分组,使得每一次改进之后的分组方案都较前一次好,而所谓好的标准就是:同一分组中的记录越近越好,而不同分组中的记录越远越好。

       使用这个基本思想的算法有:K-Means算法、K-MEDOIDS算法、CLARANS算法。

       K-means算法是一种典型的基于划分的聚类算法,该聚类算法的基本思想是在聚类开始时根据用户预设的类簇数目k随机地在所有文本集当中选择k个对象,将这些对象作为k个初始类簇的平均值或者中心,对于文本集中剩余的每个对象,根据对象到每一个类簇中心的欧几里得距离,划分到最近的类簇中;全部分配完之后,重新计算每个类簇的平均值或者中心,再计算每篇文本距离这些新的类簇平均值或中心的距离,将文本重新归入目前最近的类簇中;不断重复这个过程,直到所有的样本都不能再重新分配为止。

       K-means算法优点:(1)对待处理文本的输入顺序不太敏感(2)对凸型聚类有较好结果(3)可在任意范围内进行聚类。

       缺点:(1)对初始聚类中心的选取比较敏感,往往得不到全局最优解,得到的多是次优解(2)关于算法需要预先设定的k值,限定了聚类结果中话题的个数,这在非给定语料的应用中并不可行(3)该算法容易受到异常点的干扰而造成结果的严重偏差(4)算法缺少可伸缩性

 

2、层次法(基于层次的聚类算法)

       这种方法对给定的数据集进行层次似的分解,直到某种条件满足为止。具体又可分为“自底向上”和“自顶向下”两种方案,即合并聚类(由下而上)和分裂聚类(由上而下)。

       合并层次聚类是将语料库中的任一数据都当作一个新的簇,计算所有簇相互之间的相似度,然后将相似度最大的两个簇进行合并,重复这个步骤直到达到某个终止条件,因此合并聚类方法也被称为由下而上的方法。

       分裂聚类恰好与合并聚类进行相反的操作,它是一种由上而下的方法,该方法先将数据集中所有的对象都归为同一簇,并将不断地对原来的簇进行划分从而得到更小的簇,直到满足最初设定的某个终止条件。

       层次聚类法的优点:(1)适用于发现任意形状的簇(2)适用于任意形式的相似度或距离表示形式(3)聚类粒度的灵活性

       缺点:(1)算法终止的条件很模糊,难以精确表达并控制算法的停止(2)一旦聚类结果形成,一般不再重新构建层次结构来提高聚类的性能(3)难以处理大规模数据,也不能适应动态数据集的处理。

       由于层次聚类算法简单,因此针对它的研究也比较多,也提出了不少改进算法,主要方向就是将该策略与其他聚类策略相结合从而形成多层聚类。

       代表算法有:BIRCH算法、CURE算法、CHAMELEON算法等。

 

3、基于密度的方法

       基于密度的方法与其他方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法智能发现“类圆形”的缺点。这个方法的指导思想就是,只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去。

       代表算法有:DBSCAN算法、OPTICS算法、DENCLUE算法等。

       典型的基于密度的算法是DBSCAN算法,该算法基本思想是:对于一个类中的每一个对象,在其给定半径R的区域中包含的对象数目不小于某一给定的最小数目,即在DBSCAN中,一个类被认为是密度大于一个给定阈值的一组对象的集合,能够被其中的任意一个核心对象所确定。DBSCAN算法执行时,先从数据集w中找到任意一个对象q,并查找w中关于R和最小下限数MinPts的从q密度到达的所有对象。如果q是核心对象,也就是说,q半径为R的领域中包含的对象数不少于MinPts,则根据算法可以找到一个关于参数R和MinPts的类。如果q是一个边界点,即q半径为R的领域包含的对象数小于MinPts,则没有对象从q密度到达,q被暂时标注为噪声点。然后,DBSCAN处理数据集W中的下一个对象。

       DBSCAN聚类算法存在如下缺点:(1)随着对于大数据量的应用,需要有很大的内存支持与I/O开销。(2)由于使用了全局参数R和MinPts,因此没有考虑数据密度和类别距离大小的不均匀性,所以DBSCAN算法很难得到高质量的聚类结果。(3)算法参数过于复杂,领域外人员很难理解和掌握。

 

4、基于网格的方法

       这种方法首先将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与数据空间分为多少个单元有关。

       代表算法有:STING算法、CLIQUE算法、WAVE-CLUSTER算法。

 

5、基于模型的方法

       基于模型的方法给每一个聚类假定一个模型,然后去寻找一个能很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其他。它的一个潜在的假定就是:目标数据集是由一系列的概率分布

 

 

三、具体算法详解

1、K-means算法

见博文:

http://blog.csdn.net/xiaoquantouer/article/details/53516344


2、一趟聚类算法(One-pass Cluster)

见博文:

http://blog.csdn.net/xiaoquantouer/article/details/53516427


待更新

1 0
原创粉丝点击