文本分类算法比较与总结

文本分类算法比较与总结本文对常用的几种文本分类算法进行了比较与总结 主要阐述它们之间的优劣 为算法的选择提供依据 nbsp 一 Rocchio 算法 nbsp Rocchio 算法应该算是人们思考文本分类问题最先能想到的 也是最符合直觉的解决方法 基本的思路是把一个类别里的样本文档各项取个平均值 例如把所有 体育 类文档中词汇 篮球 出现的次数取个平均值 再把 裁判 取个平均值 依次做下去 就可以得到一个新的向量 形象的称之为 质心 质

本文对常用的几种文本分类算法进行了比较与总结,主要阐述它们之间的优劣,为算法的选择提供依据。 

一、Rocchio算法 

Rocchio算法应该算是人们思考文本分类问题最先能想到的,也是最符合直觉的解决方法。基本的思路是把一个类别里的样本文档各项取个平均值(例如把所有“体育”类文档中词汇“篮球”出现的次数取个平均值,再把“裁判”取个平均值,依次做下去),就可以得到一个新的向量,形象的称之为“质心”,质心就成了这个类别最具代表性的向量表示。再有新的文档需要判断的时候,比较新文档和质心有多么相像就可以确定新文档属不属于这个类。稍微改进一点的Rocchio算法不仅考虑属于这个类别的文档(称为正样本),也考虑不属于这个类别的文档数据(称为负样本),计算出来的质心尽量靠近正样本同时尽量远离负样本。

它的优点是容易实现,计算(训练和分类)特别简单,它通常用来实现衡量分类系统性能的基准系统,而实用的分类系统很少采用这种算法解决具体的分类问题。

二、朴素贝叶斯 
优点: 
1、朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。 
2、NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。 
缺点: 
1、理论上,NBC模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的(可以考虑用聚类算法先将相关性较大的属性聚类),这给NBC模型的正确分类带来了一定影响。在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。 
2、需要知道先验概率。 






3、分类决策存在错误率 

三、KNN算法(K-Nearest Neighbour) 
优点: 
1、简单、有效。 
2、重新训练的代价较低(类别体系的变化和训练集的变化,在Web环境和电子商务应用中是很常见的)。 
3、计算时间和空间线性于训练集的规模(在一些场合不算太大)。 
4、由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。 
5、该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。 
缺点: 
1、KNN算法是懒散学习方法(lazy learning,基本上不学习),比一些积极学习的算法要快很多。 
2、类别评分不是规格化的(不像概率评分)。 
3、输出的可解释性不强,例如决策树的可解释性较强。 
4、该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。 











5、计算量较大。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。 

四、决策树(Decision Trees) 
优点: 
1、决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义。 
2、对于决策树,数据的准备往往是简单或者是不必要的.其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性。 
3、能够同时处理数据型和常规型属性。其他的技术往往要求数据属性的单一。 
4、决策树是一个白盒模型。如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式。 
5、易于通过静态测试来对模型进行评测。表示有可能测量该模型的可信度。 
6、在相对短的时间内能够对大型数据源做出可行且效果良好的结果。 
7、可以对有许多属性的数据集构造决策树。 
8、决策树可很好地扩展到大型数据库中,同时它的大小独立于数据库的大小。 
缺点: 
1、对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征。 
2、决策树处理缺失数据时的困难。 
3、过度拟合问题的出现。 













4、忽略数据集中属性之间的相关性。 

五、Adaboosting方法 
1、adaboost是一种有很高精度的分类器。 
2、可以使用各种方法构建子分类器,Adaboost算法提供的是框架。 
3、当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。 
4、简单,不用做特征筛选。 




5、不用担心overfitting。 

六、支持向量机(SVM) 
优点: 
1、可以解决小样本情况下的机器学习问题。 
2、可以提高泛化性能。 
3、可以解决高维问题。 
4、可以解决非线性问题。 
5、可以避免神经网络结构选择和局部极小点问题。 
缺点: 
1、对缺失数据敏感。 








