数据挖掘与机器学习-WEKA应用技术与实践(第二版)
上QQ阅读APP看书,第一时间看更新

1.1 Weka简介

Weka是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis)的英文字首缩写,官方网址为http://www.cs.waikato.ac.nz/ml/weka,在该网站可以免费下载可运行软件和源代码,还可以获得说明文档、常见问题解答、数据集和其他文献等资源。Weka的发音类似新西兰本土一种不会飞的鸟,如图1.1所示,因此Weka系统使用该鸟作为其徽标。

图1.1 Weka(或woodhen)鸟来源:Weka_a_tool_for_exploratory_data_mining.ppt,http://ncu.dl.sourceforge.net/project/weka/documentation/Initial%20upload%20and%20presentations/Weka_a_tool_for_exploratory_data_mining.ppt。

Weka是一种使用Java语言编写的数据挖掘机器学习软件,是GNU协议下分发的开源软件。Weka主要用于科研、教育和应用领域,还作为Ian H. Witten、Eibe Frank和Mark A. Hall三人合著的著名书籍Data Mining: Practical Machine Learning Tools and Techniques,Third Edition中译版书名为“数据挖掘:实用机器学习工具与技术(原书第3版)”,于2014年5月由机械工业出版社出版。的实践方面的重要补充,该书于2011年由Elsevier出版。

Weka是一套完整的数据处理工具、学习算法和评价方法,包含数据可视化的图形用户界面,同时该环境还可以比较和评估不同的学习算法的性能。

