数据仓库与及数据挖掘文本分类实验报告.docx

上传人:b****3 文档编号:11703353 上传时间:2023-06-02 格式:DOCX 页数:11 大小:164.27KB
下载 相关 举报
数据仓库与及数据挖掘文本分类实验报告.docx_第1页
第1页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第2页
第2页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第3页
第3页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第4页
第4页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第5页
第5页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第6页
第6页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第7页
第7页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第8页
第8页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第9页
第9页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第10页
第10页 / 共11页
数据仓库与及数据挖掘文本分类实验报告.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据仓库与及数据挖掘文本分类实验报告.docx

《数据仓库与及数据挖掘文本分类实验报告.docx》由会员分享,可在线阅读,更多相关《数据仓库与及数据挖掘文本分类实验报告.docx(11页珍藏版)》请在冰点文库上搜索。

数据仓库与及数据挖掘文本分类实验报告.docx

数据仓库与及数据挖掘文本分类实验报告

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

 

课程名称:

数据仓库与及数据挖掘

实验名称:

文本的分类

 

实验完成人:

姓名:

学号:

 

日期:

2015年12月

 

实验一:

文本的分类

1.实验目的

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

2)掌握文本建模的方法,对语料库的文档进行建模;

3)掌握分类算法的原理,基于有监督的机器学习方法,训练文本分类器;

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

5)掌握评价分类器性能的评估方法

2.实验分工

独立完成

3.实验环境

基于Windows平台,使用eclipse开发。

4.主要设计思想

4.1实验工具介绍

Eclipse:

一个开放源代码的/基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

Eclipse最早是由IBM开发的,后来IBM将Eclipse作为一个开放源代码的项目发布。

现在Eclipse在eclipse.org协会的管理与指导下开发。

4.2特征提取与表达方法的设计

在此次实验中,我考虑了CHI特征提取的方法来建立数据字典。

详细步骤见5.3描述。

根据CHI特征提取,最终建立成数据字典,数据字典记录在目录E:

\DataMiningSample\docVector下的allDicWordCountMap.txt文档中。

最终的特征向量表达方式为:

文档类别标识_单词词频。

如:

alt.atheism_abstact1.0。

其中alt.atheism为此文本所属的类别,abstact为对应的单词,1.0为该单词的词频数。

4.3分类算法的选择

本次实验使用的是朴素贝叶斯分类算法,朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。

朴素贝叶斯分类器基于一个简单的假定:

给定目标值时属性之间相互条件独立。

即:

朴素贝叶斯模型:

属于V集合,其中Vmap是给定一个example得到的最可能的目标值,a1…an是这个example里面的属性。

这里面,Vmap目标值就是后面计算得出的概率最大的一个,所以用max来表示。

贝叶斯公式应用到

中可得到

,又因为朴素贝叶斯分类器默认a1…an他们互相独立,所以

对于结果没有用处。

因为所有的概率都要出同一个东西之后再比较大小,对最后结果没有影响。

可得到

尽管是带着这些朴素思想和过于简单化的假设,但朴素贝叶斯分类器在很多复杂的现实情形中仍能够取得相当好的效果。

2004年,一篇分析贝叶斯分类器问题的文章揭示了朴素贝叶斯分类器取得看上去不可思议的分类效果的若干理论上的原因。

尽管如此,2006年有一篇文章详细比较了各种分类方法,发现更新的方法(如boostedtrees和随机森林)的性能超过了贝叶斯分类器。

朴素贝叶斯分类器的一个优势在于只需要根据少量的训练数据估计出必要的参数(变量的均值和方差)。

由于变量独立假设,只需要估计各个变量的方法,而不需要确定整个协方差矩阵。

4.4性能评估方法

本次实验我使用了准确率(P),召回率(R)和F1-Score来评价分类结果。

下面通过表4.1具体解释一下这三种性能评估方法的计算公式。

表4.1预测结果和实际情况0-1状态图

实际情况1代表真实情况此类,0表示不属于

预测结果

1代表预测属于此类

0代表预测不属于此类

1

0

1

Truepositive

Falsepositive

0

Falsenegative

Truenegative

P=Truepositive/(Truepositive+Falsepositive)

R=Truepositive/(Truepositive+Falsenegative)

F1-Score=(2*P*R)/(P+R)

在此实验中,我通过准确率、召回率和F1-Score这三个性能评估方法对最后的结果进行了详细的分析。

关于结果分析的详细描述见5.6。

5.实验过程

5.1文本分类语料库的采集

本实验的语料库是下载网上现成的英文文本语料库的,该语料库的类别有20类,分别为:

alt.atheism,comp.graphics,comp.os.ms-windows.misc,comp.sys.ibm.pc.hardware,comp.sys.mac.hardware,comp.windows.x,misc.forsale,rec.autos,rec.motorcycles,rec.sport.baseball,rec.sport.hockey,sci.crypt,sci.electronics,sci.med,sci.space,soc.religion.christian,talk.politics.guns,talk.politics.mideast,talk.politics.misc,talk.religion.misc,其中每个分类有九千多文档,整个语料库有1万8千多文件。

