SVM分类器的优点在于通用性较好,且分类精度高、分类速度快、分类速度与训练样本个数无关,在查准和查全率方面都优于kNN及朴素贝叶斯方法[8]。
与其它算法相比,SVM算法的理论基础较为复杂,但应用前景很广,我打算专门写一个系列的文章,详细的讨论SVM算法,stay tuned!
介绍过了几个很具代表性的算法之后,不妨用国内外的几组实验数据来比较一下他们的优劣。
在中文语料上的试验,文献[6]使用了复旦大学自然语言处理实验室提供的基准语料对当前的基于词向量空间文本模型的几种分类算法进行了测试,这一基准语料分为20个类别,共有9804篇训练文档,以及9833篇测试文档。在经过统一的分词处理、噪声词消除等预处理之后,各个分类方法的性能指标如下。
其中F1 测度是一种综合了查准率与召回率的指标,只有当两个值均比较大的时候,对应的F1测度才比较大,因此是比单一的查准或召回率更加具有代表性的指标。
由比较结果不难看出,SVM和kNN明显优于朴素贝叶斯方法(但他们也都优于Rocchio方法,这种方法已经很少再参加评测了)。
在英文语料上,路透社的Reuters-21578 “ModApt´e”是比较常用的测试集,在这个测试集上的测试由很多人做过,Sebastiani在文献[23]中做了总结,相关算法的结果摘录如下:
分类算法 在Reuters-21578 “ModApt´e”上的F1测度
Rocchio 0.776
朴素贝叶斯 0.795
kNN 0.823
SVM 0.864
仅以F1测度来看,kNN是相当接近SVM算法的,但F1只反映了分类效果(即分类分得准不准),而没有考虑性能(即分类分得快不快)。综合而论,SVM是效果和性能均不错的算法。
前面也提到过,训练阶段的最终产物就是分类器,分类阶段仅仅是使用这些分类器对新来的文档分类而已,没有过多可说的东西。
(六)相关概念总结
学习方法:使用样例(或称样本,训练集)来合成计算机程序的过程称为学习方法[22]。
监督学习:学习过程中使用的样例是由输入/输出对给出时,称为监督学习[22]。最典型的监督学习例子就是文本分类问题,训练集是一些已经明确分好了类别文档组成,文档就是输入,对应的类别就是输出。
非监督学习:学习过程中使用的样例不包含输入/输出对,学习的任务是理解数据产生的过程 [22]。典型的非监督学习例子是聚类,类别的数量,名称,事先全都没有确定,由计算机自己观察样例来总结得出。
TSR(Term Space Reduction):特征空间的压缩,即降维,也可以叫做特征提取。包括特征选择和特征抽取两大类方法。
分类状态得分(CSV,Categorization Status Value):用于描述将文档归于某个类别下有多大的可信度。
准确率(Precision):在所有被判断为正确的文档中,有多大比例是确实正确的。
召回率(Recall):在所有确实正确的文档中,有多大比例被我们判为正确。