文本分类的14种算法总结

12 篇文章 1 订阅
11 篇文章 3 订阅

文本分类的14种算法总结

之前介绍了14种文本分类中的常用算法,包括8种传统算法:k临近、决策树、多层感知器、朴素贝叶斯(包括伯努利贝叶斯、高斯贝叶斯和多项式贝叶斯)、逻辑回归和支持向量机;4种集成学习算法:随机森林、AdaBoost、lightGBM和xgBoost;2种深度学习算法:前馈神经网络和LSTM。
各篇链接如下:
测试环境搭建与数据预处理:
https://blog.csdn.net/qq_43012160/article/details/94993382
决策树、朴素贝叶斯(伯努利贝叶斯、高斯贝叶斯和多项式贝叶斯):
https://blog.csdn.net/qq_43012160/article/details/95366183
k临近、逻辑回归、SVM支持向量机:
https://blog.csdn.net/qq_43012160/article/details/95506126
随机森林、AdaBoost、多层感知器:
https://blog.csdn.net/qq_43012160/article/details/95762591
lightGBM、xgBoost:
https://blog.csdn.net/qq_43012160/article/details/96016265
前馈神经网络、LSTM(包括pycharm深度学习环境搭建):
https://blog.csdn.net/qq_43012160/article/details/96101078

性能评估

先放代码和数据集:
链接:https://pan.baidu.com/s/14TPM2I0sRV7mCxsfXHKk0A
提取码:wt2u

所有14种算法我都跑了一遍,其中4种算法要么把我电脑跑死机了,要么时间长的令人发指,就没跑完。整理了跑出来的10种算法的正确率和耗时如下:
在这里插入图片描述
下面这篇博文有一个区别度更大、更完整的排名:
https://www.kesci.com/home/project/5cbbe1668c90d7002c810f79

在这里插入图片描述
这种简单的文本分类练习,不同算法的性能分层还是比较明显的。

知识总结

1.机器学习、集成学习和深度学习:

1)机器学习泛指所有的使机器通过建立和调整模型从而实现特定功能的算法。2)深度学习是运用了多层的人工神经网络(ANN)的机器学习方法。3)集成学习是指通过将多个弱分类器的分类结果进行整合,获得比单个弱分类器更好效果的机器学习方法。
集成学习和深度学习属于机器学习。

2.集成学习的bagging和boosting思想:

bagging中的各个弱分类器取值是相互独立的、无关的,常使用有放回抽样实现。
boosting中的弱分类器是在基分类器/前一个分类器的基础上通过迭代不断优化/调整出来的。

3.三种朴素贝叶斯:

高斯贝叶斯GaussianNB、多项式贝叶斯MultinomialNB和伯努利贝叶斯BernoulliNB。
分别对应数据满足高斯分布(正态分布)、多项式分布和伯努利分布的训练集数据。

1)伯努利贝叶斯即特征的取值只有取和不取两类(0和1),对应朴素贝叶斯公式中,
p(yi)=标签为yi的文本数(句子数)/文本总数(句子总数)
p(xj|yi)=(标签为yi的文本中出现了单词xj的文本数+1)/(标签为yi的文本数+2)。

2)多项式贝叶斯其实就是伯努利贝叶斯的特征取值由简单的0-1扩展为多个值的情况,
p(yi)=标签为yi的文本中的单词总数/训练集中的单词总数
p(xj|yi)=(标签为yi的文本中单词xj的出现次数+1)/(标签为yi的文本中的单词总数+词袋单词种数)。

3)高斯贝叶斯常被用来处理连续数据(如身高)。

4.AdaBoost、lightGBM(GBDT)和xgBoost

AdaBoosting是Boosting框架+任意基学习器算法+指数损失函数。
GBDT是Boosting框架+CART回归树模型+任意损失函数。
AdaBoosting利用前一轮迭代弱学习器的误差率来更新训练集的权重,而GBDT采用梯度下降法:丢掉大梯度的数据而收纳梯度较小的数据加入目标决策树以使树回归(贴近真实值)。
xgBoost的损失函数还考虑了树不能太复杂且要分配均衡:一棵树太复杂,鹤立鸡群,就容易产生弱分类器间的过拟合;一棵树内部的节点间不均衡,就容易导致大节点代表的分类特征/分裂阈值的权重过大,就会产生树内部节点之间的过拟合。

值得注意的是AdaBoosting的误差率、权重和GBDT的梯度都是在弱分类器之间的关系上的,是在分类器迭代时起作用的,而不是用在单个弱分类器的节点分裂层面上的,但其实是有影响的。

这里就要说到损失函数、决策树节点分裂阈值和弱分类器迭代、生成之间的关系了。节点分裂阈值和分类特征的选定是根据损失函数来确定的——假设损失函数为L(w),w为目标决策树的叶节点分裂阈值向量,我们使损失函数最小,求得此时的min(w)作为目标决策树的节点分裂阈值。
在这个过程中我们虽然做的是对于单一决策树的节点分裂特征/阈值选定,但如果一棵树的节点分裂特征/阈值全都确定了,这棵树也就确定了。所以我们就可以通过使损失函数L(w)取最小值的方式,确定w,同时优化决策树的节点分裂(通过w)和不同弱分类器间的迭代优化(通过使L(w)最小)。即通过w确定目标决策树,通过w的取值带动L(w)取最小,进而实现弱分类器的迭代优化。

  • 29
    点赞
  • 287
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
文本分类系统django,是基于Django框架开发的一个用于文本分类任务的系统。它提供了一套完整的文本分类功能,可以帮助用户对文本进行分类和归类。 首先,该系统具备了良好的用户界面,用户可以通过Web浏览器访问系统并进行操作。在系统的主界面上,用户可以上传要进行分类的文本文件,并选择需要用于分类的模型。系统支持多常见的文本文件格式,如txt、csv等,用户可以根据自己的需求选择合适的文件格式进行上传。 其次,系统具备了训练模型的功能。用户可以通过系统提供的训练页面,选择合适的训练数据集,并进行模型的训练。系统支持多文本分类算法,如朴素贝叶斯、支持向量机等,用户可以选择适合自己需求的算法进行训练。在训练完成后,系统会生成对应的模型文件,用户可以保存模型文件以备后续使用。 此外,系统还提供了文本分类的预测功能。用户可以在系统的预测页面中,选择已训练好的模型文件,并输入待分类的文本,系统会根据选定的模型对文本进行分类,并显示分类结果。用户可以在界面上直观地查看文本分类的结果。 最后,该系统还具备了数据管理和权限控制功能。用户可以在系统中进行数据的管理,包括查看已上传的文件、删除不需要的文件等操作。系统还支持权限控制,可以根据用户的角色设置不同的权限,确保数据的安全性。 总结起来,文本分类系统django是一个功能完善的文本分类系统,它利用Django框架提供了一套强大的文本分类功能,包括文件上传、模型训练、分类预测、数据管理和权限控制等。用户可以通过系统进行文本分类任务,并获取准确的分类结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值