研究生课程:现代信息检索-第11讲 文本分类
《现代信息检索》课程笔记:第11讲 文本分类
第11讲 文本分类
常设查询(Standing Queries)
从检索到文本分类:假设某用户有一个经常关注的信息需求,用户会经常输入这个查询来寻找关于这个主题的新内容,关注于浏览新内容,此时排序问题变成了一个分类问题(相关 vs. 不相关)
需要构建分类函数
人工分类
专家分类一般都是准确的
当数据规模不大、标注者人数较少时,分类一致
当数据规模变大,人工分类困难且代价昂贵
人工编写的基于规则的分类器
新闻机构,情报机构等使用的一个技术,广泛部署于政府和企业
供应商提供“ IDE”来编写此类规则,商业系统具有复杂的查询语言
如果领域专家花时间精心完善规则,则准确性会很高,但是建立和维护这些规则非常昂贵
有监督学习
监督学习分类器可以使用各种特征
词袋模型
仅使用词项特征,使用文本中的所有词项
特征选择的意义
- 文本语料具有大量的词项/特征
- 特征选择可以使得某些分类器可用
- 减少训练时间
- 使运行时模型更小,更快
- 可以提高模型泛化能力
最简单的特征选择方法:
- 仅使用最常见词项
- 没有特别的(理论)依据
- 但是很好理解:
- 这些词的概率可以被很好地估计(因为词频高),并且最常被用作相关性的证据
- 在实际应用中,词频特征选择往往能达到一些更高的方法的90%的性能
更聪明的特征选择方法:卡方(chi-square)等
朴素贝叶斯分类器
朴素贝叶斯分类的目标是寻找具有最大后验概率的类别
对数计算:通过取对数将原来的乘积计算变成求和计算
参数估计:极大似然估计
避免零概率:加一平滑
朴素贝叶斯对于训练集的大小和测试文档的大小而言是线性的,在某种意义上是最优的。
- 相对于其他很多更复杂的学习方法,朴素贝叶斯对不相关特征更具鲁棒性
- 相对于其他很多更复杂的学习方法,朴素贝叶斯对概念漂移更鲁棒(概念漂移是指类别的定义随时间变化)
- 当有很多同等重要的特征时,该方法优于决策树类方法
- 如果满足独立性假设,那么朴素贝叶斯是最优的
- 速度非常快、存储开销少
分类结果的评价:评估必须在独立于训练数据的测试数据上完成
评价指标:正确率(Precision),召回率(Recall),F1,分类准确率r/n ,其中 n 是所有测试文档的数量,r是正确分类的测试文档数量
向量空间分类
训练集包含一系列文档,每篇都标记着它的类别
在向量空间分类中,该集合对应着空间中一系列标记的点或向量。
利用Rocchio方法进行向量空间分类
基本思想:计算每个类的中心向量(所有文档向量的算术平均),将每篇测试文档分到离它最近的那个中心向量
Rocchio简单地将每个类别表示成其中心向量,分类基于文档向量到原型的相似度或聚类来进行,并不保证分类结果与训练集一致,即得到分类器后,不能保证训练集中的文档能否正确分类。
很多情况下,Rocchio的效果不如朴素贝叶斯:Rocchio算法不能正确处理非凸、多模式类别问题
kNN分类器
将每篇测试文档分给训练集中离它最近的那篇文档所属的类别。
- 不需要训练过程,但是文档的线性预处理过程和朴素贝叶斯的训练开销相当。对于训练集来说我们一般都要进行预处理,因此现实当中
kNN的训练时间是线性的。 - 当训练集非常大的时候,kNN分类的精度很高
- 如果训练集很小, kNN可能效果很差。
- kNN倾向于大类,可以将相似度考虑在内来缓解这个问题。
线性分类器
线性分类器计算特征值的一个线性加权和
很多常用的文本分类器都是线性分类器:朴素贝叶斯、Rocchio、logistic回归、线性SVM等等
不同的方法选择超平面的策略不同,造成了在测试文档分类性能的巨大差异
不能通过更强大的非线性分类器来获得更好的分类性能
不存在某个学习方法对于任何分类问题都最优
kNN高方差低偏差,而朴素贝叶斯分类器低方差高偏差
单标签问题:类别之间互斥,每篇文档属于且仅属于某一个类
多标签分类问题:一篇文档可以属于0、1或更多个类,针对某个类的决策并不影响其他类别上的决策
对于给定的分类问题,要考虑很多因素从而选择合适的分类器算法。