文本分类技术基础
2013-08-23 01:06
169 查看
分类体系
分类:给定一个对象,从一个事先定义好的分类体系中挑出一个或多个最适合该对象的类别。文本分类(TC, Text Categorization):在给定的分类体系下,根据文本内容自动的确定文本关联的类别。从数学角度看,文本分类是一个映射的过程,它将未标明类别的文本映射到已有的类别中,该映射可以是一对一或一对多的映射。
f:A→B
其中,
A表示待分类的文本集合,
B表示分类体系中的类别集合。
文本分类属于有监督的学习(Supervised Learning),它的基本步骤如下:
定义分类体系,即确定具体要分到哪些类。
将预先分类过的文档作为训练集,对文档做分词、去停用词等准备工作。
确定表达模型,对文档矩阵进行降维,提取训练集中最有用的特征。
应用具体的分类模型和分类算法,训练出文本分类器。
在测试集上测试并评价分类器的性能。
应用性能最高的分类模型对待分类文档进行分类。
评价指标
准确率和召回率是检索(IR)系统中的概念,也可用来评价分类器性能。True | False | |
Positive | A | B |
Negative | C | D |
召回率(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
相关文章推荐
- web基础之会话技术
- 一起谈.NET技术,asp.net控件开发基础(19)
- 【自动化测试技术QTP基础系列五】---自动化概述
- Java基础_DOS命令、Java跨平台性、技术架构、环境搭建和运行、注释、需求分析
- java基础加强--动态代理技术
- 网络技术基础概念和个人笔记总结(1)
- 【腾讯云的1001种玩法】零基础微信机器人实践-云技术对个人开发者的影响
- JAVA基础【3.6】《Java核心技术1》Java的基本程序设计结构-字符串
- 《JAVA 核心技术 基础知识》第三章 笔记
- 【数字条纹投影技术基础3】条纹分析技术的理论基础
- 染成茜色的坂道破解技术内幕之基础知识
- 开源技术基础:教你如何熟练使用TOMCAT
- Ajax技术的基础
- 三维图像技术与OpenGL基础理论
- COM编程技术基础概述之六
- Orchard: module开发基础技术知识
- GB28181技术基础之8 - 中心管理CMS
- Cisco路由技术基础知识详解
- Python基础技术问题总结
- 【Web基础】HTTP长连接和短连接以及推送技术原理