文本分类算法的效果[通俗易懂]

文本分类算法的效果[通俗易懂]基于统计的分类算法是主流,主要包括以下几种分类模型:相似度模型(Rocchio、K-近邻)、概率模型(贝叶斯)、线性模型(LLSF、SVM)、非线性模型(决策树、神经网络)、组合模型。对于这些分类算法,国内外很多研究者进行了客观评测(Yang,1999;Joachims,1998;He,2000;Tsay,2000;庞剑锋,2001;王灏,2003;李保利,2003;周雪忠,

大家好,又见面了,我是你们的朋友全栈君。

基于统计的分类算法是主流,主要包括以下几种分类模型:

  • 相似度模型(Rocchio、K-近邻)、
  • 概率模型(贝叶斯)、
  • 线性模型(LLSF、SVM)、
  • 非线性模型(决策树、神经网络)、
  • 组合模型。对于这些分类算法,

国内外很多研究者进行了客观评测(Yang,1999;Joachims,1998;He,2000;Tsay,2000;庞剑锋,2001;王灏,2003;李保利,2003;周雪忠,2003)。


分类算法效果评述

来源:《基于关键短语的文本分类研究》

很多实验证明无论分类算法如何改进,分类效果总难以提高,而且众多分类算法在训练集充分的情况下,几乎没有什么区别。

在周雪忠的实验中,统计数据表明词频特征表示的TFIDF/Rocchio的分类准确率在测试集相对充分时高于SVM,在特征表示和分类器相结合的实验中,TFIDF/Rocchio(W)取得了最好的效果,最后他得出结论,采用相对高维的特征表示(如词)和简单的分类方法(如TFIDF/Rocchio)即可达到理想的分类性能要求。

另外,Yiming Yang和Xin Liu(1999)对五种文本分类方法进行了受限的统计显著性测试研究:支持向量机(SVM)、k-近邻(KNN),神经网络(NNet)、线性最小平方拟合(LLSF)映射和朴素贝叶斯(NB)。结果表明当训练集平均,每个类中的正例数目较少时(少于10),SVM、 KNN和LLSF比NNet、NB显然要好,而当处理大分类(超过300个正例样本)时所有的分类方法性能相当。

这些都证明在算法改进提高分类效果的基础上,文本分类效果的进一步提高已经不能单纯依靠算法了。


文本分类算法的进一步说明

来源:《简单的分类模型》

基于TFIDF的Rocchio算法

Rocchio的发音是”Rockey-O”。

Rocchio算法来源于向量空间模型理论,向量空间模型Vector space model的基本思想为采用向量来表示一个文本,之后的处理过程就可以转化为空间中向量的运算。基于TFIDF的Rocchio是这种思想的一种实现方法,其中以一个N维向量来表示文本,向量维数N即特征数,向量分量是特征的某种权重,表示该权值的计算方法称为TFIDF方法。通过TFIDF方法,首先将训练集中的文本表示为向量,然后生成类别特征向量,即可以用来代表一个类别的向量,类别特征向量取值为该类中所有文本向量的平均值。

Rocchio算法训练的过程,其实就是建立类别特征向量的过程,分类的时候给定一个未知文本,先生成该文本的向量,然后计算该向量与各类别特征向量的相似度,最后将该文本分到与其最相似的类别中去。

向量的相似度度量方法有两种:欧几里德距离和cosin。

总体来看,Rocchio算法简单易行运行速度尤其是分类速度较快。

朴素贝叶斯

贝叶斯分类是一种统计学分类方法,它基于贝叶斯定理,可以用来预测类成员关系的可能性,给出文本属于某特定类别的概率,分类时根据预测结果将该样本分到概率最高的类别中去即可。

朴素贝叶斯分类模型训练的过程其实就是统计每一个特征在各类中出现规律的过程,从理论上,讲贝叶斯分类的出错率最小,就试验结果来看,朴素贝叶斯在大型的数据集上表现出来难得的速度和准确度。

决策树Decision Tree

决策树是一个类似于流程图的树结构,其中每个节点代表一个属性上的测试,每个分支代表一个测试输出,最后的叶结点代表类别。决策树方便改写为形如if- then的分类规则,易于理解。

决策树的核心算法是一种贪心算法,它以自顶向下的方式在训练集的基础上构造决策树之后,取未知文本的属性,在决策树上测试路径由根结点到叶结点,从而得到该文本的所属类别。

决策树的算法有C4.5(发展于ID3)CART,CHAID等,他们的区别在于构造决策树与树枝剪除的算法细节不同。

决策树可以很好的抵抗噪声,最大的缺点在于不适应大规模的数据集,此种情况下决策树的构造会变得效率低下。

K近邻分类K-nearest neighbor

KNN的思想也来源于向量空间模型,同样采用将文本转化为向量的思想。KNN是一种基于类比的分类方法,在训练的过程中,KNN会生成所有训练例的特征向量,并将其保存下来。给定一个未知文本,首先生成它的特征向量之后,KNN会搜索所有的训练例,通过向量相似度比较,从中找出K个最接近的训练例,然后将未知文本分到这K个近邻中最普遍的类别中去,相似度可以通过欧几里德距离或cosin来度量

KNN是一种懒散的方法,即它没有学习过程,只是存放所有的训练例直到接到未知文本的时候才建立分类。

KNN的训练过程较快,而且可以随时添加或更新训练例来调整。但它分类的开销会很大,因为需要很大的空间来保存训练例,而且分类效率很差,有看法认为在小数据集上KNN的表现优异。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136390.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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