数据挖掘软件分析报告摘要随着数据挖掘技术被人们广泛重视和应用,刺激了数据挖掘软件业的蓬勃发展。
现在流行的几种开源数据挖掘平台主要有:R、Tanagra、Weka、YALE、Orange、KNIME、GGobi。
这些开源数据挖掘平台有什么优缺点,如何根据我们的需要选择合适的数据挖掘软件进行数据挖掘。
本文在实验的基础上对Weka和KNIME进行了比较和分析。
关键词:数据挖掘工具、Weka、KNIME1.Weka1.1 简介Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数据挖掘产品——Clementine)的,基于JAVA环境下开源的机器学习,以及数据挖掘软件。
WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类、回归、聚类关联规则以及在新的交互式界面上的可视化。
而开发者则可使用java语言,在Weka的架构上开发出更多的数据挖掘算法。
Weka可能是名气最大的开源机器学习和数据挖掘软件。
高级用户可以通过java编程和命令行来调用其分析组件。
同时Weka也为普通用户提供了图形化界面,称为WekaKnowledgeFlow Environment和Weka Explorer。
在Weka论坛可以找到很多扩展包,比如文本挖掘,可视化,网络计算等等。
很多其它开源数据挖掘软件也支持调用Weka的分析功能。
1.2Weka数据格式WEKA存储数据的格式是ARFF(Attribute-Relation FileFormat)文件,这是一种ASCII文本文件。
表格里的一个横行称作一个实例(Instance),相当于统计学中的一个样本,或者数据库中的一条记录。
竖行称作一个属性(Attribute),相当于统计学中的一个变量,或者数据库中的一个字段。
这样一个表格或者叫作数据集,在WEKA看来,呈现了属性之间的一种关系(Relation)。
整个ARFF文件可以分为两个部分。
第一部分是头信息,包括对关系的声明和对属性的声明;第二部分是数据信息。
我们打开Weka的自带数据cpu.arff。
可以看到如下所示结果。
图中红色的框内是该数据的头信息,可以看出该关系名称为cpu,粉红色的框中是数据信息,从图中我们可以看出该数据共有七个属性。
Weka支持四种数据类型:Numeric(数值型)、<nominal-specification>(标称型)、String(字符串型)、date [<date-format>](日期和时间型)。
1.3Weka用户交互界面运行Weka之后可以看到Weka的主界面如下图所示。
Weka主要由Explorer、Experimenter、KnowledgeFlow、SimpleCTL四个模块组成。
Explorer使用Weka探索数据的环境,包括获取关联项,分类预测,聚类簇等。
Experimenter运行算法实验、管理算法方案之间的统计检验的环境。
KnowledgeFlow这个环境本质上和Explorer所支持的功能是一样的,但是它有一个可以拖放的界面,它所具有的一个优势就是支持增量学习。
Simple CTL提供了一个简单的命令行界面,从而可以在没有自带命令行的操作系统中直接执行Weka命令。
本文主要分析Explorer模块。
该模块主要可以完成如下工作:包括数据预处理(Preprocess);训练和测试关于分类或回归的学习方案(Classify);从数据中学习聚类(Cluster);从数据中学习关联规则(Associate);选择数据中相关属性(Associate);查看数据的交互式二维图像(Visualize)。
我们打开Weka中的weather.nominal.arff数据集之后的结果。
根据不同的功能,该界面可以分为8个区域:区域1的几个选项卡是用来切换不同的挖掘任务面板。
区域2在区域3中“Choose”某个“Filter行某种变换。
数据预处理主要就利用它来实现。
区域4展示了数据集的一些基本情况。
区域5中列出了数据集的所有属性。
勾选一些属性并“Remove”就可以删除它们,删除后还可以利用区域2的“Undo”按钮找回。
区域5上方的一排按钮用来实现快速勾选,在区域56中不一样的。
区域7是区域5中选中属性的直方图。
若数据集的某个属性是目标变量直方图中的每个长方形就会按照该变量的比例分成不同颜色的段。
默认地分类或回归任务的默认目标变量是数据集的最后一个属性(这里的“play”正好是)。
要想换个分段的依据,即目标变量,在区域7上方的下拉框中选个不同的分类属性就可以了。
下拉框里选上“No Class”或者一个数值属性会变成黑白的直方图。
区域8是状态栏,可以查看Log以判断是否有错。
右边的weka鸟在动的话说明WEKA正在执行挖掘任务。
右键点击状态栏还可以执行JAVA内存的垃圾回收。
1.4分类实验该部分采用Weka中的iris.arff数据集进行分类实验。
Weka中的分类算法主要有Bayes: 贝叶斯分类器、BayesNet: 贝叶斯信念网络、NaiveBayes: 朴素贝叶斯网络、Functions: 人工神经网络和支持向量机、MultilayerPerceptron: 多层前馈人工神经网络、SMO:Lazy: 基于实例的分类器、IB1: 1-最近邻分类器、IBk: k-最近邻分类器、Meta: 组合方法、AdaBoostM1: AdaBoost M1方法、Bagging: 袋装方法、Rules: 基于规则的分类器、JRip: Ripper算法、Part: 间J48C4.5Trees: 决策树分类器、Id3: ID3决策树学习算法不支持连续属性、J48: C4.5决策树学习算法、RandomForestt: 基斯网络、决策树等。
首先在Weka的Explorer中打开iris.arff文件。
结果如下图所示:然后选择分类(Classify)数据挖掘任务,并选择分类算法,在这里我们选择决策树算法trees->J48选择完成后结果如下所示:选择检验方法,这里我们选择Percentage split算法,选择完成后执行分类算法,建立决策树模型,查看算法输出信息,其结果如下图所示:1.5Experimenter模块实验该模块可以创建,运行,修改和分析算法试验,这比单独的分析各个算法更加方便。
例如,用户可创建一次试验,在一系列数据集上运行多个算法,然后分析结果以判断是否某个算法比其他算法更好。
下面以数据集labor.arff为例进行实验。
首先进行实验的设置,其结果如下。
从上图我们可以看到该实验设置的数据集为labor.arff,实验迭代次数为10,然后运行的算法是贝叶斯分类算法和决策树分类算法。
设置完成后切换到Run 界面进行运行,运行完成后结果如图所示:上图中我们可以看到运行完成后输出一些信息,运行结果保存在内存中。
此时切换到分析界面(分析界面可以分析各种算法的准确性,并对结果进行检验比较)查看两种算法的对比结果。
如下图所示:1.6聚类实验我们以Weka中自带的iris.arff数据集为例采用k-means聚类算法对该数据集进行聚类,首先我们用Weka打开irss.arff数据集,其结果如下:从图中我们可以看出该数据集的关系名为irss,共有5个属性,下面我们对该数据集进行聚类分析,首先切换到Cluster界面并选择聚类算法为k-means,然后对k-means聚类算法进行参数设置,在这里我们将其设置为2个聚类,相似度测度函数为欧式距离,其设置结果如下图所示:上述设置完成后点击Start按钮开始运行,运行的结果如下所示:从运行的结果我们可以看出,该数据集共有150个实例,共分为2个聚类,迭代次数为7,误差平方和约为62.1436,其中聚类0中有100个元素,聚类1中有50个元素。
我们还可以采用Weka的可视化工具查看聚类分布结果,首先在ResultList中选中聚类结果,然后用数鼠标点击右键选择Visualize cluster assignment,结果如下图所示:上图的可视化结果中看到蓝色的代表聚类0,红色的代表聚类1。
如果调整相关参数(比如Jitter),聚类分布的图也会相应的发生改变。
1.7关联规则实验我们用Weka中自带的supermarket.arff数据集进行关联规则实验,首先打开该数据集,然后选择Apriori关联规则算法,并进行相关参数设置,其设置结果如下:我们首先介绍一下上面各个参数的含义:car:该参数如果设置为真,则会挖掘类关联规则吗,而不是全局关联规则。
classindex:类属性索引,如果设置为-1,最后属性被当作类属性。
delta:以此数值为迭代递减单位。
不断减小支持度直至达到最小支持度或产生了满足数量要求的规则。
lowBoundMinSupport:最小支持度下界。
metricType:度量类型。
设置对规则进行排序的度量依据。
可以是:置信度(类关联规则只能用置信度挖掘),提升度(lift),杠杆率(leverage),确信度(conviction).minMtric:度量的最小值。
numRules:要发现的最优的规则数。
outputItemSets:如果设置为真,会在结果中输出项集。
removeAllMissCols:移除全部为缺省值的列。
significancelevel:重要程度。
重要性测试(仅用于置信度)upperBoundMinSupport:最小支持度上界。
从这个值开始迭代减小最小支持度。
verbose:如果设置为真,则算法会以冗余模式运行。
设置好参数后我们点击start按钮开始运行运行结果如下图所示:从上图的实验结果我们可以看出采用Apriori关联规则算法在supermarket.arff数据集上进行关联规则挖掘时,共生成了6个频繁项集和3条最佳关联规则。
2.KNIME2.1 KNIME简介Knime是基于Eclipse的开源数据挖掘软件,它通过工作流的方式来完成数据仓库以及数据挖掘中数据的抽取-转换-加载(Extract-Transform-Load)操作。
其中工作流又是由各个功能便利的结点来完成,节点之间相互独立,可以单独执行并将执行后的数据传给下一个结点。
KNIME中每个节点都带有交通信号灯,用于指示该节点的状态(未连接、未配置、缺乏输入数据时为红灯;准备执行为黄灯;执行完毕后为绿灯)。
在KNIME中有个特色功能——HiLite,允许用户在节点结果中标记感兴趣的记录,并进一步展开后续探索。
2.2 KNIME图形用户界面KNIME打开后的主界面如下图所示:将左下角Node Repository区域的结点以此拖入中间的Worflow Editor形成工作流:结点的状态:结点上有三盏灯,就像红黄绿交通灯一样。