首页 > 编程知识 正文

文本分类聚类算法,文本相似度比较算法

时间:2023-05-06 09:37:56 阅读:19623 作者:648

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

一. Rocchio算法

Rocchio算法应该是人们考虑文本分类问题后首先想到的最直观的解决方法。 的基本想法是将一个类别中的样本文件的各项平均化。 例如,将所有“体育”类文件中词汇“篮球”出现的次数平均化,将“裁判”平均化,依次进行。 得到被称为“重心”的新向量,重心成为该类别最具代表性的向量表现。 如果需要确定新文档,可以通过比较重心与新文档有多相似来确保新文档不属于这个类。 稍微改进的Rocchio算法不仅考虑了属于此类别的文档(称为修改样本),还考虑了不属于此类别的文档数据(称为负样本),并且计算出的重心尽量是修改样本

其优点是容易实现,计算(训练和分类)特别简单,一般用于实现衡量分类系统性能的基准系统,但在实用的分类系统中很少用该算法解决具体的分类问题。

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

3、分类决策有错误率

三、KNN算法(K-Nearest Neighbour )的优点: 1、简单、有效。 2、再培训成本低(类别体系变化和培训集变化在网络环境和电子商务APP应用中很常见)。 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第五。 
性能较差的是朴素贝叶斯,决策树。 
有些算法在特定的数据集下表现较好。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。