文本聚类2
A.问题背景
1.划分聚类
给定:
一个赋值函数=:g:D Þ {1,......,K}
C.聚类评测
1.聚类好坏的直观标准
Pt:文档集合中所有可能文档对的数目,设文档总数为n,则Pt=n*(n-1)/2
Tm:人工分类中所有可能的文档对数量
Ta:聚类结果中所有可能的文档数量
Ei:错误关联,指在聚类结果中出现,而在人工分类中没有出现的文档对数量。
Em:遗漏关联,指在人工分类中出现,而在聚类结果中没有出现的文档对数量
- 聚类是对数据对象进行划分的一种过程,与分类不同的是,它所划分的类是未知的,故此,这是一个“无指导的学习”(unsupervised learning)过程,即聚类算法不需要“教师”的指导,不需要提供训练数据,它倾向于数据的自然划分。
- 文本聚类(Text clustering): 将文本集合分组成多个类或簇,使得在同一个簇中的文本内容具有较高的相似度,而不同簇中的文本内容差别较大。它是聚类分析技术在文本处理领域的一种应用。
1.划分聚类
给定:
- 一个文档的集合D = {d1,d2,......,dk}
- 一个相似度的度量方法
- 一个划分的准则(cretirion)
- 一个期望的聚类数量K
一个赋值函数=:g:D Þ {1,......,K}
- g满足划分的准则,使用指定的相似度计算方法
C.聚类评测
1.聚类好坏的直观标准
- 内部标准:cluster内部的文档具有较高的相似度,cluster之间的文档具有较低的相似度。
- 外部标准:clustering的好坏还可以用它发现潜在的模式或分类的能力来进行判断
聚类错误率(CE) = (错误关联 + 遗漏关联)/文档集合中所有可能的文档对数量=(Ea + Em)/Pt
聚类全面率(CA) = 正确关联数/人工分类中文档对的数量 = (Ta - Ei) / Tm
聚类准确率(CP) = 正确关联数/聚类结果中文档对的数量 = (Ta - Ei) / Ta
3.外部评测的主要标准是纯度,也就是对聚类结果Ci,其中数量最多的类(正确分类)在聚类结果中的比例。
Ⅱ.聚类方法
B.层次方法(Hierarchical Clustering)
1.基于层次的聚类
层次聚类法(Hierarchical methods)将文本集合进行层次分解,组成一颗凝聚树。根据层次的形成方式可以分为两类:
A.划分方法(Partitional Clustering)
对包含n个文档的文本集合,划分将生成k个分组,k<=n,每一个分组代表一个聚类
1.KMeans方法
step1. 任意选择k个对象作为初始的类的中心
step2. repeat
step3. 根据类中文档的平均值,将每个文档(重新)赋给最相近的类
step4. 更新类的平均值,
step5. until 不再发生变化。
对包含n个文档的文本集合,划分将生成k个分组,k<=n,每一个分组代表一个聚类
1.KMeans方法
step1. 任意选择k个对象作为初始的类的中心
step2. repeat
step3. 根据类中文档的平均值,将每个文档(重新)赋给最相近的类
step4. 更新类的平均值,
step5. until 不再发生变化。
B.层次方法(Hierarchical Clustering)
1.基于层次的聚类
层次聚类法(Hierarchical methods)将文本集合进行层次分解,组成一颗凝聚树。根据层次的形成方式可以分为两类:
-
凝聚的方法(agglomerative),也称自底向上(bottom-up)
-
分裂的方法(divisive),也称自顶向下(top-down)
2.HAC(Hierarchical Agglomerative Clustering)算法
a.自底向上的方法
采用自底向上(bottom-up)的策略首先将每个文档看作一个类,然后相继合并相近的文本类,直到所有的文档合并为一个类,或者达到某个终止条件,如希望得到的类的个数或者两个相近的类超过了某一个阈值。
b.自顶向下的方法:
它首先将所有的文档看作一个类,然后逐渐细分为越来越小的类,直到每个文档自成一类,或者达到某个终止条件,如希望得到的类的个数或者两个相近的类超过了某一个阈值。
相关问题:
a.自底向上的方法
采用自底向上(bottom-up)的策略首先将每个文档看作一个类,然后相继合并相近的文本类,直到所有的文档合并为一个类,或者达到某个终止条件,如希望得到的类的个数或者两个相近的类超过了某一个阈值。
b.自顶向下的方法:
它首先将所有的文档看作一个类,然后逐渐细分为越来越小的类,直到每个文档自成一类,或者达到某个终止条件,如希望得到的类的个数或者两个相近的类超过了某一个阈值。
相关问题:
- 缺点:一旦一个步骤(合并或分裂)完成就不能修正。现在已有多种改进方法,如凝聚层次的聚类与迭代重定位的集成等
- 时间复杂度O(n2),n为文档数。层次聚类算法实质上是一种贪心算法。
3.Single Link,Complete Link,Average Link
在层次聚类中,一个关键的问题就是如何计算cluster之间的相似度(我们已经可以计算任意两个文档的相似度)。最简单的办法是“Center of Gravity"就是使用每个cluster的centroid进行计算,centroid即中心点,等于average of all its points。
其他的方法还包括:
4.Term space vs. Document space在层次聚类中,一个关键的问题就是如何计算cluster之间的相似度(我们已经可以计算任意两个文档的相似度)。最简单的办法是“Center of Gravity"就是使用每个cluster的centroid进行计算,centroid即中心点,等于average of all its points。
其他的方法还包括:
通常情况下,我们使用term-doc矩阵来计算两个文档的相似度。但有些应用,比如topic的层次聚类,可以使用doc-term矩阵。在计算的时候,有些不同。比如,我们可以在固定时间内计算term-doc任意两个向量的内积,因为term的数量是固定的。而doc-term中doc的数量是动态变化的。