2、对非线性问题没有通用解决方案,必须谨慎选择Kernelfunction来处理。 

七、人工神经网络 

优点: 
分类的准确度高,并行分布处理能力强,分布存储及学习能力强,对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系,具备联想记忆的功能等。 
缺点: 


神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;学习时间过长,甚至可能达不到学习的目的。 

八、遗传算法 
优点: 
1、与问题领域无关切快速随机的搜索能力。 
2、搜索从群体出发,具有潜在的并行性,可以进行多个个体的同时比较,鲁棒性好。 
3、搜索使用评价函数启发,过程简单。 
4、使用概率机制进行迭代,具有随机性。 
5、具有可扩展性,容易与其他算法结合。 
缺点: 
1、遗传算法的编程实现比较复杂,首先需要对问题进行编码,找到最优解之后还需要对问题进行解码, 
2、另外三个算子的实现也有许多参数,如交叉率和变异率,并且这些参数的选择严重影响解的品质,而目前这些参数的选择大部分是依靠经验.没有能够及时利用网络的反馈信息,故算法的搜索速度比较慢,要得到比较精确的解需要较多的训练时间。 
3、算法对初始种群的选择有一定的依赖性,能够结合一些启发算法进行改进。 










各种分类算法的比较 
Calibrated boosted trees的性能最好, 
随机森林第二, 
uncalibrated bagged trees第三, 
calibratedSVMs第四, 
uncalibrated neural nets第五。 
性能较差的是朴素贝叶斯,决策树。 
有些算法在特定的数据集下表现较好。







版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233450.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java中一维数组和二维数组初始化 对象数组初始化「建议收藏」

    Java中一维数组和二维数组初始化 对象数组初始化「建议收藏」数组属于引用数据类型,在使用前必须初始化,否则会报NullPointerException(空指针异常:运行时异常)一维数组初始化:动态初始化:(声明并开辟数组)数据类型[]数组名称=new数据类型[长度]int[]data=newint[5]:声明并开辟一个长度为5的数组数组通过下标索引来获取元素,下标默认从0开始。数组下标超出数组长度,数组越界异常(运行时…

    2022年5月25日
    36
  • pycharm运行时interpreter为空 及 Please specify a different SDK name解决方法

    pycharm运行时interpreter为空 及 Please specify a different SDK name解决方法若 PyCharm 报错 Pleasespecif 原因是因为 PyCharm 中存在相同名字的虚拟环境变量解决 点击下图中的 showall 然后删除相同虚拟环境名字的虚拟环境就可以创建自己的虚拟环境了

    2025年12月1日
    6
  • http 1.0 / 1.1 / 2.0的区别

    http 1.0 / 1.1 / 2.0的区别http1.0 / 1.1 / 2.0的区别

    2022年6月24日
    26
  • paping && psping 那些事

    paping && psping 那些事paping amp psping 简单描述 paping 跨平台 psping 只能在 windows 上进行使用 ping 跨平台当需要测试数据包能否通过 IP 协议到达特定主机 一般都是使用 ping 工作时 ping 向目标主机发送一个 ICMPEcho 请求的数据包 并等待接收 Echo 相应数据包 通过响应时间和成功响应的次数来判断丢包率和网络延迟 担当对方禁止 ICMP 之后 ping 将无效 所

    2025年9月2日
    3
  • 浅聊:ES6模板字符串与一般字符串

    浅聊:ES6模板字符串与一般字符串一.模板字符串与一般字符串区别二.模板字符串的一些注意事项一.模板字符串与一般字符串区别1,认识模板字符串:’xiaozhang’ //一般字符串`xiaozhang` //模板字符串(用两个反引号裹着)constusername1=’xiaozhang’;constusername2=`xiaozhang`;console.log(username1,username2,usern..

    2022年8月21日
    17
  • fmincon函数源代码_fminbnd函数

    fmincon函数源代码_fminbnd函数输入参数:fun要求解的函数值;x0函数fun参数值的初始化;输出参数:X输出最优参数值原文链接:MATLAB优化函数fmincon解析

    2025年5月24日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号