现在需要将这1万8千多文件分配成训练集和测试集,为了排除人为因素的干扰,和便于操作的效果,我编写了一个TextClassificationofRandom类来实现将语料库中20个分类都随机均分成训练集和测试集,这样我们就形成了训练集和测试集的数据。

在后期实验过程中,通过多次随机生成训练集和测试集来进行实验,获得更详细精确的数据。

详细步骤和结果见后面分析。

5.2数据预处理

(1)对所有英文文件进行英文词法分析,去除数字、连字符、标点符号、特殊字符,所有大写字母转换成小写字母,实现方法是通过正则表达式:

Stringres[]=line.split("[^a-zA-Z]");

(2)接着去停用词,过滤对分类无价值的词。

结果保存在源文件对应文件.out里面。

(3)第三步是找词根,将词根还原,并分别将每一类的所有文件的单词进行汇总,同时记录每个单词的词频,最终得到源文件对应文件.outstemed里面。

5.3特征提取和表达

首先我先解释一下CHI特征提取公式的意义:

CHI特征提取:

在此公式中,变量的含义如下所示:

N:

所有文档的数目

A:

在该分类下,包含此单词的文档数量

B:

不在该分类下,包含此单词的文档数量

C:

在该分类下,不包含此单词的文档数量

D:

不在该分类下,不包含此单词的文档数量

由于最后,只需要根据CHI的卡方值进行排序,为了简化运算,对公式做了简单的简化处理:

简化后的计算方法为:

,因为在排序的步骤中,N,(A+C),(B+D)都不会对最后的排序造成影响,所以这样的简化处理是合理的。

计算每个单词的CHI值,降序排序后,分别取每一类的排序前2000个单词,经过汇总,去重,得到最终的数据字典,一共是32060个单词。

根据数据字典,将每篇训练集文件和测试集文件转换成特征向量。

结果保存在源文件对应文件.outstemedspecial里面。

 

5.4训练过程

在本次实验中,我做了5组实验,每组实验又分为两个相对应的实验。

因为我借鉴了交叉检验的思想,一开始我将整个数据集随机分成训练集和测试集两份,相当于2折交叉检验,再颠倒过来将训练集作为测试集,测试集作为训练集。

这样整个过程算是一组实验,然后再将整个数据集随机分成训练集和测试集,重复上面步骤,最终进行了5组10次实验,利用这10次的结果的均值来对算法精度作估计。

以求达到更精确的评估。

这里我就简单介绍一次实验的训练过程:

(1)首先,我为了避免对文件的直接操作,可以将训练集文本的路径进行汇总,汇总的方法是通过命令提示符,转到源数据20类文件夹的目录文件下,输入dir/s/b/l*>aaa.lst,回车,这样,源数据20类文件夹下面出现一个aaa.lst文件,用写字板打开文件,将前面几行非源数据文件绝对路径的数据删掉。

最后得到如图5.1的aaa.lst文件。

图5.1aaa.lst部分内容示意图