国内外很多著名大学都采用Weka作为数据挖掘和机器学习课程的实践工具。Weka还有另外一个名字叫作Pentaho Data Mining Community Edition(Pentaho数据挖掘社区版),此外,Pentaho的网站(http://weka.pentaho.com/)还维护一个被称为Pentaho Data Mining Enterprise Edition(Pentaho数据挖掘企业版)的版本,它主要提供技术支持和管理升级。另一个用Java编写的著名数据挖掘工具RapidMiner通过Weka Extension(Weka扩展)支持Weka,以充分利用Weka的“约100个额外的建模方案,其中包括额外的决策树、规则学习器和回归估计器”,参见网址https://marketplace.rapidminer.com/UpdateServer/faces/product_details.xhtml?productId=rmx_weka

有很多软件项目直接或间接使用Weka,包括能够处理ARFF格式的数据,或者从其他编程环境中访问Weka的功能,具体可参见网址http://www.cs.waikato.ac.nz/ml/weka/related.html和WekaWiki(http://weka.wikispaces.com/Related+Projects)。另外,Weka还提供统计编程语言R以及Python的接口,以及对分布式计算框架Hadoop、Spark的支持,这使得Weka更具实用价值。

1.1.1 Weka历史

怀卡托机器学习团队宣称:我们团队的总体目标是要建立最先进的软件开发机器学习技术,并将其应用于解决现实世界的数据挖掘问题。团队具体目标是:使机器学习技术容易获得,并将其应用到解决新西兰工业的重大实际问题中,开发新的机器学习算法并推向世界,为该领域的理论框架做出贡献。

1992年年末,新西兰怀卡托大学计算机科学系的Ian H. Witten博士申请基金,1993年获新西兰政府资助,并于同年开发出接口和基础架构。次年发布了第一个Weka的内部版本。两年后,在1996年10月,第一个公开版本(Weka 2.1)发布。Weka早期版本主要采用C语言编写,1997年年初,团队决定使用Java重新改写,并在1999年中期发布纯Java的Weka 3版本。选定Java来实现Ian H. Witten著作Data Mining的配套机器学习技术是有充分理由的,作为一个著名的面向对象的编程语言,Java允许用一个统一的接口来进行学习方案和方法的预处理和后处理。决定使用Java来替代C++或其他面向对象的语言,是因为Java编写的程序可以运行在绝大部分计算机上,而无须重新编译,更不需要修改源代码。已经测试过的平台包括Linux、Windows和Macintosh操作系统,甚至包括PDA。最后的可执行程序复制过来即可运行,完全绿色,不要求复杂安装。当然,Java也有其缺点,最大的问题是它在速度上有缺陷,执行一个Java程序比对应的C语言程序要慢上好几倍。综合来看,对于Weka来说,Java“一次编译,到处运行”的吸引力远远超出对性能的渴望。

截止到2016年2月,Weka最新的版本是3.7.13,这是2015年9月11日发布的稳定版,本书第二版基于该版本。

1.1.2 Weka功能简介

Weka系统汇集了最前沿的机器学习算法和数据预处理工具,以便用户能够快速灵活地将已有的成熟处理方法应用于新的数据集。它为数据挖掘的整个过程提供全面的支持,包括准备输入数据、统计评估学习方案、输入数据和学习效果的可视化。Weka除了提供大量学习算法(学习方案)之外,还提供了适应范围很广的预处理工具,用户通过一个统一界面操作各种组件,比较不同的学习算法,找出能够解决问题的最有效的方法。

Weka系统包括处理标准数据挖掘问题的所有方法:回归、分类、聚类、关联规则以及属性选择。分析要进行处理的数据是重要的一个环节,Weka提供了很多用于数据可视化和预处理的工具。输入数据可以有两种形式,第一种是通过以ARFF格式为代表的文件进行输入,另一种是直接读取数据库表。

使用Weka的方式主要有三种:第一种是将学习方案应用于某个数据集,然后分析其输出,从而更多地了解这些数据;第二种是使用已经学习到的模型对新实例进行预测;第三种是使用多种学习方案,然后根据其性能表现选择其中的一种来进行预测。用户使用交互式界面菜单选择一种学习方案,大部分学习方案都带有可调节的参数,用户可通过属性列表或对象编辑器修改参数,然后通过同一个评估模块对学习方案的性能进行评估。

Weka主界面被称为Weka GUI选择器(Weka GUI Chooser),它通过右边的四个按钮提供四种主要的应用程序供用户选择,如图1.2所示,单击按钮即可进入相应的图形用户界面。

图1.2 Weka主界面

其中,Weka系统提供的最容易使用的图形用户界面称为探索者(Explorer)。通过选择菜单和填写表单,可以调用Weka的所有功能。例如,用户仅仅单击几个按钮,就可以完成从ARFF文件中读取数据集,然后建立决策树模型的工作。Weka界面十分友好,能适时地将不宜用的功能选项设置为不可用状态;将用户选项设计为表格方式以方便填写;当鼠标移动到界面工具上短暂停留时,会给出用法提示;对算法都给出较为合理的默认值,使得用户在进行配置时无须花费太多精力就可取得较好的效果等。

虽然探索者界面使用很方便,但它存在一个缺陷,即要求将所需数据全部一次读进内存,一旦用户打开某个数据集,就会批量读取全部数据。因此,这种批量方式仅适合处理中小规模的问题。而知识流界面刚好能够弥补这一缺陷。

知识流(KnowledgeFlow)界面可以使用增量(分批)方式的算法来处理大型数据集,用户可以定制处理数据流的方式和顺序。知识流界面允许用户在屏幕上任意拖曳代表学习算法和数据源的图形组件,并以一定的方式和顺序组合在一起。也就是说,按照一定顺序将代表数据源、预处理工具、学习算法、评估手段和可视化模块的各组件组合在一起,形成数据流。如果用户选取的过滤器和学习算法具有增量学习功能,那就可以实现大型数据集的增量分批读取和处理。

实验者(Experimenter)界面用于帮助用户解答实际应用分类和回归技术中遇到的一个基本问题:对于一个已知问题,哪种方法及参数值能够取得最佳效果?通过Weka提供的实验者工作环境,用户可以比较不同的学习方案。尽管探索者界面也能通过交互完成这样的功能,但通过实验者界面,用户可以让处理过程实现自动化。实验者界面更加容易使用不同参数去设置分类器和过滤器,使之运行在一组数据集中,收集性能统计数据,实现重要的测试实验。

简单命令行(Simple CLI)界面是为不提供自己的命令行界面的操作系统提供的,该界面用于和用户进行交互,可以直接执行Weka命令。