分享-文本分类实验报告.docx

上传人:jian****018 文档编号:9163524 上传时间:2020-04-03 格式:DOCX 页数:31 大小:486.48KB
返回 下载 相关 举报
分享-文本分类实验报告.docx_第1页
第1页 / 共31页
分享-文本分类实验报告.docx_第2页
第2页 / 共31页
分享-文本分类实验报告.docx_第3页
第3页 / 共31页
点击查看更多>>
资源描述
北京邮电大学2013-2014学年第1学期实验报告(代码就不分享了,都是文本格式处理的代码.欢迎大家批评指正!) 课程名称: 数据仓库与数据挖掘 实验名称: SVM文本分类 实验完成人:姓名: 学号: 姓名: 学号: 姓名: 学号: 日 期: 2013 年 11 月 实验一:SVM文本分类1. 实验目的 熟悉爬虫的使用,可以利用网络爬虫抓取所需的网络语料 熟悉中文分词软件,可以熟练使用接口完成分词任务 熟悉文本分类必要的预处理步骤,并运用到实验实践中 熟悉特征提取方法,包括CHI-square 和 LDA特征提取 了解SVM机器学习方法,可以运用开源工具完成文本分类过程2. 实验分工XXX:(1) 运用爬虫对语料库新闻的收集(2) 对数据的预处理工作(3) 后期的不同对比试验的测试XXX:(1) 特征的提取(2) 训练集和测试集的生成(3) 后期的不同对比试验的测试3. 实验环境中文分词与LDA特征提取运行环境: (1) Java version 1.7(2) 开发环境:eclipsePython代码运行环境:(1)python 3.24. 主要设计思想4.1 实验工具介绍Web Crawler: 由实验室集体开发的网络爬虫,不对外公开。可以方便的通过正则表达式的配置,轻松的完成对网络数据的提取,并且可以根据需求完成过滤老新闻、不合适的网址格式等功能。最终的爬取结果文件已经经过程序处理,可以直接得到最需要得到的内容。例如:在此实验中,最终的爬取结果即为已经从网站中提取出的新闻标题和正文。ICTCLAS:全称为汉语词法分析系统。具有简易的图形演示界面,和不同语言的API接口,开发者可以根据自己的需求选择不同的接口。主要功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典;在今年的12月中下旬会发布ICTCLAS2014版本。Lib svm: 是由台湾大学林智仁副教授等开发的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包。除了主体训练,测试的程序,还提供了一些使用的工具,例如子集的选择,参数的选择与归一化的操作等实用的方法。JGibbLDA: 使用JAVA实现了Latent Dirichlet Allocation(LDA),使用了Gibbs采样来进行参数估计。4.2 特征提取与表达方法的设计在此次实验中,我们采用了两种特征提取的方法。针对不同的方法提取的特征分别作了文本分类实验。所有的特征提取与特征表达的详细步骤会在5.3种进行描述。CHI特征提取:根据上面的公式,最终建立成了数据字典。经过CHI特征提取建立成数据字典,数据字典如图所示(已经经过了按照字母排序处理):在每个词的前面是数据字典中,每个词对应的id。最终的特征向量表达方法为:Class_id word_id:tf-idf 第一列class_id为此文本所属的新闻类别, word_id为数据字典中每个词对应的word_id,tf-idf为每篇文档中,对应的tf-idf值。LDA特征提取:LDA是主题模型的一种。假设一篇文章可以由不同的主题组成,把每篇文章中的主题分布概率来当作这篇文章的特征,从而形成了特征向量。主题的数量可以由人工根据情况指定或者通过其他方法科学的得到合理也就是概率最大的主题数量,再对其进行人工指定。经过LDA主题模型分析之后,在通过简单的处理,变换成SVM可以接受的输入格式,会得到如下的特征向量:图中的第一列为文本的所属类别。后面的为topic_id:probability。Topic_id为相应的主题id,probability为这篇文档此主题的分布情况。两种特征提取的方法,都将会在5.3中进行详细描述。4.3 分类算法的选择 我们使用的SVM(Support Vector Machine)分类算法,是最大margin分类算法中的一种。SVM是一种可训练的机器学习方法,在小样本中可以得到优秀的训练模型。图1 如图中所示,SVM分类算法可以根据最边界的样本点,也就是支持向量,达到二分类的目的。当数据的样本线性不可分时,会通过核函数的映射,把样本转换到线性可分的向量空间。所以核函数的选择也会影响最终的效果。 如果遇到了多分类的问题,如下图所示,可以通过多个SVM训练模型完成多分类的任务。现在的SVM工具包都提供了自动的多分类接口。图2 此外,SVM与logistic regression非常相似。Logistic regression 虽然其名字当中是regression也就是回归,但是实际上此算法是一个分类算法。为了达到性能和效率兼备,对不同情况运用不同算法的场景进行了描述:n为特征的数量,m为训练样本的数量(1) 如果n相对m大很多,可以使用logistic regression 或者 使用SVM ,核函数选择线性核函数(2) 如果n很小,m的大小适中,使用SVM,核函数选择Gaussian函数(3) 如果n很小,m很大,需要添加更多的特征,然后使用logistic regression 或者使用SVM,不使用核函数。神经网络的算法的效果会优于上面的算法,但是训练的时间非常长,这也是为什么很多人选择SVM的原因之一。4.4 性能评估方法 最终性能的评价使用了准确率(P),回召率(R)和F1-Score来评价分类效果。为了解释每种评价标准的计算方法,先看如下表格: 实际情况 1代表真实情况此类,0代表不属于预测结果1 代表预测属于此类 0代表预测不属于此类 101True positiveFalse positive0False negativeTrue negative表1P = True positive / (True positive + False positive)R = True positive /(True positive + False negative)F1-Score = (2 * P * R)/(P + R) 在此实验中,我们分析了每种特征提取方法最终在每类与总体的准确率、召回率和F1-Score的结果。关于结果分析的详细描述见5.6。5. 实验过程基于CHI特征提取的实验流程图:基于LDA特征提取的实验流程图:5.1 文本分类语料库的采集通过网络爬虫在http:/news.qq.com爬取新闻语料。爬取的类别有:Sport运动Finical经济Edu教育Ent娱乐Baby婴儿Tech科技Games游戏Comic动漫Auto汽车house房产在语料库的收集中遇到的主要问题为,有的分类的网页会得到404的爬取结果,原因在于访问的对方服务器的文件夹年份过于早,网页已经被删除,也就是过期网页。经过对这些网页爬取结果的分析,大部分此类网页的爬取结果都为1KB(在windows操作系统下,最小的文件只有1KB,没有更小的文件),为了提高最终分类的效果,对所有爬取的新闻文件小于1KB的都做了删除处理。另外,也对比较大的文件做了处理。经过对爬取的文件的分析,部分新闻文件都是代码没有新闻内容,对于这样的文件大部分在10、50KB以上,一篇新闻的内容大于150KB的可能性非常小,所以,对于此种异常文件,也做了删除操作。经过以上处理,对新闻文件的分配如下:(1) 训练集:一共10类,每类的训练集为5000篇新闻。总共50,000篇训练集。(2) 测试集:运动10223经济6906教育9416娱乐34937婴儿14948科技12156游戏23945动漫12306汽车10305房产4373总计139,515篇 在后期的实验结果中,我们也对设计了不同的训练集和测试集的比例进行了实验,详细结果分析见5.6。5.2 数据预处理(1) 对所有新闻文件使用JAVA接口进行分词。效果如图:(2) 对每一类新闻的训练集进行提取名词、去停用词的处理,并且,为了以后方便计算每个词的tf,同时记录每个单词在文档中的tf。例如:汽车类(automatic)的其中一篇新闻,经过处理,转换成如下的文件内容,为了描述方便称此类文件为news_word_frequence文件:(3) 经过对每一类新闻训练集进行如上处理,分别将每一类的所有news_word_frequence文件的单词进行汇总,同时记录每个词的词频,最终得到如下文件:图中一共有10个文件,代表了10类新闻中的出现的所有单词(已经经过了取名词、去停用词的处理,并且已经根据词频进行了降序排序)例如,auto.words文件如下:第一列为单词,第二列为此单词出现的频次。在我们的实验中,去除了频次低于5次的单词。处理过程如图所示:5.3 特征提取和表达 在本实验中使用了CHI特征提取与LDA特征提取两种方法。下面分别对其提取过程进行描述。CHI特征提取:在此公式中,变量的含义如下所示:N:所有文档的数目A:在该分类下,包含此单词的文档数量B:不在该分类下,包含此单词的文档数量C:在该分类下,不包含此单词的文档数量D:不在该分类下,不包含此单词的文档数量由于最后,只需要根据CHI的卡方值进行排序,为了简化运算,对公式做了简单的简化处理:简化后的计算方法为:(AD-BC)2(A+B)(C+D) ,因为在排序的步骤中,N,(A+C),(B+D)不会对最后的排序造成影响,所以做了简化处理。(1)因为训练集的数量一共为50000篇,计算CHI值的时间比较长,所以,先分别计算了每一类下每个单词的A,B,C,D值,并输出到文件。如图所示:图中的每一个*.abcd文件,代表着每一类新闻的每一个单词的A,B,C,D值的信息。例如,下图所示:auto.abcd文件第一列为汽车类(automatic)中的单词,往后以此为此单词的A,B,C,D值。(2)在得到上述文件之后,便可以根据简化后的公式,计算每个单词的CHI值,降序排序后,最终得到如下文件: 比如,在auto.chi文件中,如下图所示:经过降序排序以后,发现排列靠前的单词几乎全都与汽车相关。(4) 分别取每一类的排序前1000个单词,经过汇总,去重,得到最终的数据字典,一共是7544个单词,同时对这些词进行唯一的id标识。得到chi.features文件。如图所示:第一列为单词的id,第二列为数据字典中的单词。(5) 根据数据字典,将每篇训练集新闻文档和测试集新闻文档转换成特征向量。如图中所示:第一列为文本类型id,其他列分别为word_id:tf-idfLDA特征提取:LDA的特征提取使用了JGibbLDA开源工具。(1) 根据要求,分别将训练集和测试集生成对应的格式要求。输入格式如下:Mdocument1document2.documentMdocumenti = wordi1 wordi2 . wordiNiM为总文件的个数得到的文件如下所示:50,000代表着训练集的数量。每一行代表一片文档,其中的单词代表每篇文档中出现的名词(已经经过取名词、去停用词等预处理)。(2) 首先对训练集进行迭代,最终得到5个输出文件:.others .phi .theta.tassign.twords其中.twords 包括了每个主题当中,最可能的出现的单词。如图所示:经过人工判断就可以很明显的看出,LDA的主题分类效果是很好的。另一个重要的文件是.theta文件。此文件包含了主题-文档的分布情况,也就是p(topict|documentm)。如图中所示:每一行代表一个文档,每一列代表一个主题。(3) 基于上面对训练集经过处理得到的5个文件,对测试集文件进行迭代,得到对应的主题-文档分布文件。(4) 由于此程序的输出格式并不是严格的按照lib svm的输入格式,需要编写代码转换成相应的训练文件格式。转换完成后,如下图所示:5.4 训练过程 在本次实验中,我们做了多组实验。在这里仅列出训练过程的步骤,详细的结果分析见5.6.(1) 使用checkdata.py工具对训练集和测试集进行检测,是否有格式不合法的地方。(2) 通过数据格式检测之后,通过svm-scale命令对训练集和测试集进行归一化操作,下限为0,上限为1(3) 使用grid.py工具,对训练集进行调参,得到最优的c,g的值。在调参的过程中,会绘制调参等高线图,如图所示:此图为调参中的动态等高线图,其中从右上角的位置可以看出,绿色线代表目前最高水平,当前的最好的参数c=32,g=0.03125,但是,在程序调参完成以前,这只是当前局部最优参数,并非全局最优参数。(4) 在得到最终的最优参数之后,使用svm-train命令训练,得到model5.5 测试过程(1) 在上一节中,得到了最终的训练模型,打开模型文件可以看到:nr_class:为新闻分类的个数nr_sv: 为每类的支持向量的个数(2) 使用svm-predict命令,加载model文件,进行测试,并且指定输出文件(3) 完成测试之后,控制台只给出了精确率的结果。并不符合我们实验的结果分析的需求。根据第(2)步的输出文件,可以计算每类的预测和平均的预测精确率、召回率和F1-Score。5.6 实验结果和性能评估在本节中,详细的描述了不同实验设计的结果和分析。(1) 得到特征向量文件之后(未经过归一化处理),直接使用lib svm的默认参数,进行模型训练,得到的模型用于测试。Precision为:57.1838%(79780/139515)可以看出结果比较差。在打开模型文件之后,可以发现所有的nr_sv值均为5000,这意味着一共5000*10个样本点,每类的样本点都作为了自己的支持向量,这明显是不合理的。(2) 为了解决上述问题,使用svm-scale对训练集和测试集进行归一化处理,下限为0,上限为1。再次使用lib svm默认参数训练模型,进行测试,可以得到:Precision为:75.8535%(105827/139515)由此可以推断出,进行归一化处理,是必要的一步。它可以大大的提高分类效果。(3) 为了更好的提高分类效果,使用grid.py工具进行调参。由于调参是一个漫长的过程,我们分别做了如下对比试验:从50,000训练集中随机挑选出10,000子训练集调整参数使用最终全局最优参数训练对应的10,000篇训练集得到model使用最终全局最优参数训练所有的50,000篇训练集得到model使用50,000训练集调整参数使用最终全局最优参数训练所有的50,000篇训练集得到model组实验用来检测,使用子训练集得到的最终参数是否适用于所有的训练集,还是更适用于子训练集组实验用来与实验进行对比,检测所有子训练集调参得到的参数与全部训练集调参得到的参数的最终分类效果(4) 由于目前LDA的topic数量是由人工指定的(已经有文献指出如何科学的选择LDA的topic数量,但是并没有在本次实验中使用),我们选择了topic数量分别为50,100,200来做实验。同样也做了第(3)步的实验对比。(5) 结果如表中所示:表1:使用10,000训练集调参,调参结果(大约计算了10个小时左右)分别用于子训练集生成模型(subset model)和50,000全部训练集(all model),分类效果如下:cgrateSubset Model (13.9515)All model(2.7903)Topic 508.02.089.89%89.2298%83.5373%Topic 1008.00.590.31%90.0692%76.9881%Topic 2008.00.589.52%66.9132%59.4338%CHI4.00.2592.80%90.8906%92.3033%注:表中的subset model与all model中的小数表示测试集与训练集的数量的比值从表格中可以得到以下信息:subset model的测试集大小:训练集大小的比例为13.9515。经过此列的数据观察,大部分都在90%左右,说明在测试集非常大的情况下,仍然能够得到比较好的分类效果。通过观察,所有的model,CHI的特征提取方法均大于LDA主题模型。即使这样,值得我们注意的是,CHI的良好性能是建立在7544维度的基础之上的。而LDA主题模型建立在50-100维的基础上,甚至在100维度的时候仍然能够达到了90.0692%的良好分类效果。LDA在维数大大低于CHI维度的情况下,可以达到比较好的分类效果已经值得引起注意。从表中1-3行来看,LDA主题模型的TOPIC数量并不是越少越好,也不是越多越好。LDA主题模型的TOPIC数量,需要经过科学方法的选择,才会使最终的分类效果达到最优。可以参考论文:Griffiths T L, Steyvers M. Finding scientific topicsJ. Proceedings of the National academy of Sciences of the United States of America, 2004, 101(Suppl 1): 5228-5235.更重要的结论是,通过上表可以观察出,通过训练子集得到的最优参数并不一定适用于用来训练全部的训练集。因此,基于上面的结论,我们为了试图得到更好的分类效果,我们又做了如下实验。(1)使用grid.py工具对全部训练集进行调参(大约计算了6-8天左右),使用最终调参结果,训练模型。经过测试,得到以下结果:表2:Model 1为训练子集调参的结果用于整个训练集训练模型得到的测试结果;Model 2为整个训练集都用于调参,最终得到的测试结果Model 1Model 2TOPIC 5083.5373%90.1143%TOPIC 10076.9881%90.4204%TIPIC 20059.4338%88.026%CHI92.3033%91.7486%从表中我们可以得到:1-3行表明:使用子集训练集得到的最优参数并不一定适用于训练所有的训练集。虽然第4行中,Model 2略低于Model 1,仍然得到了不错的分类效果,而且非常接近。(2)以下,是我们基于所有训练集得到的参数训练的模型的结果图表:LDA TOPIC 50:LDA TOPIC 100:LDA TOPIC 200:CHI:从上述表格中可以看出:最影响分类效果的均是FINANCE类,也就是经济类新闻。同时,我们也绘制了分类效果最好的图表。由此可以看出,不同类新闻对于不同训练出的模型的影响大体是保持一致的。最后,给出基于所有训练集得到的最优参数得到的模型测试结果和全程实验最优结果的柱状图:也可以得到结论,TOPIC的数量需要科学选择才能达到最优。6. 实验总结经过此次试验,学习了文本分类的整体流程,熟悉了机器学习中SVM的原理与使用方法,虽然已经取得了比较好的分类效果,但是还有以下需要改进的地方。(1) 从图表中可以看出,经济类新闻最影响分类效果,有可能与原始语料有关,可能存在噪音,可以从语料的选择和处理上改进。(2) LDA模型虽然在整个实验中,并没有达到最高分类效果,但是已经与此次实验中最高分类效果非常逼近,并且LDA模型的维数远远低于CHI的特征选取维数,由此可以看出LDA模型的运用是非常有效的。可以通过阅读和学习相关文献,对LDA模型的运用更加熟练,科学的选择TOPIC的数量。并且可以考虑加大训练集来考察对性能的影响。(3) SVM有不同的核函数,不同的核函数会影响SVM的效率和最终的分类效果,这也是提升性能的一个需要研究的地方。(4) 在特征的提取中,本次实验只关注了对于字典中出现词对分类的影响,却没有关注没有出现的词的信息的利用。如果考虑这一方法,经济类新闻对整体分类效果的负面影响应该会大大减少,同时也能大大的增强其他新闻类别的分类性能。(5) 此次使用了50,000篇训练文档,139,515篇测试文档,但是在大数据下,数量远远超过此次实验使用的数量的数量级。为此,在ICML2013的会议中,Scalable也成为了一个值得注意的焦点。Scalable可扩展性用于描述怎样可以在大数据下科学的采样。可以详细阅读,ICML2013会议上的文献:Meng X. Scalable Simple Random Sampling and Stratified SamplingJ.来考虑大数据学习。在此文中提出了如何科学的在大数据中提取样本,和在数据流中提取样本,同时也提出了分层提取样本的方法,比如在正例和负例集中如何采集样本。附:1、 降维以前名词(已经取名词、去停用词)的数量:1235982、 调参所需时间:调参系统环境:VMware Ubuntu12.10,内存2G,32位样本数量10,00050,000LDA TOPIC 508-10个小时左右5-6天左右LDA TOPIC 100LDA TOPIC 200CHI(7544)10+小时9-10天3、 测试所需时间:测试集:139,515篇测试环境:Win8.1,内存8G,64位,CPU i7 2.40GHzLDA TOPIC 505分钟LDA TOPIC 1009分钟LDA TOPIC 20026分钟CHI39分钟
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!