(2)然后,通过java的文件操作FileReaderfileReader=newFileReader("E:

/DataMiningSample/orginSample/aaa.lst");以及后面等一系列操作,不具体描述,在Eclipse中运行TextClassificationofRandom类后,在E:

\DataMiningSample\docVector目录下,生成两个文件,一个是记录训练数据绝对路径的文件,一个是记录测试数据绝对路径的文件。

(3)将记录训练数据绝对路径的文件的绝对路径,作为TrainMain类的参数,运行来训练样本的特征,首先计算每个类别出现的特征词数,将结果保存在NBTrain工程下的cateWordsNum.txt文件中,保存方式为:

类别+空格+次数。

再计算某单词在某类别中出现的次数,将结果保存在NBTrain工程下的cateWordsProb.txt文件中,保存方式为:

类别_单词+空格+词数。

最后,计算所有类别的总次数,将结果保存在NBTrain工程下的totalWordsNum.txt文件中。

这样我们就得到最后的训练模型。

5.5测试过程

通过上述步骤,我们得到四个文件,即记录测试数据绝对路径的文件,cateWordsNum.txt,cateWordsProb.txt,totalWordsNum.txt,我们将这四个文件的绝对路径作为TestMain类的参数,运行,通过朴素贝叶斯的算法,得到每个文件属于每个类的后验概率,取其中最大值,作为文件最终被分到的类别,并将数据以文件绝对路径+空格+类别的形式输出到NBTest工程下的classifyResultNew11.txt文件中,方便后期的实验数据统计。

5.6实验结果和性能评估

最后实验结果用混淆矩阵来记录,由于我一共做了十次实验,这里就不一一列举,我拿第一次的实验结果来展示一下(后面数据均展示第一次实验结果),完整的实验结果记录在E:

\DataMiningSample\docVector\五组实验数据目录下的分类结果.xlsx文件下。

第一次实验结果的混淆矩阵如图5.2所示。

图5.2朴素贝叶斯分类结果-混淆矩阵表示

上面混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目,每一列中的数值表示真实数据被预测为该类的数目。

其中第一行第一列的370表示有370个实际归属第一类的实例被预测为第一类,同理,第五行第一列的1表示有1个实际归属第一类的实例被错误预测为第五类。

同时本文通过正确率、召回率和F1-Score这三个性能评估方法来评价分类结果。

在十次实验过程中,每次都会得到各20类分别对应的正确率、召回率和F1-Score值,在本文给出第一次实验得出的数据,如表5.1所示。

表5.1第一次实验各20类对应正确率、召回率和F1-Score值

正确率

召回率

F1-Score

第01类

0.8645

0.8981

0.881

第02类

0.5879

0.8531

0.6961

第03类

0.7905

0.7207

0.754

第04类

0.7408

0.726

0.7333

第05类

0.9352

0.6946

0.7971

第06类

0.7672

0.8512

0.8071

第07类

0.9161

0.5197

0.6631

第08类

0.936

0.8671

0.9002

第09类

0.9515

0.9632

0.9573

第10类

0.9849

0.9177

0.9501

第11类

0.9397

0.9777

0.9583

第12类

0.9309

0.9309

0.9309

第13类

0.8397

0.7972

0.8179

第14类

0.8627

0.9292

0.8947

第15类

0.8942

0.947

0.9199

第16类

0.8456

0.947

0.8934

第17类

0.7981

0.9385

0.8626

第18类

0.8324

0.9873

0.9033

第19类

0.8353

0.8838

0.8589

第20类

0.9551

0.512

0.6667

总体

86.04%

84.31%

84.23%

通过上表,可以发现第2类的正确率、第7类的召回率和第20类的召回率均低于60%,和其他实验数据有较大差别,同时第2类,第7类和第20类的F1-Score值都低于70%,这些都值得我们去仔细分析。

为更形象的看出上表的数据特性,通过上表数据建立成3维柱形图,如图5.3所示。

图5.3第一次实验各20类对应评估性能分布图

通过上图可以很明显看出第2类,第7类和第20类的数据有明显差异,评价性能不好。

为更精确的评估该分类器的性能,下面给出10次实验,各20类对应的平均正确率、平均召回率和平均F1-Score,见表5.2.

表5.210次实验各20类对应数据指标

平均正确率

平均召回率

平均F1-Score

第01类

0.8887

0.8867

0.8871

第02类

0.6866

0.7983

0.7303

第03类

0.7596

0.7476

0.7516

第04类

0.7734

0.7235

0.7471

第05类

0.8932

0.7348

0.8042

第06类

0.7757

0.8570

0.8135

第07类

0.9031

0.5552

0.6870

第08类

0.9137

0.8944

0.9038

第09类

0.9590

0.9404

0.9495

第10类

0.9748

0.9262

0.9499

第11类

0.9494

0.9778

0.9633

第12类

0.8777

0.9574

0.9152

第13类

0.8526

0.7870

0.8180

第14类

0.8787

0.9437

0.9099

第15类

0.8609

0.9532

0.9036

第16类

0.8419

0.9478

0.8914

第17类

0.8463

0.9388

0.8896

第18类

0.8577

0.9875

0.9176

第19类

0.8403

0.8797

0.8592

第20类

0.9325

0.5926

0.7227

总体

86.33%

85.15%

85.07%

通过表5.2建立3维柱形图,如图5.4所示。

图5.410次实验各20类对应平均评估性能分布图

通过对比图5.3和图5.4,可以发现经过10次实验,第二类的正确率、召回率和F1-Score的差异有明显改善,然而第7类和第20类任然改变不大,可以基本确定,第7类和第20类的分类结果可能有待进一步分析。

6.实验总结

通过本次试验,我基本掌握了文本分类的整体流程,熟悉了朴素贝叶斯的原理和算法的实现过程,该分类器也具有较好的分类效果,在正确率、召回率和F1-Score的三种性能评估方法下均取得85%以上的效果,但是任有一些地方需要改进。

(1)在数据字典的建立过程中,可以考虑LDA模型,因为一个文本的分类和它的主题有着密切的关系,我们不能忽略这个因素。

(2)每个单词前后的相关性我们也没有考虑,只是完全的考虑成独立的个体,以及文本与文本之间的关联也没有考虑,朴素贝叶斯的基本假定就是给定目标值时属性之间相互条件独立。

实际情况下,这种假定肯定是不成立的。

(3)对一些偏差比较大的结果没有进行合理的解决,在实验结果显示数据存在较为明显的差异时,应该考虑重新对数据进行预处理,进行去噪,过滤等相关处理,或者换一种分类模型看是否是由于分类器导致的结果。

总之,通过本次实验,我收获很多,也发现自己存在很多不足的地方,动手能力还有待加强,查阅资料的能力有待改善,希望在今后的学习过程中,能积极完成老师布置的作业,课下加强动手能力,实践出真知,以优异的成绩回报老师的辛苦栽培。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2