文本聚类算法

1 聚类思想

聚类是一种无监督学习。也就是说,聚类是在预先不知道欲划分类的情况下,根据信息相似度原则进行信息聚类的一种方法。聚类的思想是使得属于同类别的对象之间的差别尽可能的小,而不同类别上的对象的差别尽可能的大。与分类规则不同,进行聚类前并不知道将要划分成几个组和什么样的组,也不知道根据哪些空 间区分规则来定义组。常见的聚类算法包括:K-均值聚类算法、K-中心点聚类算法、CLARANS、BIRCH、CLIQUE、DBSCAN等。

2 文本聚类一般步骤

2.1 文本表示(Text Representation)

把文档表示成聚类算法可以处理的形式。

2.2 聚类算法选择或设计(Clustering Algorithms)

算法的选择,往往伴随着相似度计算方法的选择。在文本挖掘中,最常用的相似度计算方法是余弦相似度。聚类算法有很多种,但是没有一个通用的算法可以解决所有的聚类问题。因此,需要认真研究要解决的问题的特点,以选择合适的算法。

2.3 聚类评估(Clustering Evaluation)

因为没有训练文档集合,所以评测聚类效果是比较困难的。 常用的方法是: 选择人工已经分好类或者做好标记的文档集合作为测试集合,聚类结束后,将聚类结果与已有的人工分类结果进行比较。常用评测指标也是查全率、查准率及F1值。

3 常用文本聚类算法

3.1 K-means

作为基于距离的典型聚类算法,“K-means”一词最早于1967年被加州大学的詹姆斯麦奎恩(James MacQueen)首次使用,而其算法思想则可以追溯到术语提出的十年之前——1957年,斯图尔特劳埃德(Stuart Lloyd)在研究一种脉冲码调制技术时首先研发了 K-means 的标准算法,遗憾的是,其学术成果直到1982年才被贝尔实验室公开出版。在此之间的1965年,福吉(E.W.Forgy)在《Biometrics》发表了本质上相同的方法,因此, K-means 算法有时也被人们称为 Lloyd-Forgy 方法。

已知数据集 D=x1,x2,...xnD={x1,x2,...xn},其中每一个样本都可以由一个 d 维实向量表示, K-means 聚类的目的便是要将数据集中的这 n 个样本划分到 k 个集合之中(k 小于等于 n),使得各个集合的组内平方和(Within-Cluster Sum of Squares)最小。该问题也可以由下式表示:
文本聚类算法

其中,S 为样本的聚类,μiμi则为SiSi中所有点的均值向量。

在文本聚类中,文本数据集中的每一个样本(我们将其简单称为“文档”)都可以由一个文档特征向量表示,被划分为同一个集合的文档在 K-means 中也被称之为属于同一个簇(cluster),而用于规定簇的中心点则本称为质心(centroid),当一个向量到某个质心的距离小于其至其他所有质心的距离时,这个向量对应的文档将本划分入质心所对应的簇中。为了在文本数据分析中达到文本聚类的目标,K-means 聚类的算法过程通常分为以下步骤:

1)文本数据集中随机选取K个文档,作为初始的质心;

2)对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心对应的簇;

3)通过求中心向量的方式重新计算已经得到的各个簇的质心;

4)迭代2~3步直至新的质心与原质心相等或小于指定阈值(或是迭代次数达到外生给定的最大次数),算法结束。

K-means 算法的主要优势在于快速简单、对大数据集有较高的效率,在分析大量文本数据时相比与其他聚类算法更加实用,而其缺点在于容易受 K 值、初始类质心样本选择或初始类划分的影响,在进行文本聚类时,确定最优的 K 值往往需要花费大量的时间资源。

3.2 BIRCH

BIRCH 算法,全称为利用层次方法的平衡迭代规约和聚类(Balanced Iterative Reducing and Clustering Using Hierarchies),这一在1996年由 Tian Zhang 提出来的聚类算法。虽然名字冗长拗口,但 BIRCH 算法却是广受学界认可的一种节约内存资源的高质量聚类方法。

