文本聚类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的数量是动态变化的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)