分类体系
分类:给定一个对象,从一个事先定义好的分类体系中挑出一个或多个最适合该对象的类别。
文本分类(TC, Text Categorization):在给定的分类体系下,根据文本内容自动的确定文本关联的类别。从数学角度看,文本分类是一个映射的过程,它将未标明类别的文本映射到已有的类别中,该映射可以是一对一或一对多的映射。
其中,A
表示待分类的文本集合,B
表示分类体系中的类别集合。
文本分类属于有监督的学习(Supervised Learning),它的基本步骤如下:
- 定义分类体系,即确定具体要分到哪些类。
- 将预先分类过的文档作为训练集,对文档做分词、去停用词等准备工作。
- 确定表达模型,对文档矩阵进行降维,提取训练集中最有用的特征。
- 应用具体的分类模型和分类算法,训练出文本分类器。
- 在测试集上测试并评价分类器的性能。
- 应用性能最高的分类模型对待分类文档进行分类。
评价指标
准确率和召回率是检索(IR)系统中的概念,也可用来评价分类器性能。
True | False | |
Positive | A | B |
Negative | C | D |
- 准确率(P, Precision),A/(A+B),在所有被判断为正确的文档中,有多大比例是确实正确的。
- 召回率(R, Recall),A/(A+C),在所有确实正确的文档中,有多大比例被我们判为正确。
- F1测度(F-measure),2PR/(P+R),既衡量准确率,也衡量召回率。
准确率和召回率是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下准确率高、召回率就低,召回率低、准确率高,当然如果两者都低,那是什么地方出问题了。
其他一些指标:
- 漏报率(miss rate) = 1 - recall
- 准确度(accurarcy) = (A + D)/(A + B + C + D)
- 错误率(error) = (B+C)/(A+B+C+D) = 1 - accurarcy
- 虚报率(fallout) = B/(B+D) = false alarm rate
- F = (β^2 +1)PR/(β^2+R)
- BEP, Break Event Point, where P=R
- AUC
表达模型
模型对每篇文档默认构造的向量是固定长度n,该n可能是我们汉语词典收录的词条数目,显然这会导致每个向量里的大部分特征值都是0。这是文本分类的主要特点:高维 和 数据稀疏。所以,降维是开始运用分类算法训练样本之前的一个关键预处理步骤。
降维有两种方法:
- 特征选择(feature selection),它是对原始特征利用一些评估函数独立评估,按照评估结果高低排序,选择那些评估值较高的特征。常用的特征选择方法有词频信息、互信息、信息增益和卡方检验等
- 特征抽取(feature detection),它是把原始特征映射到低维空间,这些被称为二次特征 (比如,奇异值分解后得到的lsi),从而生成模型产生的新特征。特征抽取方法比较常用的是lsa、plsa和lda等。
【注意】 特征选择和特征权重值计算是不同的,前者是根据特征对分类的重要程度来实现降维的手段,而后者是用于区分向量,实现分类算法中的相似度判断。它们是两个阶段的不同处理方法。特征权重值最典型的是tf-idf。
特征选择(feature selection)
针对英文纯文本的实验结果表明:作为特征选择方法时,卡方检验和信息增益的效果最佳(相同的分类算法,使用不同的特征选择算法来得到比较结果);文档频率方法的性能同前两者大体相当,术语强度方法性能一般;互信息方法的性能最差。
卡方检验(the χ^2 test)
属于分类c | 不属于分类c | 总计 | |
包含特征t | A | B | A+B |
不包含特征t | C | D | C+D |
总计 | A+C | B+D | N |
卡方检验是通过计算每个特征和每个类别的关联程度,然后选择那些关联程度高的特征来实现降维。其基本思想就是衡量实际值与理论值的偏差来确定理论的正确与否。
χ2(t,c)=N×(AD−BC)2(A+C)×(B+D)×(A+B)×(C+D)
其中,t
是具体的每个特征(比如词),c
是类别号。
信息增益法(information gain)
信息增益是通过计算每个特征对分类贡献的信息量,贡献越大信息增益越大,然后可以选择那些信息增益较高的特征实现降维。
信息熵定义:
H(C)=−∑i=1mP(ci)logP(ci)
其中,ci
是类别变量C
可能的取值,P(ci)
是各个类别出现的概率。
条件熵定义:
H(C|T)=P(t)H(C|t)+P(t¯)H(C|t¯)=−P(t)∑i=1nP(Ci|t)log2P(Ci|t)−P(t¯)∑i=1nP(Ci|t¯)log2P(Ci|t¯)
其中,带t¯
的值表示特征t
不出现的情况。
特征t
给系统带来的信息增益是系统原本的熵与固定特征T
后的条件熵之差。
G(t,c)=H(T)−H(T|C)
信息增益也是考虑了特征出现和不出现两种情况,与卡方检验一样,是比较全面的,因而效果不错。但信息增益最大的问题还在于它只能考察特征对整个系统的贡献,而不能具体到某个类别上,这就使得它只适合用来做所谓“全局”的特征选择(指所有的类都使用相同的特征集合),而无法做“本地”的特征选择(每个类别有自己的特征集合,因为有的词,对这个类别很有区分度,对另一个类别则无足轻重)。
分类模型
在训练阶段,就是利用各种分类算法对转化后的文本向量估计模型。常用的分类算法有朴素贝叶斯、knn、决策树、神经网络和svm等。
一些基本概念:
- 输入空间 为n维向量的集合
X⊆Rn
,其中向量x∈X
,x=(w1,…,wn)
,而wi
是文档向量x
的一个特征,比如,词,或者词和权重的二元组。 - 输出空间 为类标号集合,可以是二元分类
Y={+1,−1}
,或者多元分类Y={y1,…,ym}
。 - 训练数据 为一组根据未知分布
P(x,y)
独立采样(i.i.d)的数据集合,由输入向量与输出类标号对组成D={(x1,y1),…,(xl,yl)}
。
假设 (hypothesis):计算机对训练集背后的真实模型(真实的分类规则)的猜测称为假设。可以把真实的分类规则想像为一个目标函数,我们的假设则是另一个函数,假设函数在所有的训练数据上都得出与真实函数相同(或足够接近)的结果。
监督学习方法可以分为生成方法和判别方法,所学到的模型分别成为生成模型(generative model)和判别模型(discriminative model)。
生成方法由训练数据学习联合概率分布P(X,Y)
,然后求得条件概率分布P(Y|X)
作为预测的模型,即生成模型:
P(Y|X)=P(X,Y)P(X)
这样的方法之所以称作生成模型,是因为模型表示了给定输入X
产生输出Y
的生成关系。典型的生成模型有:朴素贝叶斯法和隐马尔科夫模型。
判别方法直接学习决策函数f(X)
或者条件概率分布P(Y|X)
作为预测模型,即判别模型。判别方法关心的是对给定的输入X
,应该预测什么样的输出Y
。典型的判别模型有:knn、决策树、逻辑回归、EM、SVM、各种boosting算法等等。
朴素贝叶斯
根据条件独立性假设,Y=ck
类别的后验概率正比于该类别的先验概率和条件概率的乘积:
P(Y=ck|X=x)=P(Y=ck)P(X=x|Y=ck)P(X=x)∝P(Y=ck)∏i=1nP(wi|Y=ck)
根据 极大后验概率假设(MAP, Maximum a posteriori probability hypothesis),使得后验概率P(Y=ck|X=x)
最大的那个类别号误差最小。一般避免乘法导致浮点数溢出,可以转换为对数计算,不改变凸函数性质:
y=argmaxckP(Y=ck)∏i=1nP(wi|Y=ck)=argmaxcklogP(Y=ck)+∑i=1nlogP(wi|Y=ck)
实际的 参数计算 时会加入Laplace平滑:
P(Y=ck)=N(ck)∑mi=1N(ci)≈1+N(ck)|c|+∑mi=1N(ci)
其中,N(ck)
是类别 ck
的文档的总数,|c|
是分类总数。
P(wi|Y=ck)=N(wi,ck)∑nk=1N(wk,ck)≈1+N(wi,ck)|w|+∑nk=1N(wk,ck)
其中,N(wi,ck)
表示特征词wi
在类别ck
的文档中出现的次数,|w|
表示所有特征词总数。
建立NB分类器有两种方法,上述是多项式模型(Multinomial model),还有一种贝努利模型(Bernoulli model)。贝努利模型属于二值模型,对于每个词只统计是否出现,而不计算其出现次数。多项式模型适合处理长文本,而贝努利模型适合处理短文本。贝努利模型对噪声敏感,所以在使用之前必须要做特征选择。
SVM
对于一组训练数据 {(x1,y1),…,(xl,yl)}
,其中 x∈Rn
,y∈{+1,−1}
,在线性可分的情况下会有一个超平面,将这两类样本完全分开,并且离超平面最近的向量与超平面之间的距离最大。
f(x)=∑i=1nwixi+b=⟨w⋅x⟩+b
参考
- 统计学习方法, 李航, 4. 朴素贝叶斯
- Introduction to IR, 13. Text classification and Naive Bayes
转载自:http://blog.jqian.net/post/classification.html#content