相比于其他多遍扫描的聚类算法, BIRCH 算法利用了树结构来帮助我们快速的聚类,我们一般将 BIRCH 算法中的这种树结构称之为聚类特征树(Clustering Feature Tree,CF Tree)。聚类特征(Clustering Feature,CF)是聚类特征树的重要概念,它可以被理解为在聚类特征树某一节点上对样本划分的一种状态,其定义可由下式表示:
文本聚类算法

可以看到,我们将聚类特征表示为一个三元组结构,其中 N 为这个聚类特征中拥有的样本点的数量, LS 为这个聚类特征中拥有的样本点各特征维度的和向量, SS 则代表这个聚类特征中拥有的样本点各特征维度的平方和向量。聚类特征CF有一个很好的性质,就是满足线性关系,也就是说两个聚类特征可以进行相加,且有

CF1+CF2=(N1+N2,LS1+LS2,SS1+SS2)CF1+CF2 = (N_1+N_2, LS_1+LS_2, SS_1 +SS_2)

文本聚类算法

作为 BIRCH 算法中的核心部分,聚类特征树,也称 CF 树,是由多个不同层次下 CF 组成的节点构成的树结构,除了聚类特征 CF 以外, CF 树还涉及另外三个重要概念:是每个内部节点的最大 CF 数 BB、每个叶子节点的最大 CF 数 LL ,叶节点中每个 CF 的最大样本半径阈值 TT ,通过控制这三个参数,在数据集准备充分的情况下,我们就能够构建出一棵聚类特征树。

聚类特征树的构建过程如下:

1)从根节点开始,自上而下选择最近的子节点;

2)到达叶子节点后,检查最近的元组 CFiCF_i 能否在大样本半径阈值 TT 范围内吸收此数据点,如果可以,则更新CF值;若不能,则考虑是否可以添加一个新的元组,若无法添加则分裂最远的一对元组,作为种子,按最近距离重新分配其它元组;

3)更新每个非叶节点的CF信息,如果分裂节点,在父节点中插入新的元组,检查分裂,直到root。

在此基础上, BIRCH 算法的流程分为以下4个阶段:

1)在内存中构建 CF 树;

2)对第1阶段中的 CF 树进行瘦身(可选步骤);

3)以 CF 叶子节点对应的子簇为基础,实现数据点的聚类;

4)对第3阶段的聚类结果进行精修(可选步骤)。

@todo 补充算法流程

在文本聚类中, BIRCH 算法的主要优势体现在它对系统内存的节约,在算法执行过程中,聚类特征树仅仅保存了 CF 节点和对应的指针;树状的结构使得 BIRCH 算法更适用于在分析那种实际种类繁多的文本聚类场景之中;由于可以识别噪音点, BIRCH 算法常用于对大量数据集进行初步分类的预处理。但同时, BIRCH 算法由于在执行过程中对每个节点的 CF 个数加以了限制,故可能导致聚类的结果因此与真实的类别分布不同,另外文本数据高维特征的特点也会使 BIRCH 算法的聚类效果大打折扣,在使用 BIRCH 算法进行文本聚类之前,我们应首先进行一定的降维处理。

3.3 GMM(高斯混合模型聚类)

学界对高斯混合模型(Gaussian mixture model,GMM)的研究动力最早来自于动物学,1893年,动物学家瓦尔特弗兰克拉斐尔·韦尔登(Walter Frank Raphael Weldon)在观察观察前人对雌性滨蟹前额身长比的研究报告时突发奇想,推测这些分布直方图的不对称性可能来自于两个不同的进化分歧,关于混合模型的研究也由此启程。

