Bootstrap

六种常用的文本聚类算法介绍

文本聚类算法介绍

分类和聚类都是文本挖掘中常使用的方法,他们的目的都是将相似度高的对象归类,不同点在于分类是采用监督学习,分类算法按照已经定义好的类别来识别一篇文本,而聚类是将若干文本进行相似度比较,最后将相似度高的归为一类。在分类算法中,训练集为已经标注好的数据集,但是微博文本具有的大数据特性及不确定性决定了标注数据的难度,因此本文选择聚类算法对大量且随机的微博文本进行处理。

大量文本建模后还需要对主题分布进行聚类以得到更精确简洁的话题,因此文本聚类在话题检测技术中具有重要意义。聚类是一种无监督学习方式,目的是把一个数据根据某种规则划分为多个子数据,一个子数据就称为一个聚类。聚类分析在文本分析、商务应用、网页搜索、推荐系统、生物医学等多个领域都有着十分广泛的应用。由于数据应用场合不同,不同的聚类方式侧重点不同,各有优势和缺陷,因此目前没有一个通用的聚类算法。目前聚类主要分为以下几类:基于划分的聚类算法、基于层次的聚类算法、基于密度的聚类算法、基于网格的聚类算法、基于模型的聚类算法以及基于模糊的聚类算法[41]。图2-8为目前主要的聚类算法分类图。

                                                                            图 2-8 聚类算法分类图

基于划分的聚类算法

 

基于层次的聚类算法

层次聚类算法(Hierarchical Clustering,HC)又称为树聚类算法。主要思想是将样本集合合并或者分裂成凝聚度更高或者更细致的子样本集合,最终样本集合形成一棵层次树。同K-means算法不同,层次聚类算法不需要预先设定聚类数 ,只要样本集合通过不断迭代达到聚类条件或者迭代次数即可。基于层次划分的经典聚类算法有:变色龙算法、AGNES(Agglomerative NE Sting)、CURE(Clustering Using RE Presentatives)等。根据聚类的方向基于层次的聚类算法可以分为凝聚式和分裂式,凝聚式是将簇结合起来,而分裂式则是将大的类簇分为小类。

(1)凝聚式层次聚类算法

凝聚式层次聚类(Hierarchical Agglomerative Clustering,HAC)顾名思义是凝聚数据样本,它的聚类方向是从子数据向上不断合并,该算法经常运用于话题检测中。凝聚式层次聚类首先从底部分散的单个样本开始依次计算与其他样本的距离,然后选择距离最小样本并与其合并成一个新的样本集,再重复上述过程直到形成一个包含所有样本的簇,或者达到迭代次数。凝聚式层次聚类只需要计算样本之间的距离然后合并,该方法计算简单,但是如果数据样本太大则算法复杂度会呈指数级增长,且已合并的操作无法逆转。

(2)分裂式层次聚类算法

分裂式层次聚类与凝聚式层次聚类处理样本数据的方向是相反的,它是将整个数据样本看作一个大类簇,然后根据距离公式或其他原则将大的类簇分为小的类簇,不断迭代直到将所有的样本数据分类到单独的类簇中或者是达到迭代次数。层次聚类被公认为是能够产生较好质量的聚类结果的聚类算法。此算法缺点是已操作不能撤回,对于大量数据样本时间复杂度高。

基于密度的聚类算法

基于密度的聚类算法的主要思想是首先找出密度较高的点,然后把周围相近的密度较高的样本点连成一片,最后形成各类簇。基于密度的聚类比较代表性的三种方法有:Ester等提出的DBSCAN方法、Ankerst 等提出OPTICS方法和 Hinneburg 提出的 DENCLUE技术。此类算法的优点是鲁棒性很强,对于任意形状的聚类都适用,但是结果的精度与参数设置关系密切,实用性不强。

基于网格的聚类算法

与其他聚类算法相比较,基于网格的聚类算法出发点不再是平面而是空间。在该空间中,有限个网格代表数据,聚类就是按一定的规则将网格合并。Wang等人提出的STING算法及其改进算法、Agrawa等人提出的CLIQUE算法l等都是较为经典的基于网格的算法。基于网格的聚类算法由于处理数据时是独立的,仅仅依赖网格结构中每一维的单位数,因此处理速度很快。但是此算法对参数十分敏感,速度快的代价是精确度不高,通常需要与其他聚类算法结合使用。

基于模型的聚类算法

基于模型的聚类算法的思路是假设每个类簇为一个模型,然后再寻找与该模型拟合最好的数据,通常有基于概率和基于神经网络两种方法。概率模型即概率生成模型,是假设数据是由潜在的概率分布产生的,典型的算法是高斯混合模型(Gaussian Mixture Models,GMM;而来自芬兰的神经网络专家提出的自组织映射(Self Organized Maps,SOM)是典型的神经网络模型。对类簇而言,基于模型的聚类算法是用概率形式呈现,每个类的特征也可以直接用参数表示,但是与其他聚类方法相比,这类聚类方法在样本数据量大的时候执行率较低,不适合大规模聚类场合。

基于模糊的聚类算法

基于模糊的聚类算法主要是为了克服非此即彼的分类缺陷,它的主要思想是以模糊集合论作为数学基础,用模糊数学的方法进行聚类分析。此方法的优点在于对于满足正态分布的样本数据来说它的效果会很好,但是此算法过于依赖初始聚类中心,为确定初始聚类中心需要多次迭代以寻找最佳点,对于大规模数据样本来说会大大增加时间复杂度。

上述的聚类方法各有千秋,在面对不同的数据集时能起到不同的作用,在参考韩威等的文献之后列出表2-2直观展示几种主要算法在性能方面的差异。

                                                                          表 几种常用聚类算法对比

聚类算法

处理大规模数据能力

处理高维数据能力

发现任意形状簇的能力

数据顺序敏感度

处理噪声能力

基于层次的方法

较强

不敏感

较弱

基于划分的方法

较弱

较强

不敏感

基于密度的方法

较强

不敏感

Single-pass算法

较强

敏感

 

从表可以直观地看出,对于初始无法确定主题个数且大规模的微博短文本来说,Single-Pass增量算法更适合。但是Single-Pass增量算法对于数据输入时的顺序十分敏感,并且计算复杂度随着数据的增大而增多,因此本文采用改进的Single-Pass增量算法对话题进行检测。经过改进的Single-Pass增量算法处理后的文本凝聚度相对较高,维度相对较低,再采用适合处理这类文本的凝聚式层次聚类进行话题合并以得到热点话题。通过结合Single-Pass增量算法与凝聚式层次聚类算法,对大量微博短文本进行处理提取出热点话题,能有效提高效率,同时得到更精确的热点话题。

;