一种基于Xgboost分类算法的文本分类方法与流程

文档序号:12596643阅读:357来源:国知局
本发明涉及文本分类领域,更具体地,涉及一种基于Xgboost分类算法的文本分类方法。
背景技术
:文本分类方法已经在搜索引擎、个性化推荐系统、舆情监控等领域得到了广泛的应用,是实现高效管理和准确定位海量信息的重要一环。文本分类方法的常用框架是基于机器学习分类算法,即包含数据预处理、接着特征提取、特征选择、特征分类等步骤。特征提取即利用统一的方法和模型对文本进行标识,该方法或者模型可以表示文本的特征并且能够方便的转化成数学语言,进而转化成计算机能够处理的数学模型。现有的比较流行的文本表示方法有向量空间模型和潜在的语言分析模型。向量空间模型具有简单、计算方便、预处理少等优点,当然也具有忽略特征与特征之间的语义关系、表示文本的深度不够等缺点。特征选择是机器学习的关键问题之一,特征选择结果的好坏直接影响着分类器的分类精度和泛化性能。特征选择是从一组特征中挑选出一些最有效的特征从而降低特征空间的维数,并达到剔除不相关或冗余的特征、减少运行时间提高分析结果的可理解性、发现高维数据中隐藏的结构等效果。依据数据是否具有类别信息,特征选择可分为有监督和无监督两类。文本分类中常用的特征选择方法有:文档频次、互信息量、信息增益和卡方统计量(CHI)等方法。特征分类是文本分类中最后也是最重要的一环。朴素贝叶斯分类算法是一种典型的特征分类算法,根据贝叶斯公式,算出文本属于某特定类别的概率,其所需估计的参数很少,对缺失数据不太敏感,算法也比较简单,计算速度快,理论上与其他分类算法相比具有最小的误差率,但实际上并非总是如此,因为该方法假设属性之间相互独立,这个假设在实际应用中往往是不成立的。决策树算法易于理解和解释,能够同时处理数据型和常规型属性,在相对短的时间内能够对大型数据源做出可行且效果良好的结果,但决策树处理缺失数据时比较困难,容易忽略数据集中属性之间的相关性。其余的特征分类方法还包括有LR、KNN和SVM等。这些都是基学习器,集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。根据个体学习器的生成方式,目前集成学习方法大致可分为两类,即个体学习器间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法,前者代表是Boosting,后者代表是Bagging和“随机森林”。从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成。Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。Xgboost分类算法是基于Boosting的一种集成学习方法,相比传统的集成学习GBDT算法,Xgboost分类算法主要有以下八大优点:一、传统GBDT以CART作为基分类器,Xgboost分类算法还支持线性分类器。二、传统GBDT在优化时只用到一阶导数信息,Xgboost分类算法则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。三、Xgboost分类算法在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的分数的L2模的平方和。从偏差-方差权衡角度来讲,正则项降低了模型的方差,使学习出来的模型更加简单,防止过拟合。四、缩减:相当于学习速率。Xgboost分类算法在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。五、列抽样:Xgboost分类算法借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算。六、对缺失值的处理:对于特征的值有缺失的样本,Xgboost分类算法可以自动学习出它的分裂方向。七、支持并行。boosting是一种串行的结构,Xgboost分类算法的并行不是tree粒度的并行,Xgboost分类算法也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。Xgboost分类算法的并行是在特征粒度上的。决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),Xgboost分类算法在训练之前,预先对数据进行了排序,然后保存为块结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。八、可并行的近似直方图算法。树节点在进行分裂时,需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式情况下,贪心算法效率就会变得很低,所以Xgboost分类算法还提出了一种可并行的近似直方图算法,用于高效地生成候选的分割点。技术实现要素:本发明为解决以上现有技术提供的方法分类性能低、耗费内存大、分类准确率低的缺陷,提供了一种基于Xgboost分类算法的文本分类方法。为实现以上发明目的,采用的技术方案是:一种基于Xgboost分类算法的文本分类方法,包括以下步骤:S1.获取多个样本,所述每个样本包括文本内容和文本的标签;S2.将步骤S1获取的所有样本按照一定比例划分成训练样本和预测样本,其中训练样本组成训练集,预测样本组成预测集;S3.对于每个训练样本,将其文本内容中任意相邻的两个字用空格隔开,然后将该训练样本的标签作为Labeled-LDA的标签输入,并该训练样本的文本内容作为Labeled-LDA的文本输入;S4.设置Labeled-LDA迭代次数为K,然后对训练样本进行迭代训练;S5.每个训练样本经过迭代后得到两份文档,一份是关于字及其对应字编码的,一份是关于主题与字编码的,即每个主题下相应字编码出现的次数;整合两份文档,得到训练样本中每个字在每个主题下出现的次数;对于每个主题,按照对应的字的出现次数排序,选取与该主题最相关的m个字作为训练样本的LLDA字;S6.对于每个训练样本,统计其经过步骤S5得到的各个LLDA字在其文本内容中的出现次数,并将该次数作为该特征的值,将得到每个样本关于每个LLDA字的值,输入至Xgboost分类算法中,然后对Xgboost分类算法进行训练;S7.至此模型已经训练好,需要对预测集进行预测,即对预测集进行步骤S3~S5的步骤,然后利用训练好的模型对预测集中的每个预测样本进行预测分类。优选地,所述步骤S6中,若存在LLDA字在文本中的出现次数为0,则不将该LLDA字输入至Xgboost分类算法中,即普通的分类算法输入是矩阵形式,该方法输入是字典形式,节省内存,更方便快速合理地处理缺失值。优选地,所述K为1000。与现有技术相比,本发明的有益效果是:本发明提供的方法通过Labeled-LDA提取特征字来计算特征值,然后用Xgboost分类算法来进行文本分类。其与普通的向量空间模型来做特征空间,普通的分类算法来进行文本分类的方法相比所需耗费的内存得到了降低,这是由于中文文本中所包含的词成百上千万,维度较高,若以词为特征,耗费内存巨大,甚至无法单机处理,而常用汉字不超过一万个,经常出现的甚至只有两三千个,维度大大降低,而且Xgboost支持以字典而不是矩阵形式作为输入。同时本发明提出一种新颖的具有潜在语义的有监督特征选择算法Labeled-LDA算法,用Labeled-LDA来做特征选择既能利用LDA来挖掘大量语料的语义信息又能利用文本所包含的类别信息。而且预处理简单,不需要精心提取特征,加上强大的支持分布式的集成学习算法Xgboost,提高了分类的准确性和性能。附图说明图1为方法的流程图。具体实施方式附图仅用于示例性说明,不能理解为对本专利的限制;以下结合附图和实施例对本发明做进一步的阐述。实施例1本实施案例包括3个具体案例,分别对3个具有不同特点的文本语料库进行分类,即一个公开的英文语料库WebKB,剔除掉没有任何内容的样本,和两个中文语料库,其中一个是公开的长文本语料库:复旦大学文本分类语料库,另一个是中文短文本样本非常不平衡的语料库:新闻评论,分为正常和广告两种类别,正负比例达到2742/42416=0.065这样的级别。表1文本分类数据集概要情况如图1所示,本发明所述基于Xgboost分类算法用Labeled-LDA做特征提取的文本分类方法的具体实施步骤如下:步骤1:文本预处理预先准备一批已分类的文本集,如3个案例,按照8:2的比例随机划分训练集和预测集(新闻评论),如公开的数据集已经存在划分则直接采用(WebKB和复旦文本分类),对所有文本进行去燥,统一编码为UTF-8,对于中文文本,用空格区分每一个字方便后面的程序处理,由于本发明是基于字特征的,常用的字加上标点符号也不会超过一万个,而Labeled-LDA有强大的特征选择能力,故中文文本分类常用的去掉标点符号、数字、停用词等预处理过程都可以省略掉,从实验结果也可以看出,这样的预处理不是必须的,对于英文文本,则其预处理包括全部大写转为小写、标点符号用空格代替,这样更能区分单词的界限和符合英文的书写习惯。步骤2:用Labeled-LDA对训练集进行特征选择本发明实验使用的是斯坦福自然语言处理工具TMT。先设置Labeled-LDA的各种参数,包括文本分割方式和文本过滤方式、标签个数、迭代次数等,文本分割方式采用空格区分,标签个数看具体的语料集实际情况,迭代次数统一为1000次,训练结束后,得到两个文件,一个是字对编码的文件,一个是每个字编码在每个主题下出现的次数的文件,合并这两个文件得到每个字在每个主题下出现的次数的文件,然后在每个主题下,对每个字出现次数排序,取出出现次数最高的前N个,则得到的这些字就是经过Labeled-LDA特征选择后留下的字,这些字可能存在重复,排除冗余后计这些词为LLDA词,具有较丰富的语义信息,同时又是在标签这个强有力的监督信息下训练得到的结果,具有很强的特征表达能力。步骤3:把训练集合预测集处理成Xgboosts的输入格式Xgboost的输入格式非常简单方便和合理,对于训练集和预测集的每一个样本,因为把字看成是特征,处理到当前字,如果该字是LLDA字,则相应的LLDA字所对应的特征的特征值加1,对于每一个样本,没有出现过的LLDA字,则相应的LLDA字所对应的特征的特征值为0,这个特征不用作为Xgboost的输入;步骤4:Xgboost分类算法的参数设置,训练和预测设置Xgboost分类算法的参数,选择综合效果最优的参数,最终设置的Xgboost分类算法参数为:迭代次数为200,类别数目(具体而定)、分类器类型为gbtree、目标函数为multi:softmax、学习速率eta=0.3、树的最大深度max_depth=6等,训练得到的模型对预测集进行分类;步骤5:评估模型性能由于各个数据集差异较大,故针对不同的数据集采用不同的评判标准,使得评判标准更具合理性。对于WebKB,有4个类别,采用微平均F1值(micro-F1)和宏平均F1值(macro-F1)来评估;定义如下:Pi为第i个类别的准确率,Ri为第i个类别的召回率,n为类别综述。复旦文本分类用微平均准确率(micro-P)来评估;新闻评论由于类别特别不平衡,采用负样本的准确率P、召回率R以及F值来评估。本发明定义的模型记为LLDA-XG,实验结果如下:表2WebKB语料集上的分类性能实验结果RCCCentroidNBWinnowSVMLLDA-XGmicro_F189.6479.9586.4581.4089.2691.40macro_F188.0278.4786.0177.8587.6690.48表3新闻评论语料集上的分类性能实验结果BayesSGDCBagging+KNNSVMRFGBDTAdaboostLLDA-XGP69.5577.7197.0093.6596.492.2295.8094.52R91.6291.9885.2086.8189.8488.7785.5692.34F值79.0884.2490.7090.1092.9990.4690.4093.42表4复旦文本分类语料集上的分类性能实验结果从表2、表3和表4可以看出LLDA-XG模型性能在WebKB语料集、新闻评论语料集以及复旦本文分类语料集上都取得很好的效果,在WebKB语料集上micro_F1和macro_F1值都超过了90;在新闻评论语料集上LLDA-XG模型的准确率不是最高的,但是召回率和F值都是最高的,说明LLDA-XG模型既能保持很高的准确率又能保持很高的召回率,更加注重性能的均衡。在复旦文本分类语料集上,实验结果参考的是中国科学院大学研究神经网络和词向量结合的来斯惟博士的毕业论文,LLDA-XG模型表现出非常出色,分类准确率比循环卷积神经网络还要高,而且预处理非常少,运行时间也快,单机性能普通的计算机四五分钟就能得到结果,而神经网络则需要大量的计算时间。表5LLDA-XG在WebKB语料集上的分类时间性能实验结果特征数2154119257288micro-F190.2490.8291.4091.61macro-F189.1989.9890.4890.69时间(秒)3.7404.5605.7598.984表6LLDA-XG在新闻评论语料集上的分类时间性能实验结果特征数1542896744154P94.3993.9194.5394.13R90.0290.7392.3491.44F92.1592.2993.4292.77时间(秒)6.7397.7168.75610.589表7LLDA-XG在复旦文本分类语料集上的分类时间性能实验结果特征数40866513296707准确率94.5995.2095.4195.39时间(秒)145.701206.362278.52351899874816342.354表5中,特征数从215增加到411个时,micro-F1增长了0.58,macro-F1增长了0.79;特征数从411增加到925时,micro-F1增长了0.58,macro-F1增长了0.5,;特征数从925增加到7288时,特征数增长了7倍左右,而micro-F1和macro-F1都仅增长了0.21,非常不明显,运行时间将近增长一倍。表6中,特征数从154增加到289时,准确率P反而下降0.48,召回率R增长了0.71,F值增长了0.14;特征数从289增加到674时,准确率增长了0.62,召回率增长了1.61,F值增长了1.13,但是特征数从674增加到4154时,准确率下降0.4,召回率下降0.9,F值下降0.65。在复旦文本分类任务上,特征数从408增加到665时,准确率增长了0.61,特征数从665增加到1329时,准确率增长了0.21,特征数从1329增加到6707时,准确率下降了0.02。从表5、表6和表7可以看出,LLDA-XG模型在特征数上,特征数越多消耗时间越长,但是分类性能增长缓慢,甚至到后期特征数越多反而分类性能下降,这可能是训练过度造成过拟合了。这也说明特征选择的重要性,对于分类性能影响最大的往往是少数的特征,特征中存在大量的冗余特征甚至是噪音特征,特征越多消耗运算时间越多,性能提升却非常有限甚至产生过拟合。同时也说明Labeled-LDA具有很强的特征选择能力,不管是对中文还是英文,不管是长文本还是短文本,从大量的特征中选出非常优质的特征,使得整体运算时间下降,性能稳定高效。而且本发明的特征提取是基于字的,提取非常方便,不需要人工也不需要专家知识去耗费大量资源去提取特征,预处理简单运算时间少,结合Xgboost分类算法的快速高效、可处理缺失值的强大能力,整体性能优越稳定。总之,通过实验验证,本发明所提出的文本分类模型LLDA-XG,能广泛应用于各自文本分类任务,其预处理简单快速,整体运算时间和性能都非常突出,具有很高的稳健性和实用价值。显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1