随着后人在数学计算与统计学方面的努力,今天高斯混合模型已经成为了数据挖掘中广泛应用的聚类模型之一,特别是在图像处理方面广受欢迎。作为一个典型的概率模型类统计学习方法,高斯混合模型的基本思路便是将聚类问题看作为对每个样本的概率密度分布进行估计的问题,且根据中心极限定理,所有的样本都被假设服从于某一参数条件下的高斯分布。

高斯分布的概率密度分布函数:

ϕ(yθ)=12πσexp((yμ)22σ2)\phi \left ( y\mid \theta \right )= \frac{1}{\sqrt{2\pi }\sigma }exp\left ( -\frac{\left ( y-\mu \right )^{2}}{2\sigma^{2}} \right )

简单来说,高斯混合模型的聚类过程分为以下步骤:

1)假设数据集样本整体都服从某个由 KK 个高斯分布加权构成的整体混合分布,该分布被定义为:P(yθ)=k=1Kαkϕ(yθk)P(y\mid \theta )=\sum{k=1}^{K}\alpha{k}\phi (y\mid \theta_{k})

2)运用极大似然估计的方法对高斯分布概率密度函数中的参数 μk\mu{k}σk\sigma{k} 以及权重 αk\alpha_{k} 进行估计;

3)得到明确的概率密度函数后,对数据集中的样本分别在每一个高斯分布上投影;

4)选取对应概率最大的分布,作为该样本点所属的类。

在求解极大似然估计时,实际执行中为了解决计算机函数求导的困难,一般会采用 EM 算法:第一步,对各个高斯模型的参数进行初始化;第二步,基于当前参数估计每个高斯模型的权重;第三步,基于估计的权重,重新确定高斯模型的参数。重复这二三两个步骤,直到两次参数估计的结果差异足够小,即近似达到极值( EM 算法存在陷入局部最优的风险,因此该估计值不一定就是最优值)。

我们可以发现, EM 算法的思想与 K-means 聚类中的不断迭代过程似乎由异曲同工之妙,与 K-means 相比,高斯混合模型与之的共同点还在于二者都需要指定固定的类别数 K ,并且都运用到了初始化的过程,其中K-means 初始化中心, 高斯混合模型则初始化密度函数参数;而二者的区别则在于优化的目标不同, K-means 强调最短距离,而高斯混合模型则基于极大似然估计,同时二者在最终的类别划分上也不相同,依据分别为距离与概率。

@todo 补充文本数据分析中 GMM 的优势

劣势:类别数 K 不能设定过多,不适用于类别数繁多的文本数据分析场景。

3.4 GAAC(凝聚层次聚类)

GAAC(Group-average Agglomerative Clustering),也称凝聚层次聚类法,是一种基于层次聚类法(Hierarchical Clustering)思想的无监督学习方法。GAAC 的核心思路是簇与簇之间的合并,在聚类的过程中,所有的样本点在开始时各成一簇,之后不断重复合并两个距离最近的簇,直至簇的个数达到指定的数量。

GAAC 法聚类的关键点在于明确两个簇之间的相似度度量,常用的度量方法有以下三种:

1)单链(MIN):将不同两个簇的两个最近的点之间的距离作为两个簇的相似度。

2)全链(MAX):将不同两个簇的两个最远的点之间的距离作为两个簇的相似度。

3)组平均:取来自两个不同簇的所有点组合,计算点与点之间的距离,以其平均值作为两个簇的相似度。

同时,在 GAAC 法中,为了防止出现过度簇与簇合并的现象,在算法执行时会规定一个退出条件,如当前簇数为初始簇数的 10% 等等,以保证凝聚层次聚类法得到理想的聚类结果。

在文本数据分析中,我们很少会对 GAAC 法进行直接的应用,这是因为 GAAC 在计算簇相似度时往往需要一次性计算大量的样本点间距离,这使得在处理文本数据这一类高维度数据时将耗费大量的资源与时间。因此,当我们面对数据规模较大的文本数据分析时,对 GAAC 法进行使用前一般会结合有效的抽样技术,并将它作为其他聚类方法的铺垫或补充。