SVM算法
支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]。
支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力[14](或称泛化能力)。
SVM 方法有很坚实的理论基础,SVM 训练的本质是解决一个二次规划问题(Quadruple Programming,指目标函数为二次函数,约束条件为线性约束的最优化问题),得到的是全局最优解,这使它有着其他统计学习技术难以比拟的优越性。SVM 分类器的文本分类效果很好,是最好的分类器之一。同时使用核函数将原始的样本空间向高维空间进行变换,能够解决原始样本线性不可分的问题。其缺点是核函数的选择缺乏指导,难以针对具体问题选择最佳的核函数;另外SVM 训练速度极大地受到训练集规模的影响,计算开销比较大,针对SVM 的训练速度问题,研究者提出了很多改进方法,包括Chunking 方法、Osuna 算法、SMO 算法和交互SVM 等等[14]。
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是效果和性能均不错的算法。
前面也提到过,训练阶段的最终产物就是分类器,分类阶段仅仅是使用这些分类器对新来的文档分类而已,没有过多可说的东西。
下一章节是对到目前为止出现过的概念的列表及简单的解释,也会引入一些后面会用到的概念。再之后会谈及分类问题本身的分类(绕口),中英文分类问题的相似与不同之处以及几种特征提取算法的概述和比较,路漫漫……
分享到:
相关推荐
- 可以通过训练特定的情感分类器实现。 **总结** 本教程旨在为初学者提供一个关于Python NLP的基础指南。通过以上内容的学习,读者可以了解到如何使用Python进行基本的文本处理、分词以及词频统计等操作,并对NLP...
在自然语言处理、生物信息学和语音识别等领域,经常需要对一系列观察到的数据进行标签序列的分配,例如,将自然语言文本中的每个词标记为相应的词性(Part-of-Speech, POS)。CRF在这里提供了一种强大而灵活的方法,...
- **项目选择**:可以从简单的文本分类、情感分析开始。 - **项目实施**:使用上述技术解决问题。 - **结果评估**:通过准确率、召回率等指标评估模型性能。 ##### 6. 持续学习 - **跟踪最新进展**:关注顶级学术...
3. **词法分析**:介绍分词(Tokenization)、词性标注(Part-of-Speech Tagging)和命名实体识别(Named Entity Recognition),这些是处理文本的初步步骤,用于将连续的文本分解成有意义的单位。 4. **句法分析**...
在深度学习的基本过程中,模型训练通常包括前向传播和反向传播,用于优化权重参数以提高模型对文本数据的拟合程度。深度学习模型如循环神经网络(RNN)、长短时记忆网络(LSTM)和Transformer等在NLP任务中表现出色...
1. **类别到序列**:例如文本分类,将一段文本映射到一个或多个预定义的类别。 2. **序列到类别**:如情感分析,通过分析文本序列预测其所属的情感类别。 3. **同步的序列到序列**:比如机器翻译,将一种语言的句子...
在NLTK中,数据集的集合被称为“Corpora”,它们是预处理过的文本集,可以用作分析和训练模型的数据源。例如,NLTK提供了一些经典的语料库,如莎士比亚的剧本、布朗语料库(Brown Corpus)等。而“Histogram”是指...
3. **命名实体识别**:命名实体识别(Named Entity Recognition, NER)用于找出文本中具有特定意义的实体,如人名、地名、组织机构等。Spacy库在这方面表现出色,其内置的模型可以直接进行NER任务。 4. **情感分析*...
3. **第3章**:可能讲解词性标注(Part-of-Speech Tagging),即为每个词汇标注其在句子中的语法角色,如名词、动词等,jieba库提供此功能。 4. **第4章**:可能会涉及命名实体识别(NER),用于找出文本中的专有...
通过学习这个资源,你可以掌握如何使用Python进行文本预处理、文本分类、情感分析、词性标注、实体识别等NLP任务,进一步提升你的NLP技能。记得解压文件并按照里面的指导逐步学习,同时结合实际项目进行实践,将理论...
研讨会可能涵盖从基础概念,如词性标注(Part-of-Speech tagging)、情感词汇表(Sentiment Lexicons)到更高级的技术,如机器学习模型(如朴素贝叶斯、支持向量机)的构建和训练,用于自动识别文本情感。...
这里的“监督式”意味着训练过程中需要有已标注的数据集作为指导,而“序列标注”则特指对于输入序列中的每个元素进行分类或标记的任务。 #### 描述解析 描述部分简短地重复了标题内容,并没有提供额外的信息。但从...
OpenNLP 包含了一系列用于处理文本数据的模块,如词性标注(Part-of-Speech tagging)、命名实体识别(Named Entity Recognition)、句子分割(Sentence Detection)、依存关系分析(Dependency Parsing)等。...
最后,“任务Part3 Demo 综合练习HTML,CSS,JavaScript”是将前两个部分的知识进行整合。在这个阶段,学员需要运用到前面学到的HTML结构、CSS样式以及JavaScript交互,来完成更复杂的网页项目。这可能包括实现交互...
这个项目的核心理念是降低编程的入门门槛,让编程变得更加亲切和易懂,尤其是对于那些母语非英语的开发者。 在Java编程世界中,这可能涉及到使用特定的库或框架来实现自然语言处理(NLP),以便将母语指令转化为可...
Visual C++MFC入门教程 目录 +-- 第一章 VC入门 |------ 1.1 如何学好VC |------ 1.2 理解Windows消息机制 |------ 1.3 利用Visual C++/MFC开发Windows程序的优势 |------ 1.4 利用MFC进行开发的通用方法介绍 |----...