北邮数据挖掘作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京邮电大学

2015-2016学年第1学期实验报告

课程名称:数据仓库与数据挖掘

实验名称:文本的分类

实验完成人:

姓名:学号:

日期: 2015 年 12 月

实验一:文本的分类

1.实验目的

1. 了解一些数据挖掘的常用算法,掌握部分算法;

2. 掌握数据预处理的方法,对训练集数据进行预处理;

3. 利用学习的文本分类器,对未知文本进行分类判别;

4. 掌握评价分类器性能的评估方法。

2.实验分工

数据准备、预处理、LDA主题模型特征提取实现、SVM算法都由范树全独立完成。

3.实验环境

●操作系统:win7 64bit 、Ubuntu-14.04-trusty

●开发环境:java IDE eclipse 、Python IDLE

4.主要设计思想

4.1实验工具介绍

1.Scrapy 0.25

所谓网络爬虫,就是一个抓取特定网站网页的HTML数据的程序。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的URL地址,所以,如何保证我们抓取到了网站的所有HTML页面就是一个有待考究的问题了。一般的方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然后进入到新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样。

Scrapy是一个基于Twisted,纯Python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。Scrapy 使用Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。

2.JGibbLDA-v.1.0

jGibbLDA是java版本的LDA实现,它使用Gibbs采样来进行快速参数估计和推断。LDA 是一种由基于概率模型的聚类算法。该算法能够对训练数据中的关键项集之于类簇的概率参数拟合模型,进而利用该参数模型实施聚类和分类等操作。

3.ICTCLAS50

中科院计算技术研究所在多年研究基础上,耗时一年研制出了基于多层隐码模型的汉语词法分析系统ICTCLAS,该系统有中文分词,词性标注,未登录次识别等功能。

4.libSVM-3.20

libSVM是台湾大学林智仁教授等开发设计的一个简单、易用和快速有效的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特征提取后,可以得到训练集输出结果,然后根据训练集的输出结果来推测测试集的主题模型。测试集的部分代码如下:

训练集和测试集的输出结果如下:

相关文档
最新文档