北邮数据挖掘作业

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

北京邮电大学2015-2016学年第1学期实验报告课程名称:数据仓库与数据挖掘实验名称:文本的分类实验完成人:姓名:学号:日期:2015年12月实验一:文本的分类1.实验目的1.了解一些数据挖掘的常用算法,掌握部分算法;2.掌握数据预处理的方法,对训练集数据进行预处理;3.利用学习的文本分类器,对未知文本进行分类判别;4.掌握评价分类器性能的评估方法。2.实验分工数据准备、预处理、LDA主题模型特征提取实现、SVM算法都由范树全独立完成。3.实验环境操作系统:win764bit、Ubuntu-14.04-trusty开发环境:javaIDEeclipse、PythonIDLE4.主要设计思想4.1实验工具介绍1.Scrapy0.25所谓网络爬虫,就是一个抓取特定网站网页的HTML数据的程序。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的URL地址,所以,如何保证我们抓取到了网站的所有HTML页面就是一个有待考究的问题了。一般的方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然后进入到新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样。Scrapy是一个基于Twisted,纯Python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。Scrapy使用Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。2.JGibbLDA-v.1.0jGibbLDA是java版本的LDA实现,它使用Gibbs采样来进行快速参数估计和推断。LDA是一种由基于概率模型的聚类算法。该算法能够对训练数据中的关键项集之于类簇的概率参数拟合模型,进而利用该参数模型实施聚类和分类等操作。3.ICTCLAS50中科院计算技术研究所在多年研究基础上,耗时一年研制出了基于多层隐码模型的汉语词法分析系统ICTCLAS,该系统有中文分词,词性标注,未登录次识别等功能。4.libSVM-3.20libSVM是台湾大学林智仁教授等开发设计的一个简单、易用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在windows系列系统的可执行的文件,还提供了源代码,方便改进、修改以及在其他操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验的功能。该软件可以解决C-SMV、v-SVM等问题,包括基于一对一算法的多类模式识别问题。4.2特征提取与表达方法的设计实验中特征提取使用的是LDA。LDA是主题模型的一种。LDA是目前机器学习,数据挖掘经典且热门的算法。一篇文章可以由不同的主题组成,在用LDA进行提取文章特征的时候,把每篇文章的主题分布概率当作该文章的特征,从而可以得出文章的特征向量。文章的主题数量可以人工指定,不同的主题数量最后会得到不同的准确率,实验中要根据实际情况,选择可以达到最大准确率的主题数量。4.3分类算法的选择实验中分类算法使用的是SVM。SVM是一种监督式学习方法,可以广泛的用于统计分类和回归分析。SVM构造一个超平面,这些平面可能是高纬的,甚至可能是无限维的。在分类任务中,它的原理是,将超平面放置在这样一个位置,使得两类中接近这个位置的距离都最远。我们考虑两类线性可分问题,如果要在两类之间画一条线,那么按照SVM原理,我们会找两类之间最大的空白间隔,然后在空白间隔的中点画一条线,这条线平行于空白间隔。通过核函数,可以使得支持向量机对非线性可分的任务进行分类。4.4性能评估方法实验选择的性能评估方法用到了准确率(precision)和召回率(recall)。具体计算方法如下:precision=a/b×100%recall=a/c×100%其中a表示正确预测类别i的数量,b表示预测结果中预测为类别i的数量,c表示实际为类别i的数量。比如“汽车”类别一共有1000篇文档,也就是c=1000,最终的预测结果中有1200篇(对所有类别文档进行预测)为“汽车”,也就是b=1200,而真正属于“汽车”类的有900篇,也就是a=900。那么“汽车”类的准确率为900/1200×100%=75%,召回率为900/1000×100%=90%5.实验过程5.1文本分类语料库的采集选择腾讯新闻作为爬虫的目标网站。选取腾讯新闻下的体育、军事、房产、动漫、教育、文化、游戏、科技共八个分类进行文本爬取,设定目标为每个类2000篇。5.2数据预处理将每篇文档通过使用中科院提供的ICTCLAS的jni版本软件包将文档进行中文分词和词性标注。通过正则表达式将名词提取出来,并且根据停用词表去停用词。最后写在文件系统中。按照jGibbLDA的输入格式,每篇文档的经过去停用此处理后的名词占一行。如下图所示,每行代表一片文档,最上面的数字代表文档的数量:5.3特征提取和表达实验采用了LDA特征提取。使用了开源包jGibbLDA作为进行特征提取。jGibbLDA对数据输入格式有一定的要求。在数据预处理阶段,我们生成的文档格式就是按照jGibbLDA的输入格式进行生成的。在实验过程中,根据相关资料,分别将主题数设置为50,75,100,然后进行测试,结果证明当主题数75时候正确率是相对最高的。实验采用的迭代次数为100。训练集部分代码如下:对训练集进行LDA特征提取后,可以得到训练集输出结果,然后根据训练集的输出结果来推测测试集的主题模型。测试集的部分代码如下:训练集和测试集的输出结果如下:为了之后使用libSVM进行分类,分别将训练集和测试集输出结果中的.theta文件转换成libSVM的输入格式。5.4训练过程使用libSVM的checkdata.py工具检查训练集和测试集的输入格式是否正确。如果格式没有错误,则使用svm-scale分别将测试集和训练集归一化到0到1之间。归一化的目的是为了防止某一特征值太大而主导了结果。然后使用libSVM的grid.py对训练集进行调参。最终的到的参数结果为:c=32.0,g=0.0078125,rate=91.79。使用libSVM的svm-train和得到的参数对训练集进行训练,得到最终模型。5.5测试过程使用libSVM的svm-predict对加载训练后的模型,对测试集进行预测。输出的结果只给出了精确率的结果,我们需要写程序来计算我们需要的准确率和召回率。5.6实验结果和性能评估实验结果如下表所示:类别准确率召回率体育83.91%93.9%军事95.18%94.8%动漫92.78%95.1%房产95.6%89%教育89.95%90.4%文化93.83%94.3%游戏93.90%95.5%科技93.68%84.5%平均92.35%92.19%通过表格可以看出:平均准确率为92.35%,平均召回率为92.19%。准确率中最高的是“房产”类,最低的是“体育”类。召回率中最高的是“游戏”类,最低的是“科技”类。6.实验总结首先,通过这次试验对文本数据挖掘的基本思路,基本过程有了一个大致的了解,通过老师的讲解,对试验各个步骤需要注意的细节也都有了基本的认识。然后,对文本数据挖掘里的数据预处理、特征选择有了清晰的认识,这两个步骤对于数据挖掘而言是至关重要的两个步骤。如果数据预处理没有做好,就会有大量噪声对模型产生干扰,LDA特征提取过程中的主题数量对于实验结果有很强的影响,要根据实际情况对其进行选优。另外,通过这次试验基本认识SVM的使用方法,对SVM的原理有了进一步的认识,可以熟练使用libSVM进行实验。

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功